-- file    : Ck456Tli.exw

-- purpose : TileInfo resource editor for Keens 4,5,6

-- version : 3.2

-- author  : The CK Guy

-- email   : theckguy@gmail.com

-- webpage : theckguy.wikispaces.com

-- date    : 5/06/07

-- license : FREEWARE. Anyone may distribute original Ck456Tli(v3.2).zip

--           This source code is provided for educational purposes only.

--           Ask *FIRST* before distributing *ANYTHING* derived from it.



-------------------------------

-- SO WE CAN TALK TO WINDOWS --

-------------------------------


include win32lib.ew



-------------------------

-- IGNORE ALL WARNINGS --

-------------------------


without warning



---------------------------------

-- THE KNOWN VALUES OF TopFlag --

---------------------------------


constant


----------------------------------

-- THE KNOWN VALUES OF MiscFlag --

----------------------------------


------------------------------------

-- THE KNOWN VALUES OF BottomFlag --

------------------------------------


--------------------------------------------

-- SOME TEXT USED BY THE CLIPBOARD VIEWER --

--------------------------------------------


-----------------------------------

-- VARIABLES RELATED TO THE FILE --

-----------------------------------


sequence filename, myDir

integer epis, modified, grabbing



---------------------------------------

-- VARIABLES RELATED TO THE TILEINFO --

---------------------------------------


integer bgTiles, fgTiles, bgTile, fgTile, tile -- total number/currently selected

sequence bgData, fgData -- sequences containg all the tileinfo

sequence topFlagVals, miscFlagVals, bottomFlagVals -- known dropdown values

integer bgAnim, fgAnim -- offsets to next tile in animation sequence



-----------------------------------------

-- VARIABLES RELATED TO THE CLIPBOARDS --

-----------------------------------------

sequence cTime, cAnim, cTop, cRight, cBottom, cLeft, cMisc, cFront



---------------------------------------------

-- VARIABLES RELATED TO THE TILE SELECTION --

---------------------------------------------


integer bgPy, fgPy -- image heights

integer bgOy, fgOy -- vertical offset to top of displayed portion

integer offY -- offset for control-click dragging on tile selection panel

atom bgPic, fgPic -- handles might not fit in a signed 32-bit integer

offY = 0


-- location of tile selection panels on window

constant bgCx = 5, bgCy = 210, fgCx = 5, fgCy = 210



------------------------------------------

-- THE HIGHLY-ABUSED TEMPORARY VARIABLE --

------------------------------------------


object t



-------------------------------------------------------

-- EXTRACTS THE FLAG VALUES FROM THE CONSTANTS ABOVE --

-------------------------------------------------------


function initFlags(sequence in, atom id)

end function



-------------------------------------------

-- CONTROL DEFINITIONS : THE MAIN WINDOW --

-------------------------------------------


constant


-----------------------------------------------------

-- CONTROL DEFINITIONS : THE "TileInfo File" GROUP --

-----------------------------------------------------


--------------------------------------------------------

-- CONTROL DEFINITIONS : THE "Background Tiles" GROUP --

--------------------------------------------------------


--------------------------------------------------------

-- CONTROL DEFINITIONS : THE "Foreground Tiles" GROUP --

--------------------------------------------------------


------------------------------------------------------------

-- CONTROL DEFINITIONS : THE "About Ck456Tli v3.2" WINDOW --

------------------------------------------------------------


---------------------------------------------------------

-- CONTROL DEFINITIONS : TEMPORARY OFF-SCREEN BITMAPS --

--------------------------------------------------------


-------------------------------------------------------------------------------------

-- FINDS THE FLAG VALUE IN THE LIST WE CREATED, AND SETS THE DROPDOWN MENU TO IT   --

-- IF THE FLAG IS UNKNOWN, APPEND IT TO THE END OF THE LIST (SAFE FOR WEIRD FILES) --

-------------------------------------------------------------------------------------


function setDropdownIndex(integer val, sequence vals, integer control)

end function



-------------------------------------------

-- TAKE THE FLAG VALUES FROM THE CURRENT --

-- BACKGROUND TILE, AND SET THE CONTROLS --

-------------------------------------------


procedure bgGrabTile()

end procedure



---------------------------------------------------------

-- TAKE THE CURRENT SETTINGS OF THE CONTROLS, AND PUT  --

-- THEM INTO THE FLAGS FOR THE CURRENT BACKGROUND TILE --

---------------------------------------------------------


procedure bgStoreTile()

end procedure



-------------------------------------------

-- TAKE THE FLAG VALUES FROM THE CURRENT --

-- FOREGROUND TILE, AND SET THE CONTROLS --

-------------------------------------------


procedure fgGrabTile()

end procedure



---------------------------------------------------------

-- TAKE THE CURRENT SETTINGS OF THE CONTROLS, AND PUT  --

-- THEM INTO THE FLAGS FOR THE CURRENT FOREGROUND TILE --

---------------------------------------------------------


procedure fgStoreTile()

end procedure



-------------------------------

-- SPECIFY THE SCROLL RANGES --

-------------------------------


setScrollRange(bgTimeSel, 0, 255)

setScrollRange(fgTimeSel, 0, 255)



--------------------

-- SET SOME FONTS --

--------------------


setFont(bgTileLbl, "times new roman", 14, Underline)

setFont(fgTileLbl, "times new roman", 14, Underline)

setFont(km1lbl, "courier new", 50, Normal)



-------------------------------------------

-- INITIALIZING THE MODIFICATION-CHECKER --

-------------------------------------------


modified = 0 -- we start off unmodified

grabbing = 0 -- not grabbing properties now



---------------------------------

-- INITIALIZING THE CLIPBOARDS --

---------------------------------


cTime = repeat(0, 4)

cAnim = repeat(0, 4)

