Define Properties() controlUI = { startx = 4, starty = 26, width = 34, heightSmall = 26, heightBig = 34, paddingx = 3, paddingy = 3, cols = 8, rows = 2, normal32 = '12071:448', hover32 = '0:713', press32 = '0:715', normal24 = '12071:448', hover24 = '0:714', press24 = '0:716', normal62 = '12071:448', hover62 = '0:712', press62 = '0:711'} controlWindow = { x = 100, y = 346 } unitButton = 0 controlButtons = { l_hand = 0, r_hand = 0, belt_1 = 0, belt_2 = 0, belt_3 = 0, belt_4 = 0 } hpRect = 0 epRect = 0 apRect = 0 controlPanel = 0 -- script information script_description = 'Player UI' script_long_description = 'Player UI Controls Units' end Trigger setupUI(user) Debug("UI Selected: %d me: %d", user.selected_object_id, self.id) createControlPanel(user) Debug("UI2 Selected: %d me: %d", user.selected_object_id, self.id) end Trigger killUI() dismissControlPanel(self) end function dismissControlPanel(user) if (user.controlPanel ~= 0) then UiDelete(user.controlPanel) user.controlPanel = 0 end end function createControlPanel(user) Debug("Create Control Panel") -- some local vars for handling creation of the UI local param = user.controlUI local rect = 0 -- be sure the unit UI doesn't already exist if (user.controlPanel ~= 0) then UiDelete(user.controlPanel) user.controlPanel = 0 end -- create the unit UI -- Create a window to hold the unit controls -- currently using default window style user.controlPanel = UiWindow(0, "unitTestWindow", user.controlWindow.x, user.controlWindow.y, param.startx + (param.cols * (param.width + param.paddingx)) + param.paddingx, param.starty + param.heightBig + param.paddingy + param.heightSmall + param.paddingy + param.paddingy, '13197:3') -- allow users to drag the window UiCapability(user.controlPanel, "drag") -- create the interior of the panel -- create the unit image local unitObject = GetObjectById(user.selected_object_id) Debug("Got Unit: %d", unitObject.id) Debug("** Draw Unit Panel") drawUnitPanel(user, unitObject) Debug("** Draw Command Panel") -- create two rows of 4 button outlines -- first row: 48x24 drawCommandPanel(user) -- second row: 48x48 Debug("** Draw Unit Inventory Panel") drawInventoryAccessPanel(user, unitObject) -- end turn drawFrame(user.controlPanel, user.controlUI.startx + (7 * (user.controlUI.width + user.controlUI.paddingx)), user.controlUI.starty, user.controlUI.width, user.controlUI.heightBig) UiImage(user.controlPanel, "endTurn", user.controlUI.startx + (7 * (user.controlUI.width + user.controlUI.paddingx))+1, user.controlUI.starty+1, user.controlUI.width-2, user.controlUI.heightBig-2, '12071:430') UiImageButton(user.controlPanel, "unitButton", user.controlUI.startx + (7 * (user.controlUI.width + user.controlUI.paddingx))+1, user.controlUI.starty+1, user.controlUI.width-2, user.controlUI.heightBig-2, user.controlUI.normal32, user.controlUI.hover32, user.controlUI.press32, 'endTurn ') -- quit mission drawFrame(user.controlPanel, user.controlUI.startx + (7 * (user.controlUI.width + user.controlUI.paddingx)), user.controlUI.starty + user.controlUI.width + user.controlUI.paddingy, user.controlUI.width, user.controlUI.heightSmall) UiImage(user.controlPanel, "quit", user.controlUI.startx + (7 * (user.controlUI.width + user.controlUI.paddingx))+1, user.controlUI.starty + user.controlUI.heightBig+user.controlUI.paddingy+1, user.controlUI.width-2, user.controlUI.heightSmall-2, '0:706') UiImageButton(user.controlPanel, "quit", user.controlUI.startx + (7 * (user.controlUI.width + user.controlUI.paddingx))+1, user.controlUI.starty + user.controlUI.heightBig+user.controlUI.paddingy+1, user.controlUI.width-2, user.controlUI.heightSmall-2, user.controlUI.normal24, user.controlUI.hover24, user.controlUI.press24, 'quit') Debug("Attach!") UiAttachUser(user,user.controlPanel) end function drawUnitPanel(user, unit) local rect = 0 Debug("Drawing Unit Panel") -- unit image drawFrame(user.controlPanel, user.controlUI.startx, user.controlUI.starty, user.controlUI.width, user.controlUI.heightBig) user.unitButton = UiImage(user.controlPanel, "unitButton", user.controlUI.startx+1, user.controlUI.starty+1, user.controlUI.width-2, user.controlUI.heightBig-2, unit.spriteId) UiImageButton(user.controlPanel, "unitButton", user.controlUI.startx+1, user.controlUI.starty+1, user.controlUI.width-2, user.controlUI.heightBig-2, user.controlUI.normal32, user.controlUI.hover32, user.controlUI.press32, 'selectUnit ' .. unit.id) -- background rect rect = UiRect(user.controlPanel, "rect", user.controlUI.startx, user.controlUI.starty + user.controlUI.heightBig + user.controlUI.paddingx, user.controlUI.width, 12) UiColor(rect, 0, 0, 0, 1) Debug("Health") -- health user.hpRect = UiRect(user.controlPanel, "HP", user.controlUI.startx+1, user.controlUI.starty + user.controlUI.heightBig + user.controlUI.paddingx + 1, user.controlUI.width-2, 2) Debug("Health Color") UiColor(user.hpRect, 255, 0, 0, 1) Debug("Health Size") UiSize(user.hpRect, math.floor((unit.curHealth/(unit.maxHealth))*user.controlUI.width-2), 2) Debug("Energy") -- energy user.epRect = UiRect(user.controlPanel, "EP", user.controlUI.startx+1, user.controlUI.starty + user.controlUI.heightBig + user.controlUI.paddingx + 5, user.controlUI.width-2, 2) UiColor(user.epRect, 0, 0, 255, 1) UiSize(user.epRect, math.floor((unit.curEnergy/(unit.maxEnergy+5))*user.controlUI.width-2), 2) Debug("Action") -- AP user.apRect = UiRect(user.controlPanel, "AP", user.controlUI.startx+1, user.controlUI.starty + user.controlUI.heightBig + user.controlUI.paddingx+9, user.controlUI.width-2, 2) UiColor(user.apRect, 0, 255, 0, 1) UiSize(user.apRect, math.floor((unit.curActionPoints/(unit.maxActionPoints))*user.controlUI.width-2), 2) Debug("Unit Panel done") end function drawCommandPanel(user) -- command panel Debug("Hold") drawFrame(user.controlPanel, user.controlUI.startx+(2*(user.controlUI.width+user.controlUI.paddingx)), user.controlUI.starty, user.controlUI.width, user.controlUI.heightSmall) UiImage(user.controlPanel, "image", user.controlUI.startx+(2*(user.controlUI.width+user.controlUI.paddingx))+1, user.controlUI.starty+1, user.controlUI.width-2, user.controlUI.heightSmall-2, '0:702') UiImageButton(user.controlPanel, "holdButton", user.controlUI.startx+(2*(user.controlUI.width+user.controlUI.paddingx))+1, user.controlUI.starty+1, user.controlUI.width-2, 24, user.controlUI.normal24, user.controlUI.hover24, user.controlUI.press24, "holdUnit") Debug("Next") drawFrame(user.controlPanel, user.controlUI.startx+(3*(user.controlUI.width+user.controlUI.paddingx)), user.controlUI.starty, user.controlUI.width, user.controlUI.heightSmall) UiImage(user.controlPanel, "image", user.controlUI.startx+(3*(user.controlUI.width+user.controlUI.paddingx))+1, user.controlUI.starty+1, user.controlUI.width-2, user.controlUI.heightSmall-2, '0:704') UiImageButton(user.controlPanel, "nextButton", user.controlUI.startx+(3*(user.controlUI.width+user.controlUI.paddingx))+1, user.controlUI.starty+1, user.controlUI.width-2, 24, user.controlUI.normal24, user.controlUI.hover24, user.controlUI.press24, "nextUnit") Debug("Inv") drawFrame(user.controlPanel, user.controlUI.startx+(4*(user.controlUI.width+user.controlUI.paddingx)), user.controlUI.starty, user.controlUI.width, user.controlUI.heightSmall) UiImage(user.controlPanel, "image", user.controlUI.startx+(4*(user.controlUI.width+user.controlUI.paddingx))+1, user.controlUI.starty+1, user.controlUI.width-2, user.controlUI.heightSmall-2, '0:703') UiImageButton(user.controlPanel, "invButton", user.controlUI.startx+(4*(user.controlUI.width+user.controlUI.paddingx))+1, user.controlUI.starty+1, user.controlUI.width-2, 24, user.controlUI.normal24, user.controlUI.hover24, user.controlUI.press24, "showUnitInventory 1") Debug("Stats") drawFrame(user.controlPanel, user.controlUI.startx+(5*(user.controlUI.width+user.controlUI.paddingx)), user.controlUI.starty, user.controlUI.width, user.controlUI.heightSmall) UiImage(user.controlPanel, "image", user.controlUI.startx+(5*(user.controlUI.width+user.controlUI.paddingx))+1, user.controlUI.starty+1, user.controlUI.width-2, user.controlUI.heightSmall-2, '0:705') UiImageButton(user.controlPanel, "statsButton", user.controlUI.startx+(5*(user.controlUI.width+user.controlUI.paddingx))+1, user.controlUI.starty+1, user.controlUI.width-2, 24, user.controlUI.normal24, user.controlUI.hover24, user.controlUI.press24, "showUnitStatus") end function drawInventoryAccessPanel(user, unit) -- belt panel Debug("Belt1") drawInventoryButton(user, user.controlPanel, unit, "belt_1", user.controlUI.startx + (2 * (user.controlUI.width + user.controlUI.paddingx)), user.controlUI.starty + user.controlUI.heightSmall + user.controlUI.paddingy, user.controlUI.width, user.controlUI.heightBig) Debug("Belt2") drawInventoryButton(user, user.controlPanel, unit, "belt_2", user.controlUI.startx + (3 * (user.controlUI.width + user.controlUI.paddingx)), user.controlUI.starty + user.controlUI.heightSmall + user.controlUI.paddingy, user.controlUI.width, user.controlUI.heightBig) Debug("Belt3") drawInventoryButton(user, user.controlPanel, unit, "belt_3", user.controlUI.startx + (4 * (user.controlUI.width + user.controlUI.paddingx)), user.controlUI.starty + user.controlUI.heightSmall + user.controlUI.paddingy, user.controlUI.width, user.controlUI.heightBig) Debug("Belt4") drawInventoryButton(user, user.controlPanel, unit, "belt_4", user.controlUI.startx + (5 * (user.controlUI.width + user.controlUI.paddingx)), user.controlUI.starty + user.controlUI.heightSmall + user.controlUI.paddingy, user.controlUI.width, user.controlUI.heightBig) Debug("LHand") -- left hand drawInventoryButton(user, user.controlPanel, unit, "l_hand", user.controlUI.startx + user.controlUI.width + user.controlUI.paddingx, user.controlUI.starty, user.controlUI.width, user.controlUI.heightSmall + user.controlUI.paddingy + user.controlUI.heightBig) Debug("RHand") -- right hand drawInventoryButton(user, user.controlPanel, unit, "r_hand", user.controlUI.startx + (6 * (user.controlUI.width + user.controlUI.paddingx)), user.controlUI.starty, user.controlUI.width, user.controlUI.heightSmall + user.controlUI.paddingy + user.controlUI.heightBig) end function drawInventoryButton(user, windowId, unit, location, x, y, w, h) drawFrame(windowId, x, y, w, h) drawInventoryImage(user, windowId, unit, location, x+1, y+1, w-2, h-2) end function drawInventoryImage(user, windowId, unit, location, x, y, w, h) Debug ("Location: %s", location) if (user.controlButtons[location] ~= 0) then UiDelete(user.controlButtons[location]) user.controlButtons[location] = 0 end if (unit.paperDoll[location] and unit.paperDoll[location] ~= 0) then sprite = GetObjectById(unit.paperDoll[location]).spriteId else sprite = '12071:448' end user.controlButtons[location] = UiImage(windowId, location.."_image", x, y, w, h, sprite) UiImageButton(windowId, location.."_button", x, y, w, h, user.controlUI["normal"..w], user.controlUI["hover"..w], user.controlUI["press"..w], "useInventoryItem "..location.." 0") end function drawFrame(windowId, x, y, w, h) local rect rect = UiRect(windowId, "frame", x, y, w, h) UiColor(rect, 0, 0, 0, 1) rect = UiRect(windowId, "rect", x + 1, y+1, w-2, h-2) UiColor(rect, 255, 200, 0, 1) end