cTop = repeat(1, 4)

cRight = repeat(0, 4)

cBottom = repeat(1, 4)

cLeft = repeat(0, 4)

cMisc = repeat(1, 4)

cFront = repeat(0, 4)



-----------------------------------------------------------

-- SAVE THE TILEINFO INTO THE FILE SPECIFIED IN filename --

-----------------------------------------------------------


procedure saveTli()

end procedure



------------------------------------------------------

-- REPAINT ONE CONTROL OF A WINDOW WITHOUT CLEARING --

------------------------------------------------------


procedure repaintHereFG(integer id)

   atom hWnd, rect

   hWnd = getHandle(findParent(id))

   rect = w32acquire_mem(0, SIZEOF_RECT)

   poke4(rect, getRect(id))

   VOID = w32Func(xInvalidateRect, {hWnd, rect, 0})

   w32release_mem(rect)

   VOID = w32Func(xSendMessage, {hWnd, WM_PAINT, 0, 0})

end procedure



-----------------------------------------

-- LOAD A BITMAP AND RETURN ITS HANDLE --

-----------------------------------------


function loadBmp(sequence fName)

end function



-------------------------------

-- GENERATE BACKGROUND IMAGE --

-------------------------------


procedure bgGen()

end procedure



-------------------------------

-- GENERATE FOREGROUND IMAGE --

-------------------------------


procedure fgGen()

end procedure



-----------------------------------------

-- HANDLER FOR LOADING THE MAIN WINDOW --

-----------------------------------------


procedure mainLoad(integer s, integer e, sequence p)

end procedure

setHandler(main, w32HOpen, routine_id("mainLoad"))



-------------------------------------------

-- HANDLER FOR PUSHING THE "Save" BUTTON --

-------------------------------------------


procedure saveBtnPush(integer s, integer e, sequence p)

end procedure

setHandler(saveBtn, w32HClick, routine_id("saveBtnPush"))



----------------------------------------------

-- HANDLER FOR PUSHING THE "Save As" BUTTON --

----------------------------------------------


procedure saveAsBtnPush(integer s, integer e, sequence p)

end procedure

setHandler(saveAsBtn, w32HClick, routine_id("saveAsBtnPush"))



--------------------------------------------

-- HANDLER FOR PUSHING THE "About" BUTTON --

--------------------------------------------


procedure aboutBtnPush(integer s, integer e, sequence p)

end procedure

setHandler(aboutBtn, w32HClick, routine_id("aboutBtnPush"))



-------------------------------------------

-- HANDLER FOR PUSHING THE "Help" BUTTON --

-------------------------------------------


procedure helpBtnPush(integer s, integer e, sequence p)

end procedure

setHandler(helpBtn, w32HClick, routine_id("helpBtnPush"))



----------------------------------------------

-- HANDLER FOR CHANGING AN EDITING CONTROL --

----------------------------------------------


procedure anyEdit(integer s, integer e, sequence p)

end procedure

setHandler({topFlagSel, miscFlagSel, bottomFlagSel}, w32HChange, routine_id("anyEdit"))

setHandler({leftFlagSel, rightFlagSel, inFrontSel}, w32HGotFocus, routine_id("anyEdit"))

setHandler({bgTimeSel, fgTimeSel}, w32HScroll, routine_id("anyEdit"))



-------------------------------------------------

-- HANDLER FOR ATTEMPTING TO CLOSE THE PROGRAM --

-------------------------------------------------


procedure mainClose(integer s, integer e, sequence p)

end procedure

setHandler(main, w32HClose, routine_id("mainClose"))



------------------------------------------

-- HANDLER FOR PAINTING THE MAIN WINDOW --

------------------------------------------


procedure mainPaint(integer s, integer e, sequence p)

end procedure

setHandler(main, w32HPaint, routine_id("mainPaint"))



------------------------------------------------------

-- HANDLER FOR CLICKING/WHEELING IN THE MAIN WINDOW --

------------------------------------------------------


procedure mainMouse(integer s, integer e, sequence p)

end procedure

setHandler(main, w32HMouse, routine_id("mainMouse"))



-------------------------------------------------------------------

-- HANDLER FOR SCROLLING THE BACKGROUND ANIMATION TIMING CONTROL --

-------------------------------------------------------------------


procedure bgTimeScroll(integer s, integer e, sequence p)

end procedure

setHandler(bgTimeSel, w32HScroll, routine_id("bgTimeScroll"))



-------------------------------------------------------------------

-- HANDLER FOR SCROLLING THE FOREGROUND ANIMATION TIMING CONTROL --

-------------------------------------------------------------------


procedure fgTimeScroll(integer s, integer e, sequence p)

end procedure

setHandler(fgTimeSel, w32HScroll, routine_id("fgTimeScroll"))



---------------------------

-- HANDLE ESCAPE COMMAND --

---------------------------


procedure doEscape(integer fb)

end procedure



-------------------------

-- HANDLE COPY COMMAND --

-------------------------


procedure doCopy(integer fb, integer n)

end procedure



--------------------------

-- HANDLE PASTE COMMAND --

--------------------------


procedure doPaste(integer fb, integer n)

end procedure



-------------------------

-- HANDLE VIEW COMMAND --

-------------------------


procedure doView(integer n)

end procedure



--------------------------------

-- HANDLER FOR ALL KEYPRESSES --

--------------------------------


procedure anyKey(integer s, integer e, sequence p)

end procedure

setHandler(Screen, w32HKeyDown, routine_id("anyKey"))



-------------------------------

-- GET OUR INITIAL DIRECTORY --

-------------------------------


t = command_line()

for i = length(t[2]) to 1 by -1 do

end for



--------------------------

-- START UP THE PROGRAM --

--------------------------


WinMain(main, Normal)