From 53731d9a01729d67718ca0a3e751b13971adbd35 Mon Sep 17 00:00:00 2001 From: Kenny Shields Date: Sat, 24 Nov 2012 17:42:16 -0500 Subject: [PATCH] Version 0.9.4.4 - Alpha (see changelog.txt) --- changelog.txt | 30 ++ debug.lua | 122 ++++----- init.lua | 59 ++-- objects/base.lua | 130 +++++---- objects/button.lua | 35 ++- objects/checkbox.lua | 46 ++-- objects/collapsiblecategory.lua | 45 +-- objects/columnlist.lua | 100 +++++-- objects/frame.lua | 102 +++++-- objects/image.lua | 58 ++-- objects/imagebutton.lua | 30 +- objects/internal/closebutton.lua | 12 +- .../columnlist/columnlist-listarea.lua | 75 ++--- .../internal/columnlist/columnlist-row.lua | 26 +- .../internal/columnlist/coulmnlist-header.lua | 14 +- objects/internal/linenumberspanel.lua | 14 +- objects/internal/modalbackground.lua | 8 +- .../internal/multichoice/multichoice-list.lua | 77 +++--- .../internal/multichoice/multichoice-row.lua | 18 +- objects/internal/scrollable/scrollarea.lua | 16 +- objects/internal/scrollable/scrollbar.lua | 22 +- objects/internal/scrollable/scrollbody.lua | 18 +- objects/internal/scrollable/scrollbutton.lua | 16 +- objects/internal/sliderbutton.lua | 21 +- objects/internal/tabbutton.lua | 24 +- objects/internal/tooltip.lua | 22 +- objects/list.lua | 50 ++-- objects/multichoice.lua | 100 +++++-- objects/panel.lua | 12 +- objects/progressbar.lua | 36 +-- objects/slider.lua | 42 +-- objects/tabs.lua | 40 +-- objects/text.lua | 38 +-- objects/textinput.lua | 257 ++++++++++-------- readme.md | 2 +- skins/Blue/skin.lua | 8 +- skins/Orange/skin.lua | 8 +- templates.lua | 5 +- 38 files changed, 1009 insertions(+), 729 deletions(-) diff --git a/changelog.txt b/changelog.txt index a383bab..fa1b2de 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,33 @@ +================================================ +Version 0.9.4.4 - Alpha (November 24 - 2012) +================================================ +[ADDED] a new text input method: SetButtonScrollAmount(amount) +[ADDED] a new text input method: GetButtonScrollAmount() +[ADDED] a new text input method: SetMouseWheelScrollAmount(amount) +[ADDED] a new text input method: GetMouseWheelScrollAmount() +[ADDED] a new multichoice method: SetButtonScrollAmount(amount) +[ADDED] a new multichoice method: GetButtonScrollAmount() +[ADDED] a new multichoice method: SetMouseWheelScrollAmount(amount) +[ADDED] a new multichoice method: GetMouseWheelScrollAmount() +[ADDED] a new column list method: SetButtonScrollAmount(amount) +[ADDED] a new column list method: GetButtonScrollAmount() +[ADDED] a new column list method: SetMouseWheelScrollAmount(amount) +[ADDED] a new column list method: GetMouseWheelScrollAmount() +[ADDED] a new frame method: SetParentLocked(bool) +[ADDED] a new frame method: GetParentLocked() +[ADDED] a new base method: CenterWithinArea(x, y, width, height) +[ADDED] a new library function: loveframes.NewObject(id, name, inherit_from_base) + +[FIXED] an error that would occur when clicking a scroll button on a multiline text input or a multichoice list +[FIXED] a button calculation error that caused the button object to flash while moving the cursor out of it's bounding box while it was down +[FIXED] several errors that could occur when a collapsible category did not have an object +[FIXED] the value of the slider object becoming -0 in certain situations + +[CHANGED] the close button object is no longer positioned internally by the frame object and should now be positioned by it's skin drawing function +[CHANGED] all Love Frames objects are now stored within loveframes.objects +[CHANGED] frames are now draggable when parented to any object +[CHANGED] the look of the debug overlay + ================================================ Version 0.9.4.3 - Alpha (November 20 - 2012) ================================================ diff --git a/debug.lua b/debug.lua index 467af7f..1e9c196 100644 --- a/debug.lua +++ b/debug.lua @@ -6,7 +6,8 @@ -- debug library loveframes.debug = {} -local font = love.graphics.newFont(10) +local font = loveframes.basicfontsmall +local centerarea = {210, 5, 585, 590} local loremipsum = [[Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean laoreet massa mattis tortor faucibus non congue mauris mattis. Aliquam ultricies scelerisque mi, sit amet tempor metus pharetra vel. Etiam eu arcu a dolor porttitor condimentum in malesuada urna. Mauris vel nulla mi, quis aliquet neque. In aliquet turpis eget purus malesuada tincidunt. Donec rutrum purus vel diam suscipit vehicula. Cras sem nibh, tempus at dictum non, consequat non justo. In sed tellus nec orci scelerisque scelerisque id vitae leo. Maecenas pharetra, nibh eget commodo gravida, augue nisl blandit dui, ut malesuada augue dui nec erat. Phasellus nec mauris pharetra metus iaculis viverra sit amet ut tortor. Duis et viverra magna. Nunc orci dolor, placerat a iaculis non, mattis sed nibh. @@ -52,72 +53,73 @@ function loveframes.debug.draw() end end - -- font for debug text + -- main font love.graphics.setFont(font) - love.graphics.setColor(0, 0, 0, 150) - love.graphics.rectangle("fill", 5, 5, 200, 250) + -- main box + love.graphics.setColor(0, 0, 0, 200) + love.graphics.rectangle("fill", 5, 30, 200, 220) - love.graphics.setColor(0, 0, 0, 50) - love.graphics.rectangle("fill", 10, 10, 190, 20) + ------------------------------------------------------- + -- library information section + ------------------------------------------------------- love.graphics.setColor(255, 0, 0, 255) - love.graphics.print("Library Information", 15, 15) + love.graphics.print("Library Information", 10, 35) love.graphics.setColor(255, 255, 255, 255) - love.graphics.print("Author: " ..author, 15, 30) - love.graphics.print("Version: " ..version, 15, 40) - love.graphics.print("Stage: " ..stage, 15, 50) - love.graphics.print("Base Directory: " ..basedir, 15, 60) + love.graphics.print("Author: " ..author, 15, 50) + love.graphics.print("Version: " ..version, 15, 60) + love.graphics.print("Stage: " ..stage, 15, 70) + love.graphics.print("Base Directory: " ..basedir, 15, 80) - -- object information box - love.graphics.setColor(0, 0, 0, 50) - love.graphics.rectangle("fill", 10, 80, 190, 20) + ------------------------------------------------------- + -- object information section + ------------------------------------------------------- love.graphics.setColor(255, 0, 0, 255) - love.graphics.print("Object Information", 15, 85) + love.graphics.print("Object Information", 10, 95) love.graphics.setColor(255, 255, 255, 255) if #cols > 0 then - love.graphics.print("Type: " ..topcol.type, 15, 100) + love.graphics.print("Type: " ..topcol.type, 15, 110) else - love.graphics.print("Type: none", 10, 100) + love.graphics.print("Type: none", 10, 120) end if topcol.children then - love.graphics.print("# of children: " .. #topcol.children, 15, 110) + love.graphics.print("# of children: " .. #topcol.children, 15, 120) else - love.graphics.print("# of children: 0", 15, 110) + love.graphics.print("# of children: 0", 15, 120) end if topcol.internals then - love.graphics.print("# of internals: " .. #topcol.internals, 15, 120) + love.graphics.print("# of internals: " .. #topcol.internals, 15, 130) else - love.graphics.print("# of internals: 0", 15, 120) + love.graphics.print("# of internals: 0", 15, 130) end - love.graphics.print("X: " ..topcol.x, 15, 130) - love.graphics.print("Y: " ..topcol.y, 15, 140) - love.graphics.print("Width: " ..topcol.width, 15, 150) - love.graphics.print("Height: " ..topcol.height, 15, 160) + love.graphics.print("X: " ..topcol.x, 15, 140) + love.graphics.print("Y: " ..topcol.y, 15, 150) + love.graphics.print("Width: " ..topcol.width, 15, 160) + love.graphics.print("Height: " ..topcol.height, 15, 170) - -- Miscellaneous box - love.graphics.setColor(0, 0, 0, 50) - love.graphics.rectangle("fill", 10, 190, 190, 20) + ------------------------------------------------------- + -- miscellaneous section + ------------------------------------------------------- love.graphics.setColor(255, 0, 0, 255) - love.graphics.print("Miscellaneous", 15, 195) + love.graphics.print("Miscellaneous", 10, 185) love.graphics.setColor(255, 255, 255, 255) - - love.graphics.print("LOVE Version: " ..loveversion, 15, 210) - love.graphics.print("FPS: " ..fps, 15, 220) - love.graphics.print("Delta Time: " ..deltatime, 15, 230) - love.graphics.print("Total Objects: " ..#objects, 15, 240) + love.graphics.print("LOVE Version: " ..loveversion, 15, 200) + love.graphics.print("FPS: " ..fps, 15, 210) + love.graphics.print("Delta Time: " ..deltatime, 15, 220) + love.graphics.print("Total Objects: " ..#objects, 15, 230) -- outline the object that the mouse is hovering over love.graphics.setColor(255, 204, 51, 255) love.graphics.setLine(2, "smooth") love.graphics.rectangle("line", topcol.x - 1, topcol.y - 1, topcol.width + 2, topcol.height + 2) - + end --[[--------------------------------------------------------- @@ -132,8 +134,8 @@ function loveframes.debug.ExamplesMenu() ------------------------------------ local examplesframe = loveframes.Create("frame") examplesframe:SetName("Examples List") - examplesframe:SetSize(200, love.graphics.getHeight() - 330) - examplesframe:SetPos(5, 325) + examplesframe:SetSize(200, love.graphics.getHeight() - 325) + examplesframe:SetPos(5, 320) ------------------------------------ -- examples list @@ -154,7 +156,7 @@ function loveframes.debug.ExamplesMenu() local frame1 = loveframes.Create("frame") frame1:SetName("Button") - frame1:Center() + frame1:CenterWithinArea(unpack(centerarea)) local button1 = loveframes.Create("button", frame1) button1:SetWidth(200) @@ -182,7 +184,7 @@ function loveframes.debug.ExamplesMenu() local frame1 = loveframes.Create("frame") frame1:SetName("Checkbox") - frame1:Center() + frame1:CenterWithinArea(unpack(centerarea)) frame1:SetHeight(85) local checkbox1 = loveframes.Create("checkbox", frame1) @@ -210,7 +212,7 @@ function loveframes.debug.ExamplesMenu() local frame1 = loveframes.Create("frame") frame1:SetName("Collapsible Category") frame1:SetSize(500, 300) - frame1:Center() + frame1:CenterWithinArea(unpack(centerarea)) local panel1 = loveframes.Create("panel") panel1:SetHeight(230) @@ -234,7 +236,7 @@ function loveframes.debug.ExamplesMenu() local frame1 = loveframes.Create("frame") frame1:SetName("Column List") frame1:SetSize(500, 300) - frame1:Center() + frame1:CenterWithinArea(unpack(centerarea)) local list1 = loveframes.Create("columnlist", frame1) list1:SetPos(5, 30) @@ -260,7 +262,7 @@ function loveframes.debug.ExamplesMenu() local frame1 = loveframes.Create("frame") frame1:SetName("Frame") - frame1:Center() + frame1:CenterWithinArea(unpack(centerarea)) local text1 = loveframes.Create("text", frame1) text1:SetText("This is an example frame.") @@ -302,7 +304,7 @@ function loveframes.debug.ExamplesMenu() local frame1 = loveframes.Create("frame") frame1:SetName("Image") frame1:SetSize(138, 315) - frame1:Center() + frame1:CenterWithinArea(unpack(centerarea)) local image1 = loveframes.Create("image", frame1) image1:SetImage("resources/images/carlsagan.png") @@ -394,7 +396,7 @@ function loveframes.debug.ExamplesMenu() local frame1 = loveframes.Create("frame") frame1:SetName("Image Button") frame1:SetSize(138, 163) - frame1:Center() + frame1:CenterWithinArea(unpack(centerarea)) local imagebutton1 = loveframes.Create("imagebutton", frame1) imagebutton1:SetImage("resources/images/carlsagan.png") @@ -414,7 +416,7 @@ function loveframes.debug.ExamplesMenu() local frame1 = loveframes.Create("frame") frame1:SetName("List") frame1:SetSize(500, 455) - frame1:Center() + frame1:CenterWithinArea(unpack(centerarea)) local list1 = loveframes.Create("list", frame1) list1:SetPos(5, 30) @@ -499,7 +501,7 @@ function loveframes.debug.ExamplesMenu() local frame1 = loveframes.Create("frame") frame1:SetName("Multichoice") frame1:SetSize(210, 60) - frame1:Center() + frame1:CenterWithinArea(unpack(centerarea)) local multichoice1 = loveframes.Create("multichoice", frame1) multichoice1:SetPos(5, 30) @@ -521,7 +523,7 @@ function loveframes.debug.ExamplesMenu() local frame1 = loveframes.Create("frame") frame1:SetName("Panel") frame1:SetSize(210, 85) - frame1:Center() + frame1:CenterWithinArea(unpack(centerarea)) local panel1 = loveframes.Create("panel", frame1) panel1:SetPos(5, 30) @@ -539,7 +541,7 @@ function loveframes.debug.ExamplesMenu() local frame1 = loveframes.Create("frame") frame1:SetName("Progress Bar") frame1:SetSize(500, 160) - frame1:Center() + frame1:CenterWithinArea(unpack(centerarea)) local progressbar1 = loveframes.Create("progressbar", frame1) progressbar1:SetPos(5, 30) @@ -570,7 +572,7 @@ function loveframes.debug.ExamplesMenu() slider1:SetPos(5, 135) slider1:SetWidth(490) slider1:SetText("Progressbar lerp rate") - slider1:SetMinMax(1, 50) + slider1:SetMinMax(0, 50) slider1:SetDecimals(0) slider1.OnValueChanged = function(object2, value) progressbar1:SetLerpRate(value) @@ -601,7 +603,7 @@ function loveframes.debug.ExamplesMenu() local frame1 = loveframes.Create("frame") frame1:SetName("Slider") frame1:SetSize(300, 275) - frame1:Center() + frame1:CenterWithinArea(unpack(centerarea)) local slider1 = loveframes.Create("slider", frame1) slider1:SetPos(5, 30) @@ -631,7 +633,7 @@ function loveframes.debug.ExamplesMenu() local frame1 = loveframes.Create("frame") frame1:SetName("Tabs") frame1:SetSize(500, 300) - frame1:Center() + frame1:CenterWithinArea(unpack(centerarea)) local tabs1 = loveframes.Create("tabs", frame1) tabs1:SetPos(5, 30) @@ -668,7 +670,7 @@ function loveframes.debug.ExamplesMenu() local frame1 = loveframes.Create("frame") frame1:SetName("Text") frame1:SetSize(500, 300) - frame1:Center() + frame1:CenterWithinArea(unpack(centerarea)) local list1 = loveframes.Create("list", frame1) list1:SetPos(5, 30) @@ -676,11 +678,9 @@ function loveframes.debug.ExamplesMenu() list1:SetPadding(5) list1:SetSpacing(5) - --for i=1, 5 do - local text1 = loveframes.Create("text") - text1:SetText(loremipsum) - list1:AddItem(text1) - --end + local text1 = loveframes.Create("text") + text1:SetText(loremipsum) + list1:AddItem(text1) end exampleslist:AddItem(textexample) @@ -695,7 +695,7 @@ function loveframes.debug.ExamplesMenu() local frame1 = loveframes.Create("frame") frame1:SetName("Text Input") frame1:SetSize(500, 90) - frame1:Center() + frame1:CenterWithinArea(unpack(centerarea)) local textinput1 = loveframes.Create("textinput", frame1) textinput1:SetPos(5, 30) @@ -714,14 +714,14 @@ function loveframes.debug.ExamplesMenu() togglebutton.OnClick = function(object) if textinput1.multiline then frame1:SetHeight(90) - frame1:Center() + frame1:CenterWithinArea(unpack(centerarea)) togglebutton:SetPos(5, 60) textinput1:SetMultiline(false) textinput1:SetHeight(25) textinput1:SetText("") else frame1:SetHeight(365) - frame1:Center() + frame1:CenterWithinArea(unpack(centerarea)) togglebutton:SetPos(5, 335) textinput1:SetMultiline(true) textinput1:SetHeight(300) @@ -745,7 +745,7 @@ function loveframes.debug.SkinSelector() local frame = loveframes.Create("frame") frame:SetName("Skin Selector") frame:SetSize(200, 60) - frame:SetPos(5, 260) + frame:SetPos(5, 255) local skinslist = loveframes.Create("multichoice", frame) skinslist:SetPos(5, 30) diff --git a/init.lua b/init.lua index 3a0066c..807ff61 100644 --- a/init.lua +++ b/init.lua @@ -9,7 +9,7 @@ loveframes = {} -- library info loveframes.info = {} loveframes.info.author = "Kenny Shields" -loveframes.info.version = "0.9.4.3" +loveframes.info.version = "0.9.4.4" loveframes.info.stage = "Alpha" -- library configurations @@ -26,6 +26,7 @@ loveframes.hoverobject = false loveframes.modalobject = false loveframes.basicfont = love.graphics.newFont(12) loveframes.basicfontsmall = love.graphics.newFont(10) +loveframes.objects = {} --[[--------------------------------------------------------- - func: load() @@ -70,7 +71,7 @@ function loveframes.load() end -- create the base gui object - loveframes.base = base:new() + loveframes.base = loveframes.objects["base"]:new() end @@ -80,9 +81,9 @@ end --]]--------------------------------------------------------- function loveframes.update(dt) - local object = loveframes.base + local base = loveframes.base - object:update(dt) + base:update(dt) end @@ -92,13 +93,13 @@ end --]]--------------------------------------------------------- function loveframes.draw() - local object = loveframes.base + local base = loveframes.base -- set the drawcount to zero loveframes.drawcount = 0 -- draw the base object - object:draw() + base:draw() -- draw the debug library loveframes.debug.draw() @@ -111,9 +112,9 @@ end --]]--------------------------------------------------------- function loveframes.mousepressed(x, y, button) - local object = loveframes.base + local base = loveframes.base - object:mousepressed(x, y, button) + base:mousepressed(x, y, button) end @@ -123,9 +124,9 @@ end --]]--------------------------------------------------------- function loveframes.mousereleased(x, y, button) - local object = loveframes.base + local base = loveframes.base - object:mousereleased(x, y, button) + base:mousereleased(x, y, button) -- reset the hover object if button == "l" then @@ -141,9 +142,9 @@ end --]]--------------------------------------------------------- function loveframes.keypressed(key, unicode) - local object = loveframes.base + local base = loveframes.base - object:keypressed(key, unicode) + base:keypressed(key, unicode) end @@ -153,9 +154,9 @@ end --]]--------------------------------------------------------- function loveframes.keyreleased(key) - local object = loveframes.base + local base = loveframes.base - object:keyreleased(key) + base:keyreleased(key) end @@ -169,13 +170,15 @@ function loveframes.Create(data, parent) if type(data) == "string" then - -- make sure the object specified is valid - if not _G[data] then + local objects = loveframes.objects + local object = objects[data] + + if not object then loveframes.util.Error("Error creating object: Invalid object '" ..data.. "'.") end -- create the object - local object = _G[data]:new() + object = object:new() -- apply template properties to the object loveframes.templates.ApplyToObject(object) @@ -269,5 +272,27 @@ function loveframes.Create(data, parent) end +--[[--------------------------------------------------------- + - func: NewObject(id, name, inherit_from_base) + - desc: creates a new object +--]]--------------------------------------------------------- +function loveframes.NewObject(id, name, inherit_from_base) + + local objects = loveframes.objects + local object = false + + if inherit_from_base then + local base = objects["base"] + object = class(name, base) + objects[id] = object + else + object = class(name) + objects[id] = object + end + + return object + +end + -- load the library loveframes.load() \ No newline at end of file diff --git a/objects/base.lua b/objects/base.lua index fb6d48e..2934101 100644 --- a/objects/base.lua +++ b/objects/base.lua @@ -4,13 +4,13 @@ --]]------------------------------------------------ -- base object -base = class("base") +local newobject = loveframes.NewObject("base", "loveframes_object_base") --[[--------------------------------------------------------- - func: initialize() - desc: intializes the element --]]--------------------------------------------------------- -function base:initialize() +function newobject:initialize() -- width and height of the window local w = love.graphics.getWidth() @@ -29,7 +29,7 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function base:update(dt) +function newobject:update(dt) local children = self.children @@ -47,7 +47,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function base:draw() +function newobject:draw() local children = self.children @@ -68,7 +68,7 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function base:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) local visible = self.visible local children = self.children @@ -96,7 +96,7 @@ end - func: mousereleased(x, y, button) - desc: called when the player releases a mouse button --]]--------------------------------------------------------- -function base:mousereleased(x, y, button) +function newobject:mousereleased(x, y, button) local visible = self.visible local children = self.children @@ -124,7 +124,7 @@ end - func: keypressed(key) - desc: called when the player presses a key --]]--------------------------------------------------------- -function base:keypressed(key, unicode) +function newobject:keypressed(key, unicode) local visible = self.visible local children = self.children @@ -152,7 +152,7 @@ end - func: keyreleased(key) - desc: called when the player releases a key --]]--------------------------------------------------------- -function base:keyreleased(key) +function newobject:keyreleased(key) local visible = self.visible local children = self.children @@ -182,7 +182,7 @@ end - func: SetPos(x, y) - desc: sets the object's position --]]--------------------------------------------------------- -function base:SetPos(x, y) +function newobject:SetPos(x, y) local base = loveframes.base local parent = self.parent @@ -201,7 +201,7 @@ end - func: SetX(x) - desc: sets the object's x position --]]--------------------------------------------------------- -function base:SetX(x) +function newobject:SetX(x) local base = loveframes.base local parent = self.parent @@ -218,7 +218,7 @@ end - func: SetY(y) - desc: sets the object's y position --]]--------------------------------------------------------- -function base:SetY(y) +function newobject:SetY(y) local base = loveframes.base local parent = self.parent @@ -235,7 +235,7 @@ end - func: GetPos() - desc: gets the object's position --]]--------------------------------------------------------- -function base:GetPos() +function newobject:GetPos() return self.x, self.y @@ -245,7 +245,7 @@ end - func: GetX() - desc: gets the object's x position --]]--------------------------------------------------------- -function base:GetX() +function newobject:GetX() return self.x @@ -255,7 +255,7 @@ end - func: GetY() - desc: gets the object's y position --]]--------------------------------------------------------- -function base:GetY() +function newobject:GetY() return self.y @@ -265,7 +265,7 @@ end - func: GetStaticPos() - desc: gets the object's static position --]]--------------------------------------------------------- -function base:GetStaticPos() +function newobject:GetStaticPos() return self.staticx, self.staticy @@ -275,7 +275,7 @@ end - func: GetStaticX() - desc: gets the object's static x position --]]--------------------------------------------------------- -function base:GetStaticX() +function newobject:GetStaticX() return self.staticx @@ -285,7 +285,7 @@ end - func: GetStaticY() - desc: gets the object's static y position --]]--------------------------------------------------------- -function base:GetStaticY() +function newobject:GetStaticY() return self.staticy @@ -296,7 +296,7 @@ end - desc: centers the object in the game window or in it's parent if it has one --]]--------------------------------------------------------- -function base:Center() +function newobject:Center(area) local base = loveframes.base local parent = self.parent @@ -321,7 +321,7 @@ end - func: CenterX() - desc: centers the object by it's x value --]]--------------------------------------------------------- -function base:CenterX() +function newobject:CenterX() local base = loveframes.base local parent = self.parent @@ -340,7 +340,7 @@ end - func: CenterY() - desc: centers the object by it's y value --]]--------------------------------------------------------- -function base:CenterY() +function newobject:CenterY() local base = loveframes.base local parent = self.parent @@ -355,11 +355,25 @@ function base:CenterY() end +--[[--------------------------------------------------------- + - func: CenterWithinArea() + - desc: centers the object within the given area +--]]--------------------------------------------------------- +function newobject:CenterWithinArea(x, y, width, height) + + local selfwidth = self.width + local selfheight = self.height + + self.x = x + width/2 - selfwidth/2 + self.y = y + height/2 - selfheight/2 + +end + --[[--------------------------------------------------------- - func: SetSize(width, height) - desc: sets the object's size --]]--------------------------------------------------------- -function base:SetSize(width, height) +function newobject:SetSize(width, height) self.width = width self.height = height @@ -370,7 +384,7 @@ end - func: SetWidth(width) - desc: sets the object's width --]]--------------------------------------------------------- -function base:SetWidth(width) +function newobject:SetWidth(width) self.width = width @@ -380,7 +394,7 @@ end - func: SetHeight(height) - desc: sets the object's height --]]--------------------------------------------------------- -function base:SetHeight(height) +function newobject:SetHeight(height) self.height = height @@ -390,7 +404,7 @@ end - func: GetSize() - desc: gets the object's size --]]--------------------------------------------------------- -function base:GetSize() +function newobject:GetSize() return self.width, self.height @@ -400,7 +414,7 @@ end - func: GetWidth() - desc: gets the object's width --]]--------------------------------------------------------- -function base:GetWidth() +function newobject:GetWidth() return self.width @@ -410,7 +424,7 @@ end - func: GetHeight() - desc: gets the object's height --]]--------------------------------------------------------- -function base:GetHeight() +function newobject:GetHeight() return self.height @@ -420,7 +434,7 @@ end - func: SetVisible(bool) - desc: sets the object's visibility --]]--------------------------------------------------------- -function base:SetVisible(bool) +function newobject:SetVisible(bool) local children = self.children local internals = self.internals @@ -445,7 +459,7 @@ end - func: GetVisible() - desc: gets the object's visibility --]]--------------------------------------------------------- -function base:GetVisible() +function newobject:GetVisible() return self.visible @@ -455,7 +469,7 @@ end - func: SetParent(parent) - desc: sets the object's parent --]]--------------------------------------------------------- -function base:SetParent(parent) +function newobject:SetParent(parent) local tparent = parent local cparent = self.parent @@ -477,7 +491,7 @@ end - func: GetParent() - desc: gets the object's parent --]]--------------------------------------------------------- -function base:GetParent() +function newobject:GetParent() local parent = self.parent return parent @@ -488,7 +502,7 @@ end - func: Remove() - desc: removes the object --]]--------------------------------------------------------- -function base:Remove() +function newobject:Remove() local pinternals = self.parent.internals local pchildren = self.parent.children @@ -518,7 +532,7 @@ end - desc: sets a boundary box for the object's collision detection --]]--------------------------------------------------------- -function base:SetClickBounds(x, y, width, height) +function newobject:SetClickBounds(x, y, width, height) local internals = self.internals local children = self.children @@ -544,7 +558,7 @@ end - desc: gets the boundary box for the object's collision detection --]]--------------------------------------------------------- -function base:GetClickBounds() +function newobject:GetClickBounds() return self.clickbounds @@ -555,7 +569,7 @@ end - desc: removes the collision detection boundary for the object --]]--------------------------------------------------------- -function base:RemoveClickBounds() +function newobject:RemoveClickBounds() local internals = self.internals local children = self.children @@ -581,7 +595,7 @@ end - desc: checks if the mouse is inside the object's collision detection boundaries --]]--------------------------------------------------------- -function base:InClickBounds() +function newobject:InClickBounds() local x, y = love.mouse.getPosition() local bounds = self.clickbounds @@ -600,7 +614,7 @@ end - desc: checks if the object the top most object in a collision table --]]--------------------------------------------------------- -function base:IsTopCollision() +function newobject:IsTopCollision() local cols = loveframes.util.GetCollisions() local draworder = self.draworder @@ -621,7 +635,7 @@ end - func: GetBaseParent(object, t) - desc: finds the object's base parent --]]--------------------------------------------------------- -function base:GetBaseParent(t) +function newobject:GetBaseParent(t) local t = t or {} local base = loveframes.base @@ -641,7 +655,7 @@ end - desc: checks to see if the object should be in a hover state --]]--------------------------------------------------------- -function base:CheckHover() +function newobject:CheckHover() local x, y = love.mouse.getPosition() local selfcol = loveframes.util.BoundingBox(x, self.x, y, self.y, 1, self.width, 1, self.height) @@ -735,7 +749,7 @@ end - func: GetHover() - desc: return if the object is in a hover state or not --]]--------------------------------------------------------- -function base:GetHover() +function newobject:GetHover() return self.hover @@ -745,7 +759,7 @@ end - func: GetChildren() - desc: returns the object's children --]]--------------------------------------------------------- -function base:GetChildren() +function newobject:GetChildren() local children = self.children @@ -760,7 +774,7 @@ end - desc: returns true if the object is the top most list object or false if not --]]--------------------------------------------------------- -function base:IsTopList() +function newobject:IsTopList() local cols = loveframes.util.GetCollisions() local children = self:GetChildren() @@ -808,7 +822,7 @@ end - desc: returns true if the object is the top most child in it's parent's children table or false if not --]]--------------------------------------------------------- -function base:IsTopChild() +function newobject:IsTopChild() local children = self.parent.children local num = #children @@ -826,7 +840,7 @@ end - desc: moves the object to the top of it's parent's children table --]]--------------------------------------------------------- -function base:MoveToTop() +function newobject:MoveToTop() local pchildren = self.parent.children local pinternals = self.parent.internals @@ -853,7 +867,7 @@ end - func: SetSkin(name) - desc: sets the object's skin --]]--------------------------------------------------------- -function base:SetSkin(name) +function newobject:SetSkin(name) local children = self.children local internals = self.internals @@ -878,7 +892,7 @@ end - func: GetSkin(name) - desc: gets the object's skin --]]--------------------------------------------------------- -function base:GetSkin(name) +function newobject:GetSkin(name) return self.skin @@ -888,7 +902,7 @@ end - func: SetAlwaysUpdate(bool) - desc: sets the object's skin --]]--------------------------------------------------------- -function base:SetAlwaysUpdate(bool) +function newobject:SetAlwaysUpdate(bool) self.alwaysupdate = bool @@ -898,7 +912,7 @@ end - func: GetAlwaysUpdate() - desc: gets whether or not the object will always update --]]--------------------------------------------------------- -function base:GetAlwaysUpdate() +function newobject:GetAlwaysUpdate() return self.alwaysupdate @@ -909,7 +923,7 @@ end - desc: sets whether or not the object should retain it's size when another object tries to resize it --]]--------------------------------------------------------- -function base:SetRetainSize(bool) +function newobject:SetRetainSize(bool) self.retainsize = bool @@ -920,7 +934,7 @@ end - desc: gets whether or not the object should retain it's size when another object tries to resize it --]]--------------------------------------------------------- -function base:GetRetainSize() +function newobject:GetRetainSize() return self.retainsize @@ -931,7 +945,7 @@ end - desc: gets whether or not the object is active within it's parent's child table --]]--------------------------------------------------------- -function base:IsActive() +function newobject:IsActive() local parent = self.parent local pchildren = parent.children @@ -952,7 +966,7 @@ end - desc: returns a table of the object's parents and it's sub-parents --]]--------------------------------------------------------- -function base:GetParents() +function newobject:GetParents() local function GetParents(object, t) @@ -981,7 +995,7 @@ end internal in it's parent's internals table or false if not --]]--------------------------------------------------------- -function base:IsTopInternal() +function newobject:IsTopInternal() local internals = self.parent.internals @@ -998,7 +1012,7 @@ end - desc: returns true if the object is internal or false if not --]]--------------------------------------------------------- -function base:IsInternal() +function newobject:IsInternal() return self.internal @@ -1008,7 +1022,7 @@ end - func: GetType() - desc: gets the type of the object --]]--------------------------------------------------------- -function base:GetType() +function newobject:GetType() return self.type @@ -1018,7 +1032,7 @@ end - func: SetDrawOrder() - desc: sets the object's draw order --]]--------------------------------------------------------- -function base:SetDrawOrder() +function newobject:SetDrawOrder() loveframes.drawcount = loveframes.drawcount + 1 self.draworder = loveframes.drawcount @@ -1029,7 +1043,7 @@ end - func: GetDrawOrder() - desc: sets the object's draw order --]]--------------------------------------------------------- -function base:GetDrawOrder() +function newobject:GetDrawOrder() return self.draworder @@ -1039,7 +1053,7 @@ end - func: SetProperty(name, value) - desc: sets a property on the object --]]--------------------------------------------------------- -function base:SetProperty(name, value) +function newobject:SetProperty(name, value) self[name] = value @@ -1049,7 +1063,7 @@ end - func: GetProperty(name) - desc: gets the value of an object's property --]]--------------------------------------------------------- -function base:GetProperty(name) +function newobject:GetProperty(name) return self[name] diff --git a/objects/button.lua b/objects/button.lua index 28d6664..babd8a5 100644 --- a/objects/button.lua +++ b/objects/button.lua @@ -4,13 +4,13 @@ --]]------------------------------------------------ -- button class -button = class("button", base) +local newobject = loveframes.NewObject("button", "loveframes_object_button", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function button:initialize() +function newobject:initialize() self.type = "button" self.text = "Button" @@ -28,9 +28,9 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function button:update(dt) +function newobject:update(dt) - local visible = self.visible + local visible = self.visible local alwaysupdate = self.alwaysupdate if not visible then @@ -50,16 +50,15 @@ function button:update(dt) if not hover then self.down = false + if hoverobject == self then + self.hover = true + end else if hoverobject == self then self.down = true end end - if not down and hoverobject == self then - self.hover = true - end - -- move to parent if there is a parent if parent ~= base then self.x = self.parent.x + self.staticx @@ -76,7 +75,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function button:draw() +function newobject:draw() local visible = self.visible @@ -108,7 +107,7 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function button:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) local visible = self.visible @@ -137,7 +136,7 @@ end - func: mousereleased(x, y, button) - desc: called when the player releases a mouse button --]]--------------------------------------------------------- -function button:mousereleased(x, y, button) +function newobject:mousereleased(x, y, button) local visible = self.visible @@ -167,7 +166,7 @@ end - func: keypressed(key) - desc: called when the player presses a key --]]--------------------------------------------------------- -function button:keypressed(key, unicode) +function newobject:keypressed(key, unicode) local visible = self.visible @@ -188,7 +187,7 @@ end - func: SetText(text) - desc: sets the object's text --]]--------------------------------------------------------- -function button:SetText(text) +function newobject:SetText(text) self.text = text @@ -198,7 +197,7 @@ end - func: GetText() - desc: gets the object's text --]]--------------------------------------------------------- -function button:GetText() +function newobject:GetText() return self.text @@ -208,7 +207,7 @@ end - func: SetClickable(bool) - desc: sets whether the object can be clicked or not --]]--------------------------------------------------------- -function button:SetClickable(bool) +function newobject:SetClickable(bool) self.clickable = bool @@ -218,7 +217,7 @@ end - func: GetClickable(bool) - desc: gets whether the object can be clicked or not --]]--------------------------------------------------------- -function button:GetClickable() +function newobject:GetClickable() return self.clickable @@ -228,7 +227,7 @@ end - func: SetClickable(bool) - desc: sets whether the object is enabled or not --]]--------------------------------------------------------- -function button:SetEnabled(bool) +function newobject:SetEnabled(bool) self.enabled = bool @@ -238,7 +237,7 @@ end - func: GetEnabled() - desc: gets whether the object is enabled or not --]]--------------------------------------------------------- -function button:GetEnabled() +function newobject:GetEnabled() return self.enabled diff --git a/objects/checkbox.lua b/objects/checkbox.lua index 395fdbf..d1eba9f 100644 --- a/objects/checkbox.lua +++ b/objects/checkbox.lua @@ -4,13 +4,13 @@ --]]------------------------------------------------ -- checkbox class -checkbox = class("checkbox", base) +local newobject = loveframes.NewObject("checkbox", "loveframes_object_checkbox", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function checkbox:initialize() +function newobject:initialize() self.type = "checkbox" self.width = 0 @@ -31,7 +31,7 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function checkbox:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -105,7 +105,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function checkbox:draw() +function newobject:draw() local visible = self.visible @@ -142,7 +142,7 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function checkbox:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) local visible = self.visible @@ -171,7 +171,7 @@ end - func: mousereleased(x, y, button) - desc: called when the player releases a mouse button --]]--------------------------------------------------------- -function checkbox:mousereleased(x, y, button) +function newobject:mousereleased(x, y, button) local visible = self.visible @@ -203,7 +203,7 @@ end - func: keypressed(key) - desc: called when the player presses a key --]]--------------------------------------------------------- -function checkbox:keypressed(key, unicode) +function newobject:keypressed(key, unicode) local checked = self.checked local onchanged = self.OnChanged @@ -227,7 +227,7 @@ end - func: SetText(text) - desc: sets the object's text --]]--------------------------------------------------------- -function checkbox:SetText(text) +function newobject:SetText(text) local boxwidth = self.boxwidth local boxheight = self.boxheight @@ -266,7 +266,7 @@ end - func: GetText() - desc: gets the object's text --]]--------------------------------------------------------- -function checkbox:GetText() +function newobject:GetText() local internals = self.internals local text = internals[1] @@ -283,7 +283,7 @@ end - func: SetSize(width, height) - desc: sets the object's size --]]--------------------------------------------------------- -function checkbox:SetSize(width, height) +function newobject:SetSize(width, height) self.boxwidth = width self.boxheight = height @@ -294,7 +294,7 @@ end - func: SetWidth(width) - desc: sets the object's width --]]--------------------------------------------------------- -function checkbox:SetWidth(width) +function newobject:SetWidth(width) self.boxwidth = width @@ -304,7 +304,7 @@ end - func: SetHeight(height) - desc: sets the object's height --]]--------------------------------------------------------- -function checkbox:SetHeight(height) +function newobject:SetHeight(height) self.boxheight = height @@ -314,7 +314,7 @@ end - func: SetChecked(bool) - desc: sets whether the object is checked or not --]]--------------------------------------------------------- -function checkbox:SetChecked(bool) +function newobject:SetChecked(bool) local onchanged = self.OnChanged @@ -330,7 +330,7 @@ end - func: GetChecked() - desc: gets whether the object is checked or not --]]--------------------------------------------------------- -function checkbox:GetChecked() +function newobject:GetChecked() return self.checked @@ -340,7 +340,7 @@ end - func: SetFont(font) - desc: sets the font of the object's text --]]--------------------------------------------------------- -function checkbox:SetFont(font) +function newobject:SetFont(font) local internals = self.internals local text = internals[1] @@ -354,40 +354,40 @@ function checkbox:SetFont(font) end --[[--------------------------------------------------------- - - func: checkbox:GetFont() + - func: newobject:GetFont() - desc: gets the font of the object's text --]]--------------------------------------------------------- -function checkbox:GetFont() +function newobject:GetFont() return self.font end --[[--------------------------------------------------------- - - func: checkbox:GetBoxHeight() + - func: newobject:GetBoxHeight() - desc: gets the object's box size --]]--------------------------------------------------------- -function checkbox:GetBoxSize() +function newobject:GetBoxSize() return self.boxwidth, self.boxheight end --[[--------------------------------------------------------- - - func: checkbox:GetBoxWidth() + - func: newobject:GetBoxWidth() - desc: gets the object's box width --]]--------------------------------------------------------- -function checkbox:GetBoxWidth() +function newobject:GetBoxWidth() return self.boxwidth end --[[--------------------------------------------------------- - - func: checkbox:GetBoxHeight() + - func: newobject:GetBoxHeight() - desc: gets the object's box height --]]--------------------------------------------------------- -function checkbox:GetBoxHeight() +function newobject:GetBoxHeight() return self.boxheight diff --git a/objects/collapsiblecategory.lua b/objects/collapsiblecategory.lua index 4018137..6d05563 100644 --- a/objects/collapsiblecategory.lua +++ b/objects/collapsiblecategory.lua @@ -4,13 +4,13 @@ --]]------------------------------------------------ -- collapsiblecategory class -collapsiblecategory = class("collapsiblecategory", base) +local newobject = loveframes.NewObject("collapsiblecategory", "loveframes_object_collapsiblecategory", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function collapsiblecategory:initialize() +function newobject:initialize() self.type = "collapsiblecategory" self.text = "Category" @@ -30,7 +30,7 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function collapsiblecategory:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -56,7 +56,7 @@ function collapsiblecategory:update(dt) self.y = self.parent.y + self.staticy end - if open == true then + if open and curobject then curobject:SetWidth(self.width - self.padding * 2) curobject:update(dt) end @@ -71,7 +71,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function collapsiblecategory:draw() +function newobject:draw() local visible = self.visible @@ -100,7 +100,7 @@ function collapsiblecategory:draw() drawfunc(self) end - if open then + if open and curobject then curobject:draw() end @@ -110,7 +110,7 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function collapsiblecategory:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) local visible = self.visible @@ -142,7 +142,7 @@ function collapsiblecategory:mousepressed(x, y, button) end - if open then + if open and curobject then curobject:mousepressed(x, y, button) end @@ -152,7 +152,7 @@ end - func: mousereleased(x, y, button) - desc: called when the player releases a mouse button --]]--------------------------------------------------------- -function collapsiblecategory:mousereleased(x, y, button) +function newobject:mousereleased(x, y, button) local visible = self.visible @@ -181,7 +181,7 @@ function collapsiblecategory:mousereleased(x, y, button) end - if open then + if open and curobject then curobject:mousepressed(x, y, button) end @@ -191,7 +191,7 @@ end - func: SetText(text) - desc: sets the object's text --]]--------------------------------------------------------- -function collapsiblecategory:SetText(text) +function newobject:SetText(text) self.text = text @@ -201,7 +201,7 @@ end - func: GetText() - desc: gets the object's text --]]--------------------------------------------------------- -function collapsiblecategory:GetText() +function newobject:GetText() return self.text @@ -211,7 +211,7 @@ end - func: SetObject(object) - desc: sets the category's object --]]--------------------------------------------------------- -function collapsiblecategory:SetObject(object) +function newobject:SetObject(object) local children = self.children local curobject = children[1] @@ -234,7 +234,7 @@ end - func: SetObject(object) - desc: sets the category's object --]]--------------------------------------------------------- -function collapsiblecategory:GetObject() +function newobject:GetObject() local children = self.children local curobject = children[1] @@ -251,7 +251,7 @@ end - func: SetSize(width, height) - desc: sets the object's size --]]--------------------------------------------------------- -function collapsiblecategory:SetSize(width, height) +function newobject:SetSize(width, height) self.width = width @@ -261,7 +261,7 @@ end - func: SetHeight(height) - desc: sets the object's height --]]--------------------------------------------------------- -function collapsiblecategory:SetHeight(height) +function newobject:SetHeight(height) return @@ -271,7 +271,7 @@ end - func: SetClosedHeight(height) - desc: sets the object's closed height --]]--------------------------------------------------------- -function collapsiblecategory:SetClosedHeight(height) +function newobject:SetClosedHeight(height) self.closedheight = height @@ -281,7 +281,7 @@ end - func: GetClosedHeight() - desc: gets the object's closed height --]]--------------------------------------------------------- -function collapsiblecategory:GetClosedHeight() +function newobject:GetClosedHeight() return self.closedheight @@ -291,13 +291,12 @@ end - func: SetOpen(bool) - desc: sets whether the object is opened or closed --]]--------------------------------------------------------- -function collapsiblecategory:SetOpen(bool) +function newobject:SetOpen(bool) local children = self.children local curobject = children[1] local closedheight = self.closedheight local padding = self.padding - local curobjectheight = curobject.height local onopenedclosed = self.OnOpenedClosed self.open = bool @@ -305,11 +304,13 @@ function collapsiblecategory:SetOpen(bool) if not bool then self.height = closedheight if curobject then + local curobjectheight = curobject.height curobject:SetVisible(false) end else - self.height = closedheight + padding * 2 + curobjectheight if curobject then + local curobjectheight = curobject.height + self.height = closedheight + padding * 2 + curobjectheight curobject:SetVisible(true) end end @@ -325,7 +326,7 @@ end - func: GetOpen() - desc: gets whether the object is opened or closed --]]--------------------------------------------------------- -function collapsiblecategory:GetOpen() +function newobject:GetOpen() return self.opened diff --git a/objects/columnlist.lua b/objects/columnlist.lua index 6d4c337..68815ae 100644 --- a/objects/columnlist.lua +++ b/objects/columnlist.lua @@ -4,25 +4,27 @@ --]]------------------------------------------------ -- columnlist class -columnlist = class("columnlist", base) +local newobject = loveframes.NewObject("columnlist", "loveframes_object_columnlist", true) --[[--------------------------------------------------------- - func: initialize() - desc: intializes the element --]]--------------------------------------------------------- -function columnlist:initialize() +function newobject:initialize() - self.type = "columnlist" - self.width = 300 - self.height = 100 - self.autoscroll = false - self.internal = false - self.children = {} - self.internals = {} - self.OnRowClicked = nil - self.OnScroll = nil + self.type = "columnlist" + self.width = 300 + self.height = 100 + self.buttonscrollamount = 0.10 + self.mousewheelscrollamount = 5 + self.autoscroll = false + self.internal = false + self.children = {} + self.internals = {} + self.OnRowClicked = nil + self.OnScroll = nil - local list = columnlistarea:new(self) + local list = loveframes.objects["columnlistarea"]:new(self) table.insert(self.internals, list) end @@ -31,7 +33,7 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function columnlist:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -74,7 +76,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function columnlist:draw() +function newobject:draw() local visible = self.visible @@ -116,7 +118,7 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function columnlist:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) local visible = self.visible @@ -152,7 +154,7 @@ end - func: mousereleased(x, y, button) - desc: called when the player releases a mouse button --]]--------------------------------------------------------- -function columnlist:mousereleased(x, y, button) +function newobject:mousereleased(x, y, button) local visible = self.visible @@ -177,7 +179,7 @@ end - func: Adjustchildren() - desc: adjusts the width of the object's children --]]--------------------------------------------------------- -function columnlist:AdjustColumns() +function newobject:AdjustColumns() local width = self.width local bar = self.internals[1].bar @@ -208,13 +210,13 @@ end - desc: gives the object a new column with the specified name --]]--------------------------------------------------------- -function columnlist:AddColumn(name) +function newobject:AddColumn(name) local internals = self.internals local list = internals[1] local height = self.height - columnlistheader:new(name, self) + loveframes.objects["columnlistheader"]:new(name, self) self:AdjustColumns() list:SetSize(self.width, height) @@ -226,7 +228,7 @@ end - func: AddRow(...) - desc: adds a row of data to the object's list --]]--------------------------------------------------------- -function columnlist:AddRow(...) +function newobject:AddRow(...) local internals = self.internals local list = internals[1] @@ -239,7 +241,7 @@ end - func: Getchildrenize() - desc: gets the size of the object's children --]]--------------------------------------------------------- -function columnlist:GetColumnSize() +function newobject:GetColumnSize() local children = self.children local numchildren = #self.children @@ -259,7 +261,7 @@ end - func: SetSize(width, height) - desc: sets the object's size --]]--------------------------------------------------------- -function columnlist:SetSize(width, height) +function newobject:SetSize(width, height) local internals = self.internals local list = internals[1] @@ -276,7 +278,7 @@ end - func: SetWidth(width) - desc: sets the object's width --]]--------------------------------------------------------- -function columnlist:SetWidth(width) +function newobject:SetWidth(width) local internals = self.internals local list = internals[1] @@ -292,7 +294,7 @@ end - func: SetHeight(height) - desc: sets the object's height --]]--------------------------------------------------------- -function columnlist:SetHeight(height) +function newobject:SetHeight(height) local internals = self.internals local list = internals[1] @@ -309,7 +311,7 @@ end - desc: sets the object's max color index for alternating row colors --]]--------------------------------------------------------- -function columnlist:SetMaxColorIndex(num) +function newobject:SetMaxColorIndex(num) local internals = self.internals local list = internals[1] @@ -322,7 +324,7 @@ end - func: Clear() - desc: removes all items from the object's list --]]--------------------------------------------------------- -function columnlist:Clear() +function newobject:Clear() local internals = self.internals local list = internals[1] @@ -337,7 +339,7 @@ end auto scroll to the bottom when a new object is added to the list --]]--------------------------------------------------------- -function columnlist:SetAutoScroll(bool) +function newobject:SetAutoScroll(bool) local internals = self.internals local list = internals[1] @@ -351,4 +353,48 @@ function columnlist:SetAutoScroll(bool) end end +end + +--[[--------------------------------------------------------- + - func: SetButtonScrollAmount(speed) + - desc: sets the scroll amount of the object's scrollbar + buttons +--]]--------------------------------------------------------- +function newobject:SetButtonScrollAmount(amount) + + self.buttonscrollamount = amount + self.internals[1].buttonscrollamount = amount + +end + +--[[--------------------------------------------------------- + - func: GetButtonScrollAmount() + - desc: gets the scroll amount of the object's scrollbar + buttons +--]]--------------------------------------------------------- +function newobject:GetButtonScrollAmount() + + return self.buttonscrollamount + +end + +--[[--------------------------------------------------------- + - func: SetMouseWheelScrollAmount(amount) + - desc: sets the scroll amount of the mouse wheel +--]]--------------------------------------------------------- +function newobject:SetMouseWheelScrollAmount(amount) + + self.mousewheelscrollamount = amount + self.internals[1].mousewheelscrollamount = amount + +end + +--[[--------------------------------------------------------- + - func: GetMouseWheelScrollAmount() + - desc: gets the scroll amount of the mouse wheel +--]]--------------------------------------------------------- +function newobject:GetButtonScrollAmount() + + return self.mousewheelscrollamount + end \ No newline at end of file diff --git a/objects/frame.lua b/objects/frame.lua index 35496fa..585ea66 100644 --- a/objects/frame.lua +++ b/objects/frame.lua @@ -4,14 +4,13 @@ --]]------------------------------------------------ -- frame class -frame = class("frame", base) - +local newobject = loveframes.NewObject("frame", "loveframes_object_frame", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function frame:initialize() +function newobject:initialize() self.type = "frame" self.name = "Frame" @@ -22,6 +21,7 @@ function frame:initialize() self.internal = false self.draggable = true self.screenlocked = false + self.parentlocked = false self.dragging = false self.modal = false self.modalbackground = false @@ -31,7 +31,7 @@ function frame:initialize() self.OnClose = nil -- create the close button for the frame - local close = closebutton:new() + local close = loveframes.objects["closebutton"]:new() close.parent = self close:SetSize(16, 16) close.OnClick = function() @@ -50,7 +50,7 @@ end - func: update(deltatime) - desc: updates the element --]]--------------------------------------------------------- -function frame:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -66,6 +66,7 @@ function frame:update(dt) local close = self.internals[1] local dragging = self.dragging local screenlocked = self.screenlocked + local parentlocked = self.parentlocked local modal = self.modal local base = loveframes.base local basechildren = base.children @@ -76,7 +77,6 @@ function frame:update(dt) local parent = self.parent local update = self.Update - close:SetPos(self.width - 20, 4) self:CheckHover() -- dragging check @@ -84,11 +84,14 @@ function frame:update(dt) if parent == base then self.x = x - self.clickx self.y = y - self.clicky + else + self.staticx = x - self.clickx + self.staticy = y - self.clicky end end -- if screenlocked then keep within screen - if screenlocked == true then + if screenlocked then local width = love.graphics.getWidth() local height = love.graphics.getHeight() @@ -110,6 +113,28 @@ function frame:update(dt) end + if parentlocked then + + local width = self.parent.width + local height = self.parent.height + local selfwidth = self.width + local selfheight = self.height + + if self.staticx < 0 then + self.staticx = 0 + end + if self.staticx + selfwidth > width then + self.staticx = width - selfwidth + end + if self.staticy < 0 then + self.staticy = 0 + end + if self.staticy + selfheight > height then + self.staticy = height - selfheight + end + + end + if modal then local tip = false @@ -158,7 +183,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function frame:draw() +function newobject:draw() local visible = self.visible @@ -201,7 +226,7 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function frame:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) local visible = self.visible @@ -215,6 +240,8 @@ function frame:mousepressed(x, y, button) local internals = self.internals local children = self.children local dragging = self.dragging + local parent = self.parent + local base = loveframes.base if selfcol then @@ -223,8 +250,13 @@ function frame:mousepressed(x, y, button) -- initiate dragging if not currently dragging if not dragging and top and button == "l" then if y < self.y + 25 and self.draggable then - self.clickx = x - self.x - self.clicky = y - self.y + if parent == base then + self.clickx = x - self.x + self.clicky = y - self.y + else + self.clickx = x - self.staticx + self.clicky = y - self.staticy + end self.dragging = true end end @@ -249,7 +281,7 @@ end - func: mousereleased(x, y, button) - desc: called when the player releases a mouse button --]]--------------------------------------------------------- -function frame:mousereleased(x, y, button) +function newobject:mousereleased(x, y, button) local visible = self.visible @@ -280,7 +312,7 @@ end - func: SetName(name) - desc: sets the frame's name --]]--------------------------------------------------------- -function frame:SetName(name) +function newobject:SetName(name) self.name = name @@ -290,7 +322,7 @@ end - func: GetName() - desc: gets the frame's name --]]--------------------------------------------------------- -function frame:GetName() +function newobject:GetName() return self.name @@ -300,7 +332,7 @@ end - func: SetDraggable(true/false) - desc: sets whether the frame can be dragged or not --]]--------------------------------------------------------- -function frame:SetDraggable(bool) +function newobject:SetDraggable(bool) self.draggable = bool @@ -310,7 +342,7 @@ end - func: GetDraggable() - desc: gets whether the frame can be dragged ot not --]]--------------------------------------------------------- -function frame:GetDraggable() +function newobject:GetDraggable() return self.draggable @@ -322,7 +354,7 @@ end - desc: sets whether the frame can be moved passed the boundaries of the window or not --]]--------------------------------------------------------- -function frame:SetScreenLocked(bool) +function newobject:SetScreenLocked(bool) self.screenlocked = bool @@ -333,7 +365,7 @@ end - desc: gets whether the frame can be moved passed the boundaries of window or not --]]--------------------------------------------------------- -function frame:GetScreenLocked() +function newobject:GetScreenLocked() return self.screenlocked @@ -343,7 +375,7 @@ end - func: ShowCloseButton(bool) - desc: sets whether the close button should be drawn --]]--------------------------------------------------------- -function frame:ShowCloseButton(bool) +function newobject:ShowCloseButton(bool) local close = self.internals[1] @@ -357,7 +389,7 @@ end - desc: makes the object the top object in the drawing order --]]--------------------------------------------------------- -function frame:MakeTop() +function newobject:MakeTop() local x, y = love.mouse.getPosition() local key = 0 @@ -402,7 +434,7 @@ end - desc: makes the object the top object in the drawing order --]]--------------------------------------------------------- -function frame:SetModal(bool) +function newobject:SetModal(bool) local modalobject = loveframes.modalobject local mbackground = self.modalbackground @@ -424,7 +456,7 @@ function frame:SetModal(bool) loveframes.modalobject = self if not mbackground then - self.modalbackground = modalbackground:new(self) + self.modalbackground = loveframes.objects["modalbackground"]:new(self) self.modal = true end @@ -451,7 +483,7 @@ end - desc: gets whether or not the object is in a modal state --]]--------------------------------------------------------- -function frame:GetModal() +function newobject:GetModal() return self.modal @@ -461,7 +493,7 @@ end - func: SetVisible(bool) - desc: set's whether the object is visible or not --]]--------------------------------------------------------- -function frame:SetVisible(bool) +function newobject:SetVisible(bool) local children = self.children local internals = self.internals @@ -477,4 +509,26 @@ function frame:SetVisible(bool) closebutton.visible = bool end +end + +--[[--------------------------------------------------------- + - func: SetParentLocked(bool) + - desc: sets whether the frame can be moved passed the + boundaries of it's parent or not +--]]--------------------------------------------------------- +function newobject:SetParentLocked(bool) + + self.parentlocked = bool + +end + +--[[--------------------------------------------------------- + - func: GetParentLocked(bool) + - desc: gets whether the frame can be moved passed the + boundaries of it's parent or not +--]]--------------------------------------------------------- +function newobject:GetParentLocked() + + return self.parentlocked + end \ No newline at end of file diff --git a/objects/image.lua b/objects/image.lua index 7b40dba..0b82e6c 100644 --- a/objects/image.lua +++ b/objects/image.lua @@ -4,13 +4,13 @@ --]]------------------------------------------------ -- progressbar class -image = class("image", base) +local newobject = loveframes.NewObject("image", "loveframes_object_image", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function image:initialize() +function newobject:initialize() self.type = "image" self.width = 0 @@ -32,7 +32,7 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function image:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -63,7 +63,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function image:draw() +function newobject:draw() local visible = self.visible @@ -95,7 +95,7 @@ end - func: SetImage(image) - desc: sets the object's image --]]--------------------------------------------------------- -function image:SetImage(image) +function newobject:SetImage(image) if type(image) == "string" then self.image = love.graphics.newImage(image) @@ -105,14 +105,14 @@ function image:SetImage(image) self.width = self.image:getWidth() self.height = self.image:getHeight() - + end --[[--------------------------------------------------------- - func: GetImage() - desc: gets the object's image --]]--------------------------------------------------------- -function image:GetImage() +function newobject:GetImage() return self.image @@ -122,7 +122,7 @@ end - func: SetColor(table) - desc: sets the object's color --]]--------------------------------------------------------- -function image:SetColor(data) +function newobject:SetColor(data) self.imagecolor = data @@ -132,7 +132,7 @@ end - func: GetColor() - desc: gets the object's color --]]--------------------------------------------------------- -function image:GetColor() +function newobject:GetColor() return self.imagecolor @@ -142,7 +142,7 @@ end - func: SetOrientation(orientation) - desc: sets the object's orientation --]]--------------------------------------------------------- -function image:SetOrientation(orientation) +function newobject:SetOrientation(orientation) self.orientation = orientation @@ -152,7 +152,7 @@ end - func: GetOrientation() - desc: gets the object's orientation --]]--------------------------------------------------------- -function image:GetOrientation() +function newobject:GetOrientation() return self.orientation @@ -162,7 +162,7 @@ end - func: SetScaleX(scalex) - desc: sets the object's x scale --]]--------------------------------------------------------- -function image:SetScaleX(scalex) +function newobject:SetScaleX(scalex) self.scalex = scalex @@ -172,7 +172,7 @@ end - func: GetScaleX() - desc: gets the object's x scale --]]--------------------------------------------------------- -function image:GetScaleX() +function newobject:GetScaleX() return self.scalex @@ -182,7 +182,7 @@ end - func: SetScaleY(scaley) - desc: sets the object's y scale --]]--------------------------------------------------------- -function image:SetScaleY(scaley) +function newobject:SetScaleY(scaley) self.scaley = scaley @@ -192,7 +192,7 @@ end - func: GetScaleY() - desc: gets the object's y scale --]]--------------------------------------------------------- -function image:GetScaleY() +function newobject:GetScaleY() return self.scaley @@ -202,7 +202,7 @@ end - func: SetScale(scalex, scaley) - desc: sets the object's x and y scale --]]--------------------------------------------------------- -function image:SetScale(scalex, scaley) +function newobject:SetScale(scalex, scaley) self.scalex = scalex self.scaley = scaley @@ -213,7 +213,7 @@ end - func: GetScale() - desc: gets the object's x and y scale --]]--------------------------------------------------------- -function image:GetScale() +function newobject:GetScale() return self.scalex, self.scaley @@ -223,7 +223,7 @@ end - func: SetOffsetX(x) - desc: sets the object's x offset --]]--------------------------------------------------------- -function image:SetOffsetX(x) +function newobject:SetOffsetX(x) self.offsetx = x @@ -233,7 +233,7 @@ end - func: GetOffsetX() - desc: gets the object's x offset --]]--------------------------------------------------------- -function image:GetOffsetX() +function newobject:GetOffsetX() return self.offsetx @@ -243,7 +243,7 @@ end - func: SetOffsetY(y) - desc: sets the object's y offset --]]--------------------------------------------------------- -function image:SetOffsetY(y) +function newobject:SetOffsetY(y) self.offsety = y @@ -253,7 +253,7 @@ end - func: GetOffsetY() - desc: gets the object's y offset --]]--------------------------------------------------------- -function image:GetOffsetY() +function newobject:GetOffsetY() return self.offsety @@ -263,7 +263,7 @@ end - func: SetOffset(x, y) - desc: sets the object's x and y offset --]]--------------------------------------------------------- -function image:SetOffset(x, y) +function newobject:SetOffset(x, y) self.offsetx = x self.offsety = y @@ -274,7 +274,7 @@ end - func: GetOffset() - desc: gets the object's x and y offset --]]--------------------------------------------------------- -function image:GetOffset() +function newobject:GetOffset() return self.offsetx, self.offsety @@ -284,7 +284,7 @@ end - func: SetShearX(shearx) - desc: sets the object's x shear --]]--------------------------------------------------------- -function image:SetShearX(shearx) +function newobject:SetShearX(shearx) self.shearx = shearx @@ -294,7 +294,7 @@ end - func: GetShearX() - desc: gets the object's x shear --]]--------------------------------------------------------- -function image:GetShearX() +function newobject:GetShearX() return self.shearx @@ -304,7 +304,7 @@ end - func: SetShearY(sheary) - desc: sets the object's y shear --]]--------------------------------------------------------- -function image:SetShearY(sheary) +function newobject:SetShearY(sheary) self.sheary = sheary @@ -314,7 +314,7 @@ end - func: GetShearY() - desc: gets the object's y shear --]]--------------------------------------------------------- -function image:GetShearY() +function newobject:GetShearY() return self.sheary @@ -324,7 +324,7 @@ end - func: SetShear(shearx, sheary) - desc: sets the object's x and y shear --]]--------------------------------------------------------- -function image:SetShear(shearx, sheary) +function newobject:SetShear(shearx, sheary) self.shearx = shearx self.sheary = sheary @@ -335,7 +335,7 @@ end - func: GetShear() - desc: gets the object's x and y shear --]]--------------------------------------------------------- -function image:GetShear() +function newobject:GetShear() return self.shearx, self.sheary diff --git a/objects/imagebutton.lua b/objects/imagebutton.lua index ac565d6..d1b5ec5 100644 --- a/objects/imagebutton.lua +++ b/objects/imagebutton.lua @@ -4,13 +4,13 @@ --]]------------------------------------------------ -- imagebutton class -imagebutton = class("imagebutton", base) +local newobject = loveframes.NewObject("imagebutton", "loveframes_object_imagebutton", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function imagebutton:initialize() +function newobject:initialize() self.type = "imagebutton" self.text = "Image Button" @@ -29,7 +29,7 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function imagebutton:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -77,7 +77,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function imagebutton:draw() +function newobject:draw() local visible = self.visible @@ -109,7 +109,7 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function imagebutton:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) local visible = self.visible @@ -138,7 +138,7 @@ end - func: mousereleased(x, y, button) - desc: called when the player releases a mouse button --]]--------------------------------------------------------- -function imagebutton:mousereleased(x, y, button) +function newobject:mousereleased(x, y, button) local visible = self.visible @@ -168,7 +168,7 @@ end - func: SetText(text) - desc: sets the object's text --]]--------------------------------------------------------- -function imagebutton:SetText(text) +function newobject:SetText(text) self.text = text @@ -178,7 +178,7 @@ end - func: GetText() - desc: gets the object's text --]]--------------------------------------------------------- -function imagebutton:GetText() +function newobject:GetText() return self.text @@ -188,7 +188,7 @@ end - func: SetClickable(bool) - desc: sets whether the object can be clicked or not --]]--------------------------------------------------------- -function imagebutton:SetClickable(bool) +function newobject:SetClickable(bool) self.clickable = bool @@ -198,7 +198,7 @@ end - func: GetClickable(bool) - desc: gets whether the object can be clicked or not --]]--------------------------------------------------------- -function imagebutton:GetClickable() +function newobject:GetClickable() return self.clickable @@ -208,7 +208,7 @@ end - func: SetClickable(bool) - desc: sets whether the object is enabled or not --]]--------------------------------------------------------- -function imagebutton:SetEnabled(bool) +function newobject:SetEnabled(bool) self.enabled = bool @@ -218,7 +218,7 @@ end - func: GetEnabled() - desc: gets whether the object is enabled or not --]]--------------------------------------------------------- -function imagebutton:GetEnabled() +function newobject:GetEnabled() return self.enabled @@ -228,7 +228,7 @@ end - func: SetImage(image) - desc: sets the object's image --]]--------------------------------------------------------- -function imagebutton:SetImage(image) +function newobject:SetImage(image) if type(image) == "string" then self.image = love.graphics.newImage(image) @@ -242,7 +242,7 @@ end - func: GetImage() - desc: gets whether the object is enabled or not --]]--------------------------------------------------------- -function imagebutton:GetImage() +function newobject:GetImage() return self.image @@ -252,7 +252,7 @@ end - func: SizeToImage() - desc: makes the object the same size as it's image --]]--------------------------------------------------------- -function imagebutton:SizeToImage() +function newobject:SizeToImage() local image = self.image diff --git a/objects/internal/closebutton.lua b/objects/internal/closebutton.lua index 6b195e8..403bde7 100644 --- a/objects/internal/closebutton.lua +++ b/objects/internal/closebutton.lua @@ -4,13 +4,13 @@ --]]------------------------------------------------ -- closebutton class -closebutton = class("closebutton", base) +local newobject = loveframes.NewObject("closebutton", "loveframes_object_closebutton", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function closebutton:initialize() +function newobject:initialize() self.type = "closebutton" self.width = 80 @@ -29,7 +29,7 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function closebutton:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -77,7 +77,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function closebutton:draw() +function newobject:draw() local visible = self.visible @@ -108,7 +108,7 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function closebutton:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) local visible = self.visible @@ -137,7 +137,7 @@ end - func: mousereleased(x, y, button) - desc: called when the player releases a mouse button --]]--------------------------------------------------------- -function closebutton:mousereleased(x, y, button) +function newobject:mousereleased(x, y, button) local visible = self.visible diff --git a/objects/internal/columnlist/columnlist-listarea.lua b/objects/internal/columnlist/columnlist-listarea.lua index 3ab6025..dd261f0 100644 --- a/objects/internal/columnlist/columnlist-listarea.lua +++ b/objects/internal/columnlist/columnlist-listarea.lua @@ -4,31 +4,33 @@ --]]------------------------------------------------ -- columnlistarea class -columnlistarea = class("columnlistarea", base) +local newobject = loveframes.NewObject("columnlistarea", "loveframes_object_columnlistarea", true) --[[--------------------------------------------------------- - func: initialize() - desc: intializes the element --]]--------------------------------------------------------- -function columnlistarea:initialize(parent) +function newobject:initialize(parent) - self.type = "columnlistarea" - self.display = "vertical" - self.parent = parent - self.width = 80 - self.height = 25 - self.clickx = 0 - self.clicky = 0 - self.offsety = 0 - self.offsetx = 0 - self.extrawidth = 0 - self.extraheight = 0 - self.rowcolorindex = 1 - self.rowcolorindexmax = 2 - self.bar = false - self.internal = true - self.internals = {} - self.children = {} + self.type = "columnlistarea" + self.display = "vertical" + self.parent = parent + self.width = 80 + self.height = 25 + self.clickx = 0 + self.clicky = 0 + self.offsety = 0 + self.offsetx = 0 + self.extrawidth = 0 + self.extraheight = 0 + self.rowcolorindex = 1 + self.rowcolorindexmax = 2 + self.buttonscrollamount = parent.buttonscrollamount + self.mousewheelscrollamount = parent.mousewheelscrollamount + self.bar = false + self.internal = true + self.internals = {} + self.children = {} -- apply template properties to the object loveframes.templates.ApplyToObject(self) @@ -39,7 +41,7 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function columnlistarea:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -86,7 +88,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function columnlistarea:draw() +function newobject:draw() local visible = self.visible @@ -142,11 +144,12 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function columnlistarea:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) - local toplist = self:IsTopList() - local internals = self.internals - local children = self.children + local toplist = self:IsTopList() + local scrollamount = self.mousewheelscrollamount + local internals = self.internals + local children = self.children if self.hover and button == "l" then @@ -163,9 +166,9 @@ function columnlistarea:mousepressed(x, y, button) local bar = self:GetScrollBar() if button == "wu" then - bar:Scroll(-5) + bar:Scroll(-scrollamount) elseif button == "wd" then - bar:Scroll(5) + bar:Scroll(scrollamount) end end @@ -184,7 +187,7 @@ end - func: mousereleased(x, y, button) - desc: called when the player releases a mouse button --]]--------------------------------------------------------- -function columnlistarea:mousereleased(x, y, button) +function newobject:mousereleased(x, y, button) local internals = self.internals local children = self.children @@ -203,7 +206,7 @@ end - func: CalculateSize() - desc: calculates the size of the object's children --]]--------------------------------------------------------- -function columnlistarea:CalculateSize() +function newobject:CalculateSize() local iw, ih = self.parent:GetColumnSize() local numitems = #self.children @@ -225,7 +228,7 @@ function columnlistarea:CalculateSize() self.extraheight = self.itemheight - height if not bar then - table.insert(self.internals, scrollbody:new(self, "vertical")) + table.insert(self.internals, loveframes.objects["scrollbody"]:new(self, "vertical")) self.bar = true self:GetScrollBar().autoscroll = self.parent.autoscroll end @@ -246,7 +249,7 @@ end - func: RedoLayout() - desc: used to redo the layour of the object --]]--------------------------------------------------------- -function columnlistarea:RedoLayout() +function newobject:RedoLayout() local children = self.children local starty = 0 @@ -285,9 +288,9 @@ end - func: AddRow(data) - desc: adds a row to the object --]]--------------------------------------------------------- -function columnlistarea:AddRow(data) +function newobject:AddRow(data) - local row = columnlistrow:new(self, data) + local row = loveframes.objects["columnlistrow"]:new(self, data) local colorindex = self.rowcolorindex local colorindexmax = self.rowcolorindexmax @@ -309,7 +312,7 @@ end - func: GetScrollBar() - desc: gets the object's scroll bar --]]--------------------------------------------------------- -function columnlistarea:GetScrollBar() +function newobject:GetScrollBar() local internals = self.internals @@ -328,7 +331,7 @@ end - func: Sort() - desc: sorts the object's children --]]--------------------------------------------------------- -function columnlistarea:Sort(column, desc) +function newobject:Sort(column, desc) self.rowcolorindex = 1 @@ -366,7 +369,7 @@ end - func: Clear() - desc: removes all items from the object's list --]]--------------------------------------------------------- -function columnlistarea:Clear() +function newobject:Clear() self.children = {} self:CalculateSize() diff --git a/objects/internal/columnlist/columnlist-row.lua b/objects/internal/columnlist/columnlist-row.lua index 5231add..81fbce6 100644 --- a/objects/internal/columnlist/columnlist-row.lua +++ b/objects/internal/columnlist/columnlist-row.lua @@ -4,13 +4,13 @@ --]]------------------------------------------------ -- columnlistrow class -columnlistrow = class("columnlistrow", base) +local newobject = loveframes.NewObject("columnlistrow", "loveframes_object_columnlistrow", true) --[[--------------------------------------------------------- - func: initialize() - desc: intializes the element --]]--------------------------------------------------------- -function columnlistrow:initialize(parent, data) +function newobject:initialize(parent, data) self.type = "columnlistrow" self.parent = parent @@ -32,7 +32,7 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function columnlistrow:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -65,7 +65,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function columnlistrow:draw() +function newobject:draw() local visible = self.visible @@ -97,7 +97,7 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function columnlistrow:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) if not self.visible then return @@ -119,7 +119,7 @@ end - func: mousereleased(x, y, button) - desc: called when the player releases a mouse button --]]--------------------------------------------------------- -function columnlistrow:mousereleased(x, y, button) +function newobject:mousereleased(x, y, button) if not self.visible then return @@ -143,7 +143,7 @@ end - func: SetTextPos(x, y) - desc: sets the positions of the object's text --]]--------------------------------------------------------- -function columnlistrow:SetTextPos(x, y) +function newobject:SetTextPos(x, y) self.textx = x self.texty = y @@ -154,7 +154,7 @@ end - func: GetTextX() - desc: gets the object's text x position --]]--------------------------------------------------------- -function columnlistrow:GetTextX() +function newobject:GetTextX() return self.textx @@ -164,7 +164,7 @@ end - func: GetTextY() - desc: gets the object's text y position --]]--------------------------------------------------------- -function columnlistrow:GetTextY() +function newobject:GetTextY() return self.texty @@ -174,7 +174,7 @@ end - func: SetFont(font) - desc: sets the object's font --]]--------------------------------------------------------- -function columnlistrow:SetFont(font) +function newobject:SetFont(font) self.font = font @@ -184,7 +184,7 @@ end - func: GetFont() - desc: gets the object's font --]]--------------------------------------------------------- -function columnlistrow:GetFont() +function newobject:GetFont() return self.font @@ -194,7 +194,7 @@ end - func: GetColorIndex() - desc: gets the object's color index --]]--------------------------------------------------------- -function columnlistrow:GetColorIndex() +function newobject:GetColorIndex() return self.colorindex @@ -204,7 +204,7 @@ end - func: GetColumnData() - desc: gets the object's column data --]]--------------------------------------------------------- -function columnlistrow:GetColumnData() +function newobject:GetColumnData() return self.columndata diff --git a/objects/internal/columnlist/coulmnlist-header.lua b/objects/internal/columnlist/coulmnlist-header.lua index 74a6b28..fd230a7 100644 --- a/objects/internal/columnlist/coulmnlist-header.lua +++ b/objects/internal/columnlist/coulmnlist-header.lua @@ -4,13 +4,13 @@ --]]------------------------------------------------ -- columnlistheader class -columnlistheader = class("columnlistheader", base) +local newobject = loveframes.NewObject("columnlistheader", "loveframes_object_columnlistheader", true) --[[--------------------------------------------------------- - func: initialize() - desc: intializes the element --]]--------------------------------------------------------- -function columnlistheader:initialize(name, parent) +function newobject:initialize(name, parent) self.type = "columnlistheader" self.parent = parent @@ -52,7 +52,7 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function columnlistheader:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -97,7 +97,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function columnlistheader:draw() +function newobject:draw() local visible = self.visible @@ -129,7 +129,7 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function columnlistheader:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) if self.hover and button == "l" then @@ -150,7 +150,7 @@ end - func: mousereleased(x, y, button) - desc: called when the player releases a mouse button --]]--------------------------------------------------------- -function columnlistheader:mousereleased(x, y, button) +function newobject:mousereleased(x, y, button) if not self.visible then return @@ -176,7 +176,7 @@ end - func: GetName() - desc: gets the object's name --]]--------------------------------------------------------- -function columnlistheader:GetName() +function newobject:GetName() return self.name diff --git a/objects/internal/linenumberspanel.lua b/objects/internal/linenumberspanel.lua index c7aed36..1f2d5ae 100644 --- a/objects/internal/linenumberspanel.lua +++ b/objects/internal/linenumberspanel.lua @@ -4,13 +4,13 @@ --]]------------------------------------------------ -- linenumberspanel class -linenumberspanel = class("linenumberspanel", base) +local newobject = loveframes.NewObject("linenumberspanel", "loveframes_object_linenumberspanel", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function linenumberspanel:initialize(parent) +function newobject:initialize(parent) self.parent = parent self.type = "linenumberspanel" @@ -30,7 +30,7 @@ end - func: update(deltatime) - desc: updates the element --]]--------------------------------------------------------- -function linenumberspanel:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -74,7 +74,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function linenumberspanel:draw() +function newobject:draw() local visible = self.visible @@ -116,7 +116,7 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function linenumberspanel:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) local visible = self.visible @@ -142,7 +142,7 @@ end - func: mousereleased(x, y, button) - desc: called when the player releases a mouse button --]]--------------------------------------------------------- -function linenumberspanel:mousereleased(x, y, button) +function newobject:mousereleased(x, y, button) local visible = self.visible @@ -156,7 +156,7 @@ end - func: GetOffsetY() - desc: gets the object's y offset --]]--------------------------------------------------------- -function linenumberspanel:GetOffsetY() +function newobject:GetOffsetY() return self.offsety diff --git a/objects/internal/modalbackground.lua b/objects/internal/modalbackground.lua index 1f2f56c..1a80468 100644 --- a/objects/internal/modalbackground.lua +++ b/objects/internal/modalbackground.lua @@ -4,13 +4,13 @@ --]]------------------------------------------------ -- modalbackground class -modalbackground = class("modalbackground", base) +local newobject = loveframes.NewObject("modalbackground", "loveframes_object_modalbackground", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function modalbackground:initialize(object) +function newobject:initialize(object) self.type = "modalbackground" self.width = love.graphics.getWidth() @@ -36,7 +36,7 @@ end - func: update(deltatime) - desc: updates the element --]]--------------------------------------------------------- -function modalbackground:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -74,7 +74,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function modalbackground:draw() +function newobject:draw() if not self.visible then return diff --git a/objects/internal/multichoice/multichoice-list.lua b/objects/internal/multichoice/multichoice-list.lua index dee21be..2977607 100644 --- a/objects/internal/multichoice/multichoice-list.lua +++ b/objects/internal/multichoice/multichoice-list.lua @@ -4,37 +4,39 @@ --]]------------------------------------------------ -- multichoicelist class -multichoicelist = class("multichoicelist", base) +local newobject = loveframes.NewObject("multichoicelist", "loveframes_object_multichoicelist", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function multichoicelist:initialize(object) +function newobject:initialize(object) - self.type = "multichoice-list" - self.parent = loveframes.base - self.list = object - self.x = object.x - self.y = object.y + self.list.height - self.width = self.list.width - self.height = 0 - self.clickx = 0 - self.clicky = 0 - self.padding = self.list.listpadding - self.spacing = self.list.listspacing - self.offsety = 0 - self.offsetx = 0 - self.extrawidth = 0 - self.extraheight = 0 - self.canremove = false - self.internal = true - self.vbar = false - self.children = {} - self.internals = {} + self.type = "multichoice-list" + self.parent = loveframes.base + self.list = object + self.x = object.x + self.y = object.y + self.list.height + self.width = self.list.width + self.height = 0 + self.clickx = 0 + self.clicky = 0 + self.padding = self.list.listpadding + self.spacing = self.list.listspacing + self.buttonscrollamount = object.buttonscrollamount + self.mousewheelscrollamount = object.mousewheelscrollamount + self.offsety = 0 + self.offsetx = 0 + self.extrawidth = 0 + self.extraheight = 0 + self.canremove = false + self.internal = true + self.vbar = false + self.children = {} + self.internals = {} for k, v in ipairs(object.choices) do - local row = multichoicerow:new() + local row = loveframes.objects["multichoicerow"]:new() row:SetText(v) self:AddItem(row) end @@ -50,7 +52,7 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function multichoicelist:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -114,7 +116,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function multichoicelist:draw() +function newobject:draw() local visible = self.visible @@ -170,7 +172,7 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function multichoicelist:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) local visible = self.visible @@ -182,6 +184,7 @@ function multichoicelist:mousepressed(x, y, button) local toplist = self:IsTopList() local internals = self.internals local children = self.children + local scrollamount = self.mousewheelscrollamount if not selfcol and self.canremove and button == "l" then self:Close() @@ -190,9 +193,9 @@ function multichoicelist:mousepressed(x, y, button) if self.vbar and toplist then if button == "wu" then - internals[1].internals[1].internals[1]:Scroll(-5) + internals[1].internals[1].internals[1]:Scroll(-scrollamount) elseif button == "wd" then - internals[1].internals[1].internals[1]:Scroll(5) + internals[1].internals[1].internals[1]:Scroll(scrollamount) end end @@ -211,7 +214,7 @@ end - func: mousereleased(x, y, button) - desc: called when the player releases a mouse button --]]--------------------------------------------------------- -function multichoicelist:mousereleased(x, y, button) +function newobject:mousereleased(x, y, button) local visible = self.visible @@ -238,7 +241,7 @@ end - func: AddItem(object) - desc: adds an item to the object --]]--------------------------------------------------------- -function multichoicelist:AddItem(object) +function newobject:AddItem(object) if object.type ~= "multichoice-row" then return @@ -257,7 +260,7 @@ end - func: RemoveItem(object) - desc: removes an item from the object --]]--------------------------------------------------------- -function multichoicelist:RemoveItem(object) +function newobject:RemoveItem(object) local children = self.children @@ -278,7 +281,7 @@ end - func: CalculateSize() - desc: calculates the size of the object's children --]]--------------------------------------------------------- -function multichoicelist:CalculateSize() +function newobject:CalculateSize() self.height = self.padding @@ -313,7 +316,7 @@ function multichoicelist:CalculateSize() self.extraheight = self.itemheight - height if not vbar then - local scroll = scrollbody:new(self, "vertical") + local scroll = loveframes.objects["scrollbody"]:new(self, "vertical") table.insert(self.internals, scroll) self.vbar = true end @@ -334,7 +337,7 @@ end - func: RedoLayout() - desc: used to redo the layour of the object --]]--------------------------------------------------------- -function multichoicelist:RedoLayout() +function newobject:RedoLayout() local children = self.children local padding = self.padding @@ -370,7 +373,7 @@ end - func: SetPadding(amount) - desc: sets the object's padding --]]--------------------------------------------------------- -function multichoicelist:SetPadding(amount) +function newobject:SetPadding(amount) self.padding = amount @@ -380,13 +383,13 @@ end - func: SetSpacing(amount) - desc: sets the object's spacing --]]--------------------------------------------------------- -function multichoicelist:SetSpacing(amount) +function newobject:SetSpacing(amount) self.spacing = amount end -function multichoicelist:Close() +function newobject:Close() self:Remove() self.list.haslist = false diff --git a/objects/internal/multichoice/multichoice-row.lua b/objects/internal/multichoice/multichoice-row.lua index 16fc1f4..2fcfde1 100644 --- a/objects/internal/multichoice/multichoice-row.lua +++ b/objects/internal/multichoice/multichoice-row.lua @@ -4,13 +4,13 @@ --]]------------------------------------------------ -- multichoicerow class -multichoicerow = class("multichoicerow", base) +local newobject = loveframes.NewObject("multichoicerow", "loveframes_object_multichoicerow", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function multichoicerow:initialize() +function newobject:initialize() self.type = "multichoice-row" self.text = "" @@ -30,7 +30,7 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function multichoicerow:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -75,7 +75,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function multichoicerow:draw() +function newobject:draw() local visible = self.visible @@ -106,7 +106,7 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function multichoicerow:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) local visible = self.visible @@ -129,7 +129,7 @@ end - func: mousereleased(x, y, button) - desc: called when the player releases a mouse button --]]--------------------------------------------------------- -function multichoicerow:mousereleased(x, y, button) +function newobject:mousereleased(x, y, button) local visible = self.visible @@ -152,7 +152,7 @@ end - func: keypressed(key) - desc: called when the player presses a key --]]--------------------------------------------------------- -function multichoicerow:keypressed(key, unicode) +function newobject:keypressed(key, unicode) local text = self.text local selectedobject = loveframes.selectedobject @@ -167,7 +167,7 @@ end - func: SetText(text) - desc: sets the object's text --]]--------------------------------------------------------- -function multichoicerow:SetText(text) +function newobject:SetText(text) self.text = text @@ -177,7 +177,7 @@ end - func: GetText() - desc: gets the object's text --]]--------------------------------------------------------- -function multichoicerow:GetText() +function newobject:GetText() return self.text diff --git a/objects/internal/scrollable/scrollarea.lua b/objects/internal/scrollable/scrollarea.lua index 770bab4..90f05ea 100644 --- a/objects/internal/scrollable/scrollarea.lua +++ b/objects/internal/scrollable/scrollarea.lua @@ -4,13 +4,13 @@ --]]------------------------------------------------ -- scrollarea class -scrollarea = class("scrollarea", base) +local newobject = loveframes.NewObject("scrollarea", "loveframes_object_scrollarea", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function scrollarea:initialize(parent, bartype) +function newobject:initialize(parent, bartype) self.type = "scroll-area" self.bartype = bartype @@ -23,7 +23,7 @@ function scrollarea:initialize(parent, bartype) self.internal = true self.internals = {} - table.insert(self.internals, scrollbar:new(self, bartype)) + table.insert(self.internals, loveframes.objects["scrollbar"]:new(self, bartype)) -- apply template properties to the object loveframes.templates.ApplyToObject(self) @@ -34,7 +34,7 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function scrollarea:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -123,7 +123,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function scrollarea:draw() +function newobject:draw() local visible = self.visible @@ -160,7 +160,7 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function scrollarea:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) local visible = self.visible @@ -213,7 +213,7 @@ end - func: mousereleased(x, y, button) - desc: called when the player releases a mouse button --]]--------------------------------------------------------- -function scrollarea:mousereleased(x, y, button) +function newobject:mousereleased(x, y, button) local visible = self.visible @@ -237,7 +237,7 @@ end - func: GetBarType() - desc: gets the object's bar type --]]--------------------------------------------------------- -function scrollarea:GetBarType() +function newobject:GetBarType() return self.bartype diff --git a/objects/internal/scrollable/scrollbar.lua b/objects/internal/scrollable/scrollbar.lua index 80b5872..b0cfd2b 100644 --- a/objects/internal/scrollable/scrollbar.lua +++ b/objects/internal/scrollable/scrollbar.lua @@ -4,13 +4,13 @@ --]]------------------------------------------------ -- scrollbar class -scrollbar = class("scrollbar", base) +local newobject = loveframes.NewObject("scrollbar", "loveframes_object_scrollbar", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function scrollbar:initialize(parent, bartype) +function newobject:initialize(parent, bartype) self.type = "scrollbar" self.bartype = bartype @@ -51,7 +51,7 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function scrollbar:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -193,7 +193,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function scrollbar:draw() +function newobject:draw() local visible = self.visible @@ -225,7 +225,7 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function scrollbar:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) local visible = self.visible local hover = self.hover @@ -267,7 +267,7 @@ end - func: mousereleased(x, y, button) - desc: called when the player releases a mouse button --]]--------------------------------------------------------- -function scrollbar:mousereleased(x, y, button) +function newobject:mousereleased(x, y, button) local visible = self.visible @@ -285,7 +285,7 @@ end - func: SetMaxX(x) - desc: sets the object's max x position --]]--------------------------------------------------------- -function scrollbar:SetMaxX(x) +function newobject:SetMaxX(x) self.maxx = x @@ -295,7 +295,7 @@ end - func: SetMaxY(y) - desc: sets the object's max y position --]]--------------------------------------------------------- -function scrollbar:SetMaxY(y) +function newobject:SetMaxY(y) self.maxy = y @@ -305,7 +305,7 @@ end - func: Scroll(amount) - desc: scrolls the object --]]--------------------------------------------------------- -function scrollbar:Scroll(amount) +function newobject:Scroll(amount) local bartype = self.bartype local listo = self.parent.parent.parent @@ -343,7 +343,7 @@ end - func: IsDragging() - desc: gets whether the object is being dragged or not --]]--------------------------------------------------------- -function scrollbar:IsDragging() +function newobject:IsDragging() return self.dragging @@ -353,7 +353,7 @@ end - func: GetBarType() - desc: gets the object's bartype --]]--------------------------------------------------------- -function scrollbar:GetBarType() +function newobject:GetBarType() return self.bartype diff --git a/objects/internal/scrollable/scrollbody.lua b/objects/internal/scrollable/scrollbody.lua index a7fb301..fe67373 100644 --- a/objects/internal/scrollable/scrollbody.lua +++ b/objects/internal/scrollable/scrollbody.lua @@ -4,13 +4,13 @@ --]]------------------------------------------------ -- scrollbar class -scrollbody = class("scrollbody", base) +local newobject = loveframes.NewObject("scrollbody", "loveframes_object_scrollbody", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function scrollbody:initialize(parent, bartype) +function newobject:initialize(parent, bartype) self.type = "scrollbody" self.bartype = bartype @@ -32,13 +32,13 @@ function scrollbody:initialize(parent, bartype) self.staticy = self.parent.height - self.height end - table.insert(self.internals, scrollarea:new(self, bartype)) + table.insert(self.internals, loveframes.objects["scrollarea"]:new(self, bartype)) local bar = self.internals[1].internals[1] if self.bartype == "vertical" then - local upbutton = scrollbutton:new("up") + local upbutton = loveframes.objects["scrollbutton"]:new("up") upbutton.parent = self upbutton.Update = function(object, dt) upbutton.staticx = 0 + self.width - upbutton.width @@ -48,7 +48,7 @@ function scrollbody:initialize(parent, bartype) end end - local downbutton = scrollbutton:new("down") + local downbutton = loveframes.objects["scrollbutton"]:new("down") downbutton.parent = self downbutton.Update = function(object, dt) downbutton.staticx = 0 + self.width - downbutton.width @@ -63,7 +63,7 @@ function scrollbody:initialize(parent, bartype) elseif self.bartype == "horizontal" then - local leftbutton = scrollbutton:new("left") + local leftbutton = loveframes.objects["scrollbutton"]:new("left") leftbutton.parent = self leftbutton.Update = function(object, dt) leftbutton.staticx = 0 @@ -73,7 +73,7 @@ function scrollbody:initialize(parent, bartype) end end - local rightbutton = scrollbutton:new("right") + local rightbutton = loveframes.objects["scrollbutton"]:new("right") rightbutton.parent = self rightbutton.Update = function(object, dt) rightbutton.staticx = 0 + self.width - rightbutton.width @@ -97,7 +97,7 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function scrollbody:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -135,7 +135,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function scrollbody:draw() +function newobject:draw() local visible = self.visible diff --git a/objects/internal/scrollable/scrollbutton.lua b/objects/internal/scrollable/scrollbutton.lua index 67a8c8c..c93ed7c 100644 --- a/objects/internal/scrollable/scrollbutton.lua +++ b/objects/internal/scrollable/scrollbutton.lua @@ -4,13 +4,13 @@ --]]------------------------------------------------ -- scrollbutton clas -scrollbutton = class("scrollbutton", base) +local newobject = loveframes.NewObject("scrollbutton", "loveframes_object_scrollbutton", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function scrollbutton:initialize(scrolltype) +function newobject:initialize(scrolltype) self.type = "scrollbutton" self.scrolltype = scrolltype @@ -29,7 +29,7 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function scrollbutton:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -75,7 +75,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function scrollbutton:draw() +function newobject:draw() local visible = self.visible @@ -107,7 +107,7 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function scrollbutton:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) local visible = self.visible @@ -136,7 +136,7 @@ end - func: mousereleased(x, y, button) - desc: called when the player releases a mouse button --]]--------------------------------------------------------- -function scrollbutton:mousereleased(x, y, button) +function newobject:mousereleased(x, y, button) local visible = self.visible @@ -164,7 +164,7 @@ end - func: SetText(text) - desc: sets the object's text --]]--------------------------------------------------------- -function scrollbutton:SetText(text) +function newobject:SetText(text) return @@ -175,7 +175,7 @@ end - func: GetScrollType() - desc: gets the object's scroll type --]]--------------------------------------------------------- -function scrollbutton:GetScrollType() +function newobject:GetScrollType() return self.scrolltype diff --git a/objects/internal/sliderbutton.lua b/objects/internal/sliderbutton.lua index eb61cbc..7b6b195 100644 --- a/objects/internal/sliderbutton.lua +++ b/objects/internal/sliderbutton.lua @@ -4,13 +4,13 @@ --]]------------------------------------------------ -- sliderbutton class -sliderbutton = class("sliderbutton", base) +local newobject = loveframes.NewObject("sliderbutton", "loveframes_object_sliderbutton", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function sliderbutton:initialize(parent) +function newobject:initialize(parent) self.type = "sliderbutton" self.width = 10 @@ -36,7 +36,7 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function sliderbutton:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -108,7 +108,6 @@ function sliderbutton:update(dt) end - -- if nvalue > self.parent.max then nvalue = self.parent.max end @@ -119,6 +118,10 @@ function sliderbutton:update(dt) self.parent.value = nvalue + if self.parent.value == -0 then + self.parent.value = math.abs(self.parent.value) + end + if nvalue ~= pvalue and nvalue >= self.parent.min and nvalue <= self.parent.max then if self.parent.OnValueChanged then self.parent.OnValueChanged(self.parent, self.parent.value) @@ -157,7 +160,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function sliderbutton:draw() +function newobject:draw() local visible = self.visible @@ -189,7 +192,7 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function sliderbutton:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) local visible = self.visible @@ -223,7 +226,7 @@ end - func: mousereleased(x, y, button) - desc: called when the player releases a mouse button --]]--------------------------------------------------------- -function sliderbutton:mousereleased(x, y, button) +function newobject:mousereleased(x, y, button) local visible = self.visible @@ -240,7 +243,7 @@ end - func: MoveToX(x) - desc: moves the object to the specified x position --]]--------------------------------------------------------- -function sliderbutton:MoveToX(x) +function newobject:MoveToX(x) self.staticx = x @@ -250,7 +253,7 @@ end - func: MoveToY(y) - desc: moves the object to the specified y position --]]--------------------------------------------------------- -function sliderbutton:MoveToY(y) +function newobject:MoveToY(y) self.staticy = y diff --git a/objects/internal/tabbutton.lua b/objects/internal/tabbutton.lua index 100465b..757cd6d 100644 --- a/objects/internal/tabbutton.lua +++ b/objects/internal/tabbutton.lua @@ -4,13 +4,13 @@ --]]------------------------------------------------ -- tabbutton class -tabbutton = class("tabbutton", base) +local newobject = loveframes.NewObject("tabbutton", "loveframes_object_tabbutton", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function tabbutton:initialize(parent, text, tabnumber, tip, image) +function newobject:initialize(parent, text, tabnumber, tip, image) self.type = "tabbutton" self.font = loveframes.smallfont @@ -26,7 +26,7 @@ function tabbutton:initialize(parent, text, tabnumber, tip, image) self.image = nil if tip then - self.tooltip = tooltip:new(self, tip) + self.tooltip = loveframes.objects["tooltip"]:new(self, tip) self.tooltip:SetFollowCursor(false) self.tooltip:SetOffsets(0, -5) end @@ -44,7 +44,7 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function tabbutton:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -78,7 +78,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function tabbutton:draw() +function newobject:draw() if not self.visible then return @@ -109,7 +109,7 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function tabbutton:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) local visible = self.visible @@ -138,7 +138,7 @@ end - func: mousereleased(x, y, button) - desc: called when the player releases a mouse button --]]--------------------------------------------------------- -function tabbutton:mousereleased(x, y, button) +function newobject:mousereleased(x, y, button) local visible = self.visible @@ -166,7 +166,7 @@ end - func: SetText(text) - desc: sets the object's text --]]--------------------------------------------------------- -function tabbutton:SetText(text) +function newobject:SetText(text) self.text = text @@ -176,7 +176,7 @@ end - func: GetText() - desc: gets the object's text --]]--------------------------------------------------------- -function tabbutton:GetText() +function newobject:GetText() return self.text @@ -186,7 +186,7 @@ end - func: SetImage(image) - desc: adds an image to the object --]]--------------------------------------------------------- -function tabbutton:SetImage(image) +function newobject:SetImage(image) if type(image) == "string" then self.image = love.graphics.newImage(image) @@ -200,7 +200,7 @@ end - func: GetImage() - desc: gets the object's image --]]--------------------------------------------------------- -function tabbutton:GetImage() +function newobject:GetImage() return self.image @@ -210,7 +210,7 @@ end - func: GetTabNumber() - desc: gets the object's tab number --]]--------------------------------------------------------- -function tabbutton:GetTabNumber() +function newobject:GetTabNumber() return self.tabnumber diff --git a/objects/internal/tooltip.lua b/objects/internal/tooltip.lua index a689fba..7702f8d 100644 --- a/objects/internal/tooltip.lua +++ b/objects/internal/tooltip.lua @@ -4,13 +4,13 @@ --]]------------------------------------------------ -- tooltip clas -tooltip = class("tooltip", base) +local newobject = loveframes.NewObject("tooltip", "loveframes_object_tooltip", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function tooltip:initialize(object, text, width) +function newobject:initialize(object, text, width) local width = width or 0 @@ -45,7 +45,7 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function tooltip:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -122,7 +122,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function tooltip:draw() +function newobject:draw() local visible = self.visible @@ -163,7 +163,7 @@ end - desc: sets whether or not the tooltip should follow the cursor --]]--------------------------------------------------------- -function tooltip:SetFollowCursor(bool) +function newobject:SetFollowCursor(bool) self.followcursor = bool @@ -173,7 +173,7 @@ end - func: SetObject(object) - desc: sets the tooltip's object --]]--------------------------------------------------------- -function tooltip:SetObject(object) +function newobject:SetObject(object) self.object = object @@ -183,7 +183,7 @@ end - func: SetText(text) - desc: sets the tooltip's text --]]--------------------------------------------------------- -function tooltip:SetText(text) +function newobject:SetText(text) self.text:SetText(text) self.text2 = text @@ -194,7 +194,7 @@ end - func: SetTextMaxWidth(text) - desc: sets the tooltip's text max width --]]--------------------------------------------------------- -function tooltip:SetTextMaxWidth(width) +function newobject:SetTextMaxWidth(width) self.text:SetMaxWidth(width) @@ -204,7 +204,7 @@ end - func: SetOffsets(xoffset, yoffset) - desc: sets the tooltip's x and y offset --]]--------------------------------------------------------- -function tooltip:SetOffsets(xoffset, yoffset) +function newobject:SetOffsets(xoffset, yoffset) self.xoffset = xoffset self.yoffset = yoffset @@ -215,7 +215,7 @@ end - func: SetPadding(padding) - desc: sets the tooltip's padding --]]--------------------------------------------------------- -function tooltip:SetPadding(padding) +function newobject:SetPadding(padding) self.padding = padding @@ -225,7 +225,7 @@ end - func: SetFont(font) - desc: sets the tooltip's font --]]--------------------------------------------------------- -function tooltip:SetFont(font) +function newobject:SetFont(font) self.text:SetFont(font) diff --git a/objects/list.lua b/objects/list.lua index f956832..fa3794e 100644 --- a/objects/list.lua +++ b/objects/list.lua @@ -4,13 +4,13 @@ --]]------------------------------------------------ -- list class -list = class("list", base) +local newobject = loveframes.NewObject("list", "loveframes_object_list", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function list:initialize() +function newobject:initialize() self.type = "list" self.display = "vertical" @@ -40,7 +40,7 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function list:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -95,7 +95,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function list:draw() +function newobject:draw() local visible = self.visible @@ -151,7 +151,7 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function list:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) local visible = self.visible @@ -207,7 +207,7 @@ end - func: AddItem(object) - desc: adds an item to the object --]]--------------------------------------------------------- -function list:AddItem(object) +function newobject:AddItem(object) if object.type == "frame" then return @@ -232,7 +232,7 @@ end - func: RemoveItem(object) - desc: removes an item from the object --]]--------------------------------------------------------- -function list:RemoveItem(object) +function newobject:RemoveItem(object) object:Remove() self:CalculateSize() @@ -244,7 +244,7 @@ end - func: CalculateSize() - desc: calculates the size of the object's children --]]--------------------------------------------------------- -function list:CalculateSize() +function newobject:CalculateSize() local numitems = #self.children local height = self.height @@ -274,7 +274,7 @@ function list:CalculateSize() self.extraheight = itemheight - height if not vbar then - local scrollbar = scrollbody:new(self, display) + local scrollbar = loveframes.objects["scrollbody"]:new(self, display) table.insert(internals, scrollbar) self.vbar = true self:GetScrollBar().autoscroll = self.autoscroll @@ -306,7 +306,7 @@ function list:CalculateSize() self.extrawidth = itemwidth - width if not hbar then - local scrollbar = scrollbody:new(self, display) + local scrollbar = loveframes.objects["scrollbody"]:new(self, display) table.insert(internals, scrollbar) self.hbar = true self:GetScrollBar().autoscroll = self.autoscroll @@ -331,7 +331,7 @@ end - func: RedoLayout() - desc: used to redo the layour of the object --]]--------------------------------------------------------- -function list:RedoLayout() +function newobject:RedoLayout() local children = self.children local padding = self.padding @@ -407,7 +407,7 @@ end - func: SetDisplayType(type) - desc: sets the object's display type --]]--------------------------------------------------------- -function list:SetDisplayType(type) +function newobject:SetDisplayType(type) local children = self.children local numchildren = #children @@ -430,7 +430,7 @@ end - func: GetDisplayType() - desc: gets the object's display type --]]--------------------------------------------------------- -function list:GetDisplayType() +function newobject:GetDisplayType() return self.display @@ -440,7 +440,7 @@ end - func: SetPadding(amount) - desc: sets the object's padding --]]--------------------------------------------------------- -function list:SetPadding(amount) +function newobject:SetPadding(amount) local children = self.children local numchildren = #children @@ -458,7 +458,7 @@ end - func: SetSpacing(amount) - desc: sets the object's spacing --]]--------------------------------------------------------- -function list:SetSpacing(amount) +function newobject:SetSpacing(amount) local children = self.children local numchildren = #children @@ -476,7 +476,7 @@ end - func: Clear() - desc: removes all of the object's children --]]--------------------------------------------------------- -function list:Clear() +function newobject:Clear() self.children = {} self:CalculateSize() @@ -488,7 +488,7 @@ end - func: SetWidth(width) - desc: sets the object's width --]]--------------------------------------------------------- -function list:SetWidth(width) +function newobject:SetWidth(width) self.width = width self:CalculateSize() @@ -500,7 +500,7 @@ end - func: SetHeight(height) - desc: sets the object's height --]]--------------------------------------------------------- -function list:SetHeight(height) +function newobject:SetHeight(height) self.height = height self:CalculateSize() @@ -512,7 +512,7 @@ end - func: GetSize() - desc: gets the object's size --]]--------------------------------------------------------- -function list:SetSize(width, height) +function newobject:SetSize(width, height) self.width = width self.height = height @@ -525,7 +525,7 @@ end - func: GetScrollBar() - desc: gets the object's scroll bar --]]--------------------------------------------------------- -function list:GetScrollBar() +function newobject:GetScrollBar() local vbar = self.vbar local hbar = self.hbar @@ -548,7 +548,7 @@ end auto scroll to the bottom when a new object is added to the list --]]--------------------------------------------------------- -function list:SetAutoScroll(bool) +function newobject:SetAutoScroll(bool) local scrollbar = self:GetScrollBar() @@ -565,7 +565,7 @@ end - desc: sets the scroll amount of the object's scrollbar buttons --]]--------------------------------------------------------- -function list:SetButtonScrollAmount(amount) +function newobject:SetButtonScrollAmount(amount) self.buttonscrollamount = amount @@ -576,7 +576,7 @@ end - desc: gets the scroll amount of the object's scrollbar buttons --]]--------------------------------------------------------- -function list:GetButtonScrollAmount() +function newobject:GetButtonScrollAmount() return self.buttonscrollamount @@ -586,7 +586,7 @@ end - func: SetMouseWheelScrollAmount(amount) - desc: sets the scroll amount of the mouse wheel --]]--------------------------------------------------------- -function list:SetMouseWheelScrollAmount(amount) +function newobject:SetMouseWheelScrollAmount(amount) self.mousewheelscrollamount = amount @@ -596,7 +596,7 @@ end - func: GetMouseWheelScrollAmount() - desc: gets the scroll amount of the mouse wheel --]]--------------------------------------------------------- -function list:GetButtonScrollAmount() +function newobject:GetButtonScrollAmount() return self.mousewheelscrollamount diff --git a/objects/multichoice.lua b/objects/multichoice.lua index 2e0e078..0ad2e85 100644 --- a/objects/multichoice.lua +++ b/objects/multichoice.lua @@ -4,25 +4,27 @@ --]]------------------------------------------------ -- multichoice class -multichoice = class("multichoice", base) +local newobject = loveframes.NewObject("multichoice", "loveframes_object_multichoice", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function multichoice:initialize() +function newobject:initialize() - self.type = "multichoice" - self.choice = "" - self.text = "Select an option" - self.width = 200 - self.height = 25 - self.listpadding = 0 - self.listspacing = 0 - self.haslist = false - self.internal = false - self.choices = {} - self.listheight = nil + self.type = "multichoice" + self.choice = "" + self.text = "Select an option" + self.width = 200 + self.height = 25 + self.listpadding = 0 + self.listspacing = 0 + self.buttonscrollamount = 0.10 + self.mousewheelscrollamount = 5 + self.haslist = false + self.internal = false + self.choices = {} + self.listheight = nil end @@ -30,7 +32,7 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function multichoice:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -63,7 +65,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function multichoice:draw() +function newobject:draw() local visible = self.visible @@ -95,7 +97,7 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function multichoice:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) local visible = self.visible @@ -115,7 +117,7 @@ function multichoice:mousepressed(x, y, button) end self.haslist = true - self.list = multichoicelist:new(self) + self.list = loveframes.objects["multichoicelist"]:new(self) loveframes.hoverobject = self end @@ -126,7 +128,7 @@ end - func: mousereleased(x, y, button) - desc: called when the player releases a mouse button --]]--------------------------------------------------------- -function multichoice:mousereleased(x, y, button) +function newobject:mousereleased(x, y, button) local visible = self.visible @@ -140,7 +142,7 @@ end - func: AddChoice(choice) - desc: adds a choice to the current list of choices --]]--------------------------------------------------------- -function multichoice:AddChoice(choice) +function newobject:AddChoice(choice) local choices = self.choices table.insert(choices, choice) @@ -151,7 +153,7 @@ end - func: SetChoice(choice) - desc: sets the current choice --]]--------------------------------------------------------- -function multichoice:SetChoice(choice) +function newobject:SetChoice(choice) self.choice = choice @@ -161,7 +163,7 @@ end - func: SelectChoice(choice) - desc: selects a choice --]]--------------------------------------------------------- -function multichoice:SelectChoice(choice) +function newobject:SelectChoice(choice) local onchoiceselected = self.OnChoiceSelected @@ -178,7 +180,7 @@ end - func: SetListHeight(height) - desc: sets the height of the list of choices --]]--------------------------------------------------------- -function multichoice:SetListHeight(height) +function newobject:SetListHeight(height) self.listheight = height @@ -188,7 +190,7 @@ end - func: SetPadding(padding) - desc: sets the padding of the list of choices --]]--------------------------------------------------------- -function multichoice:SetPadding(padding) +function newobject:SetPadding(padding) self.listpadding = padding @@ -198,7 +200,7 @@ end - func: SetSpacing(spacing) - desc: sets the spacing of the list of choices --]]--------------------------------------------------------- -function multichoice:SetSpacing(spacing) +function newobject:SetSpacing(spacing) self.listspacing = spacing @@ -208,7 +210,7 @@ end - func: GetValue() - desc: gets the value (choice) of the object --]]--------------------------------------------------------- -function multichoice:GetValue() +function newobject:GetValue() return self.choice @@ -218,7 +220,7 @@ end - func: GetChoice() - desc: gets the current choice (same as get value) --]]--------------------------------------------------------- -function multichoice:GetChoice() +function newobject:GetChoice() return self.choice @@ -228,7 +230,7 @@ end - func: SetText(text) - desc: sets the object's text --]]--------------------------------------------------------- -function multichoice:SetText(text) +function newobject:SetText(text) self.text = text @@ -238,8 +240,50 @@ end - func: GetText() - desc: gets the object's text --]]--------------------------------------------------------- -function multichoice:GetText() +function newobject:GetText() return self.text +end + +--[[--------------------------------------------------------- + - func: SetButtonScrollAmount(speed) + - desc: sets the scroll amount of the object's scrollbar + buttons +--]]--------------------------------------------------------- +function newobject:SetButtonScrollAmount(amount) + + self.buttonscrollamount = amount + +end + +--[[--------------------------------------------------------- + - func: GetButtonScrollAmount() + - desc: gets the scroll amount of the object's scrollbar + buttons +--]]--------------------------------------------------------- +function newobject:GetButtonScrollAmount() + + return self.buttonscrollamount + +end + +--[[--------------------------------------------------------- + - func: SetMouseWheelScrollAmount(amount) + - desc: sets the scroll amount of the mouse wheel +--]]--------------------------------------------------------- +function newobject:SetMouseWheelScrollAmount(amount) + + self.mousewheelscrollamount = amount + +end + +--[[--------------------------------------------------------- + - func: GetMouseWheelScrollAmount() + - desc: gets the scroll amount of the mouse wheel +--]]--------------------------------------------------------- +function newobject:GetButtonScrollAmount() + + return self.mousewheelscrollamount + end \ No newline at end of file diff --git a/objects/panel.lua b/objects/panel.lua index 286171e..b339f61 100644 --- a/objects/panel.lua +++ b/objects/panel.lua @@ -4,13 +4,13 @@ --]]------------------------------------------------ -- panel class -panel = class("panel", base) +local newobject = loveframes.NewObject("panel", "loveframes_object_panel", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function panel:initialize() +function newobject:initialize() self.type = "panel" self.width = 200 @@ -24,7 +24,7 @@ end - func: update(deltatime) - desc: updates the element --]]--------------------------------------------------------- -function panel:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -62,7 +62,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function panel:draw() +function newobject:draw() local visible = self.visible @@ -100,7 +100,7 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function panel:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) local visible = self.visible @@ -131,7 +131,7 @@ end - func: mousereleased(x, y, button) - desc: called when the player releases a mouse button --]]--------------------------------------------------------- -function panel:mousereleased(x, y, button) +function newobject:mousereleased(x, y, button) local visible = self.visible local children = self.children diff --git a/objects/progressbar.lua b/objects/progressbar.lua index 6a71567..9d47c44 100644 --- a/objects/progressbar.lua +++ b/objects/progressbar.lua @@ -4,13 +4,13 @@ --]]------------------------------------------------ -- progressbar class -progressbar = class("progressbar", base) +local newobject = loveframes.NewObject("progressbar", "loveframes_object_progressbar", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function progressbar:initialize() +function newobject:initialize() self.type = "progressbar" self.width = 100 @@ -34,7 +34,7 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function progressbar:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -125,7 +125,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function progressbar:draw() +function newobject:draw() local visible = self.visible @@ -157,7 +157,7 @@ end - func: SetMax(max) - desc: sets the object's maximum value --]]--------------------------------------------------------- -function progressbar:SetMax(max) +function newobject:SetMax(max) self.max = max @@ -167,7 +167,7 @@ end - func: GetMax() - desc: gets the object's maximum value --]]--------------------------------------------------------- -function progressbar:GetMax() +function newobject:GetMax() return self.max @@ -177,7 +177,7 @@ end - func: SetMin(min) - desc: sets the object's minimum value --]]--------------------------------------------------------- -function progressbar:SetMin(min) +function newobject:SetMin(min) self.min = min @@ -187,7 +187,7 @@ end - func: GetMin() - desc: gets the object's minimum value --]]--------------------------------------------------------- -function progressbar:GetMin() +function newobject:GetMin() return self.min @@ -197,7 +197,7 @@ end - func: SetMinMax() - desc: sets the object's minimum and maximum values --]]--------------------------------------------------------- -function progressbar:SetMinMax(min, max) +function newobject:SetMinMax(min, max) self.min = min self.max = max @@ -208,7 +208,7 @@ end - func: GetMinMax() - desc: gets the object's minimum and maximum values --]]--------------------------------------------------------- -function progressbar:GetMinMax() +function newobject:GetMinMax() return self.min, self.max @@ -218,7 +218,7 @@ end - func: SetValue(value) - desc: sets the object's value --]]--------------------------------------------------------- -function progressbar:SetValue(value) +function newobject:SetValue(value) local lerp = self.lerp @@ -237,7 +237,7 @@ end - func: GetValue() - desc: gets the object's value --]]--------------------------------------------------------- -function progressbar:GetValue() +function newobject:GetValue() return self.value @@ -248,7 +248,7 @@ end - desc: sets whether or not the object should lerp when changing between values --]]--------------------------------------------------------- -function progressbar:SetLerp(bool) +function newobject:SetLerp(bool) self.lerp = bool self.lerpto = self:GetValue() @@ -261,7 +261,7 @@ end - desc: gets whether or not the object should lerp when changing between values --]]--------------------------------------------------------- -function progressbar:GetLerp() +function newobject:GetLerp() return self.lerp @@ -271,7 +271,7 @@ end - func: SetLerpRate(rate) - desc: sets the object's lerp rate --]]--------------------------------------------------------- -function progressbar:SetLerpRate(rate) +function newobject:SetLerpRate(rate) self.lerprate = rate @@ -281,7 +281,7 @@ end - func: GetLerpRate() - desc: gets the object's lerp rate --]]--------------------------------------------------------- -function progressbar:GetLerpRate() +function newobject:GetLerpRate() return self.lerprate @@ -292,7 +292,7 @@ end - desc: gets whether or not the object has reached it's maximum value --]]--------------------------------------------------------- -function progressbar:GetCompleted() +function newobject:GetCompleted() return self.completed @@ -302,7 +302,7 @@ end - func: GetBarWidth() - desc: gets the object's bar width --]]--------------------------------------------------------- -function progressbar:GetBarWidth() +function newobject:GetBarWidth() return self.barwidth diff --git a/objects/slider.lua b/objects/slider.lua index f1a7b01..b28e964 100644 --- a/objects/slider.lua +++ b/objects/slider.lua @@ -4,13 +4,13 @@ --]]------------------------------------------------ -- slider class -slider = class("slider", base) +local newobject = loveframes.NewObject("slider", "loveframes_object_slider", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function slider:initialize() +function newobject:initialize() self.type = "slider" self.text = "Slider" @@ -26,7 +26,7 @@ function slider:initialize() self.OnValueChanged = nil -- create the slider button - table.insert(self.internals, sliderbutton:new(self)) + table.insert(self.internals, loveframes.objects["sliderbutton"]:new(self)) -- set initial value to minimum self:SetValue(self.min) @@ -37,7 +37,7 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function slider:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -85,7 +85,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function slider:draw() +function newobject:draw() local visible = self.visible @@ -123,7 +123,7 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function slider:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) local visible = self.visible @@ -182,7 +182,7 @@ end - func: SetValue(value) - desc: sets the object's value --]]--------------------------------------------------------- -function slider:SetValue(value) +function newobject:SetValue(value) if value > self.max then return @@ -228,7 +228,7 @@ end - func: GetValue() - desc: gets the object's value --]]--------------------------------------------------------- -function slider:GetValue() +function newobject:GetValue() return self.value @@ -238,7 +238,7 @@ end - func: SetMax(max) - desc: sets the object's maximum value --]]--------------------------------------------------------- -function slider:SetMax(max) +function newobject:SetMax(max) self.max = max @@ -252,7 +252,7 @@ end - func: GetMax() - desc: gets the object's maximum value --]]--------------------------------------------------------- -function slider:GetMax() +function newobject:GetMax() return self.max @@ -262,7 +262,7 @@ end - func: SetMin(min) - desc: sets the object's minimum value --]]--------------------------------------------------------- -function slider:SetMin(min) +function newobject:SetMin(min) self.min = min @@ -276,7 +276,7 @@ end - func: GetMin() - desc: gets the object's minimum value --]]--------------------------------------------------------- -function slider:GetMin() +function newobject:GetMin() return self.min @@ -286,7 +286,7 @@ end - func: SetMinMax() - desc: sets the object's minimum and maximum values --]]--------------------------------------------------------- -function slider:SetMinMax(min, max) +function newobject:SetMinMax(min, max) self.min = min self.max = max @@ -305,7 +305,7 @@ end - func: GetMinMax() - desc: gets the object's minimum and maximum values --]]--------------------------------------------------------- -function slider:GetMinMax() +function newobject:GetMinMax() return self.min, self.max @@ -315,7 +315,7 @@ end - func: SetText(name) - desc: sets the objects's text --]]--------------------------------------------------------- -function slider:SetText(text) +function newobject:SetText(text) self.text = text @@ -325,7 +325,7 @@ end - func: GetText() - desc: gets the objects's text --]]--------------------------------------------------------- -function slider:GetText() +function newobject:GetText() return self.text @@ -335,7 +335,7 @@ end - func: SetDecimals(decimals) - desc: sets the objects's decimals --]]--------------------------------------------------------- -function slider:SetDecimals(decimals) +function newobject:SetDecimals(decimals) self.decimals = decimals @@ -345,7 +345,7 @@ end - func: SetButtonSize(width, height) - desc: sets the objects's button size --]]--------------------------------------------------------- -function slider:SetButtonSize(width, height) +function newobject:SetButtonSize(width, height) local internals = self.internals local sliderbutton = internals[1] @@ -361,7 +361,7 @@ end - func: GetButtonSize() - desc: gets the objects's button size --]]--------------------------------------------------------- -function slider:GetButtonSize() +function newobject:GetButtonSize() local internals = self.internals local sliderbutton = internals[1] @@ -378,7 +378,7 @@ end - func: SetSlideType(slidetype) - desc: sets the objects's slide type --]]--------------------------------------------------------- -function slider:SetSlideType(slidetype) +function newobject:SetSlideType(slidetype) self.slidetype = slidetype @@ -392,7 +392,7 @@ end - func: GetSlideType() - desc: gets the objects's slide type --]]--------------------------------------------------------- -function slider:GetSlideType() +function newobject:GetSlideType() return self.slidetype diff --git a/objects/tabs.lua b/objects/tabs.lua index 82c6eec..77f2815 100644 --- a/objects/tabs.lua +++ b/objects/tabs.lua @@ -4,13 +4,13 @@ --]]------------------------------------------------ -- tabs class -tabs = class("tabpanel", base) +local newobject = loveframes.NewObject("tabs", "loveframes_object_tabs", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function tabs:initialize() +function newobject:initialize() self.type = "tabs" self.width = 100 @@ -36,7 +36,7 @@ end - func: update(deltatime) - desc: updates the element --]]--------------------------------------------------------- -function tabs:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -100,7 +100,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function tabs:draw() +function newobject:draw() local visible = self.visible @@ -149,7 +149,7 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function tabs:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) local visible = self.visible @@ -224,7 +224,7 @@ end - func: mousereleased(x, y, button) - desc: called when the player releases a mouse button --]]--------------------------------------------------------- -function tabs:mousereleased(x, y, button) +function newobject:mousereleased(x, y, button) local visible = self.visible local children = self.children @@ -250,7 +250,7 @@ end - func: AddTab(name, object, tip, image) - desc: adds a new tab to the tab panel --]]--------------------------------------------------------- -function tabs:AddTab(name, object, tip, image) +function newobject:AddTab(name, object, tip, image) local padding = self.padding local autosize = self.autosize @@ -264,7 +264,7 @@ function tabs:AddTab(name, object, tip, image) object.staticy = 0 table.insert(self.children, object) - internals[tabnumber] = tabbutton:new(self, name, tabnumber, tip, image) + internals[tabnumber] = loveframes.objects["tabbutton"]:new(self, name, tabnumber, tip, image) self.tabnumber = tabnumber + 1 for k, v in ipairs(internals) do @@ -285,7 +285,7 @@ end - desc: creates scroll buttons fot the tab panel - note: for internal use only --]]--------------------------------------------------------- -function tabs:AddScrollButtons() +function newobject:AddScrollButtons() local internals = self.internals @@ -295,7 +295,7 @@ function tabs:AddScrollButtons() end end - local leftbutton = scrollbutton:new("left") + local leftbutton = loveframes.objects["scrollbutton"]:new("left") leftbutton.parent = self leftbutton:SetPos(0, 0) leftbutton:SetSize(15, 25) @@ -316,7 +316,7 @@ function tabs:AddScrollButtons() end end - local rightbutton = scrollbutton:new("right") + local rightbutton = loveframes.objects["scrollbutton"]:new("right") rightbutton.parent = self rightbutton:SetPos(self.width - 15, 0) rightbutton:SetSize(15, 25) @@ -347,7 +347,7 @@ end - func: GetWidthOfButtons() - desc: gets the total width of all of the tab buttons --]]--------------------------------------------------------- -function tabs:GetWidthOfButtons() +function newobject:GetWidthOfButtons() local width = 0 local internals = self.internals @@ -366,7 +366,7 @@ end - func: GetHeightOfButtons() - desc: gets the height of one tab button --]]--------------------------------------------------------- -function tabs:GetHeightOfButtons() +function newobject:GetHeightOfButtons() return self.tabheight @@ -376,7 +376,7 @@ end - func: SwitchToTab(tabnumber) - desc: makes the specified tab the active tab --]]--------------------------------------------------------- -function tabs:SwitchToTab(tabnumber) +function newobject:SwitchToTab(tabnumber) local children = self.children @@ -393,7 +393,7 @@ end - func: SetScrollButtonSize(width, height) - desc: sets the size of the scroll buttons --]]--------------------------------------------------------- -function tabs:SetScrollButtonSize(width, height) +function newobject:SetScrollButtonSize(width, height) local internals = self.internals @@ -409,7 +409,7 @@ end - func: SetPadding(paddint) - desc: sets the padding for the tab panel --]]--------------------------------------------------------- -function tabs:SetPadding(padding) +function newobject:SetPadding(padding) self.padding = padding @@ -419,7 +419,7 @@ end - func: SetPadding(paddint) - desc: gets the padding of the tab panel --]]--------------------------------------------------------- -function tabs:GetPadding() +function newobject:GetPadding() return self.padding @@ -429,7 +429,7 @@ end - func: SetTabHeight(height) - desc: sets the height of the tab buttons --]]--------------------------------------------------------- -function tabs:SetTabHeight(height) +function newobject:SetTabHeight(height) local autosize = self.autosize local padding = self.padding @@ -463,7 +463,7 @@ end - func: SetToolTipFont(font) - desc: sets the height of the tab buttons --]]--------------------------------------------------------- -function tabs:SetToolTipFont(font) +function newobject:SetToolTipFont(font) local internals = self.internals @@ -479,7 +479,7 @@ end - func: GetTabNumber() - desc: gets the object's tab number --]]--------------------------------------------------------- -function tabs:GetTabNumber() +function newobject:GetTabNumber() return self.tab diff --git a/objects/text.lua b/objects/text.lua index bf98e3f..00dcc26 100644 --- a/objects/text.lua +++ b/objects/text.lua @@ -9,13 +9,13 @@ --]]------------------------------------------------ -- text class -text = class("text", base) +local newobject = loveframes.NewObject("text", "loveframes_object_text", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function text:initialize() +function newobject:initialize() self.type = "text" self.text = "" @@ -35,7 +35,7 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function text:update(dt) +function newobject:update(dt) if not self.visible then if not self.alwaysupdate then @@ -65,7 +65,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function text:draw() +function newobject:draw() if not self.visible then return @@ -97,7 +97,7 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function text:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) local visible = self.visible @@ -123,7 +123,7 @@ end - func: SetText(text) - desc: sets the object's text --]]--------------------------------------------------------- -function text:SetText(t) +function newobject:SetText(t) local dtype = type(t) local maxw = self.maxw @@ -311,7 +311,7 @@ end - func: GetText() - desc: gets the object's text --]]--------------------------------------------------------- -function text:GetText() +function newobject:GetText() return self.text @@ -321,7 +321,7 @@ end - func: GetFormattedText() - desc: gets the object's formatted text --]]--------------------------------------------------------- -function text:GetFormattedText() +function newobject:GetFormattedText() return self.formattedtext @@ -331,7 +331,7 @@ end - func: Format() - desc: formats the text --]]--------------------------------------------------------- -function text:DrawText() +function newobject:DrawText() local textdata = self.formattedtext local font = self.font @@ -363,7 +363,7 @@ end - func: SetMaxWidth(width) - desc: sets the object's maximum width --]]--------------------------------------------------------- -function text:SetMaxWidth(width) +function newobject:SetMaxWidth(width) self.maxw = width self:SetText(self.original) @@ -374,7 +374,7 @@ end - func: GetMaxWidth() - desc: gets the object's maximum width --]]--------------------------------------------------------- -function text:GetMaxWidth() +function newobject:GetMaxWidth() return self.maxw @@ -384,7 +384,7 @@ end - func: SetWidth(width) - desc: sets the object's width --]]--------------------------------------------------------- -function text:SetWidth(width) +function newobject:SetWidth(width) self:SetMaxWidth(width) @@ -394,7 +394,7 @@ end - func: SetHeight() - desc: sets the object's height --]]--------------------------------------------------------- -function text:SetHeight(height) +function newobject:SetHeight(height) return @@ -404,7 +404,7 @@ end - func: SetSize() - desc: sets the object's size --]]--------------------------------------------------------- -function text:SetSize(width, height) +function newobject:SetSize(width, height) self:SetMaxWidth(width) @@ -415,7 +415,7 @@ end - desc: sets the object's font - note: font argument must be a font object --]]--------------------------------------------------------- -function text:SetFont(font) +function newobject:SetFont(font) local original = self.original @@ -431,7 +431,7 @@ end - func: GetFont() - desc: gets the object's font --]]--------------------------------------------------------- -function text:GetFont() +function newobject:GetFont() return self.font @@ -441,7 +441,7 @@ end - func: GetLines() - desc: gets the number of lines the object's text uses --]]--------------------------------------------------------- -function text:GetLines() +function newobject:GetLines() return self.lines @@ -451,7 +451,7 @@ end - func: SetIgnoreNewlines(bool) - desc: sets whether the object should ignore \n or not --]]--------------------------------------------------------- -function text:SetIgnoreNewlines(bool) +function newobject:SetIgnoreNewlines(bool) self.ignorenewlines = bool @@ -461,7 +461,7 @@ end - func: GetIgnoreNewlines() - desc: gets whether the object should ignore \n or not --]]--------------------------------------------------------- -function text:GetIgnoreNewlines() +function newobject:GetIgnoreNewlines() return self.ignorenewlines diff --git a/objects/textinput.lua b/objects/textinput.lua index 4261b76..0306498 100644 --- a/objects/textinput.lua +++ b/objects/textinput.lua @@ -4,59 +4,61 @@ --]]------------------------------------------------ -- textinput class -textinput = class("textinput", base) +local newobject = loveframes.NewObject("textinput", "loveframes_object_textinput", true) --[[--------------------------------------------------------- - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- -function textinput:initialize() +function newobject:initialize() - self.type = "textinput" - self.keydown = "none" - self.tabreplacement = " " - self.font = loveframes.basicfont - self.width = 200 - self.height = 25 - self.delay = 0 - self.offsetx = 0 - self.offsety = 0 - self.indincatortime = 0 - self.indicatornum = 0 - self.indicatorx = 0 - self.indicatory = 0 - self.textx = 0 - self.texty = 0 - self.textoffsetx = 5 - self.textoffsety = 5 - self.unicode = 0 - self.limit = 0 - self.line = 1 - self.itemwidth = 0 - self.itemheight = 0 - self.extrawidth = 0 - self.extraheight = 0 - self.rightpadding = 0 - self.bottompadding = 0 - self.lastclicktime = 0 - self.maxx = 0 - self.usable = {} - self.unusable = {} - self.lines = {""} - self.internals = {} - self.showindicator = true - self.focus = false - self.multiline = false - self.vbar = false - self.hbar = false - self.alltextselected = false - self.linenumbers = true - self.linenumberspanel = false - self.editable = true - self.internal = false - self.OnEnter = nil - self.OnTextChanged = nil + self.type = "textinput" + self.keydown = "none" + self.tabreplacement = " " + self.font = loveframes.basicfont + self.width = 200 + self.height = 25 + self.delay = 0 + self.offsetx = 0 + self.offsety = 0 + self.indincatortime = 0 + self.indicatornum = 0 + self.indicatorx = 0 + self.indicatory = 0 + self.textx = 0 + self.texty = 0 + self.textoffsetx = 5 + self.textoffsety = 5 + self.unicode = 0 + self.limit = 0 + self.line = 1 + self.itemwidth = 0 + self.itemheight = 0 + self.extrawidth = 0 + self.extraheight = 0 + self.rightpadding = 0 + self.bottompadding = 0 + self.lastclicktime = 0 + self.maxx = 0 + self.buttonscrollamount = 0.10 + self.mousewheelscrollamount = 5 + self.usable = {} + self.unusable = {} + self.lines = {""} + self.internals = {} + self.showindicator = true + self.focus = false + self.multiline = false + self.vbar = false + self.hbar = false + self.alltextselected = false + self.linenumbers = true + self.linenumberspanel = false + self.editable = true + self.internal = false + self.OnEnter = nil + self.OnTextChanged = nil end @@ -64,7 +66,7 @@ end - func: update(deltatime) - desc: updates the object --]]--------------------------------------------------------- -function textinput:update(dt) +function newobject:update(dt) local visible = self.visible local alwaysupdate = self.alwaysupdate @@ -156,7 +158,7 @@ function textinput:update(dt) if itemheight > height then if not vbar then - local scrollbody = scrollbody:new(self, "vertical") + local scrollbody = loveframes.objects["scrollbody"]:new(self, "vertical") scrollbody.internals[1].internals[1].autoscroll = false table.insert(self.internals, scrollbody) self.vbar = true @@ -181,7 +183,7 @@ function textinput:update(dt) if itemwidth > width then if not hbar then - local scrollbody = scrollbody:new(self, "horizontal") + local scrollbody = loveframes.objects["scrollbody"]:new(self, "horizontal") scrollbody.internals[1].internals[1].autoscroll = false table.insert(self.internals, scrollbody) self.hbar = true @@ -208,7 +210,7 @@ function textinput:update(dt) if self.linenumbers then if not self.linenumberspanel then - local linenumberspanel = linenumberspanel:new(self) + local linenumberspanel = loveframes.objects["linenumberspanel"]:new(self) table.insert(self.internals, linenumberspanel) self.linenumberspanel = true end @@ -235,7 +237,7 @@ end - func: draw() - desc: draws the object --]]--------------------------------------------------------- -function textinput:draw() +function newobject:draw() local visible = self.visible @@ -289,7 +291,7 @@ end - func: mousepressed(x, y, button) - desc: called when the player presses a mouse button --]]--------------------------------------------------------- -function textinput:mousepressed(x, y, button) +function newobject:mousepressed(x, y, button) local visible = self.visible @@ -302,6 +304,7 @@ function textinput:mousepressed(x, y, button) local internals = self.internals local vbar = self.vbar local hbar = self.hbar + local scrollamount = self.mousewheelscrollamount if hover and button == "l" then @@ -336,24 +339,24 @@ function textinput:mousepressed(x, y, button) if button == "wu" then if vbar and not hbar then local vbar = self:GetVerticalScrollBody().internals[1].internals[1] - vbar:Scroll(-5) + vbar:Scroll(-scrollamount) elseif vbar and hbar then local vbar = self:GetVerticalScrollBody().internals[1].internals[1] - vbar:Scroll(-5) + vbar:Scroll(-scrollamount) elseif not vbar and hbar then local hbar = self:GetHorizontalScrollBody().internals[1].internals[1] - hbar:Scroll(-5) + hbar:Scroll(-scrollamount) end elseif button == "wd" then if vbar and not hbar then local vbar = self:GetVerticalScrollBody().internals[1].internals[1] - vbar:Scroll(5) + vbar:Scroll(scrollamount) elseif vbar and hbar then local vbar = self:GetVerticalScrollBody().internals[1].internals[1] - vbar:Scroll(5) + vbar:Scroll(scrollamount) elseif not vbar and hbar then local hbar = self:GetHorizontalScrollBody().internals[1].internals[1] - hbar:Scroll(5) + hbar:Scroll(scrollamount) end end end @@ -368,7 +371,7 @@ end - func: mousereleased(x, y, button) - desc: called when the player releases a mouse button --]]--------------------------------------------------------- -function textinput:mousereleased(x, y, button) +function newobject:mousereleased(x, y, button) local visible = self.visible @@ -388,7 +391,7 @@ end - func: keypressed(key) - desc: called when the player presses a key --]]--------------------------------------------------------- -function textinput:keypressed(key, unicode) +function newobject:keypressed(key, unicode) local visible = self.visible @@ -418,7 +421,7 @@ end - func: keyreleased(key) - desc: called when the player releases a key --]]--------------------------------------------------------- -function textinput:keyreleased(key) +function newobject:keyreleased(key) local visible = self.visible @@ -434,7 +437,7 @@ end - func: RunKey(key, unicode) - desc: runs a key event on the object --]]--------------------------------------------------------- -function textinput:RunKey(key, unicode) +function newobject:RunKey(key, unicode) local visible = self.visible local focus = self.focus @@ -730,7 +733,7 @@ end - func: MoveIndicator(num, exact) - desc: moves the object's indicator --]]--------------------------------------------------------- -function textinput:MoveIndicator(num, exact) +function newobject:MoveIndicator(num, exact) local lines = self.lines local line = self.line @@ -761,7 +764,7 @@ end - desc: updates the object's text insertion position indicator --]]--------------------------------------------------------- -function textinput:UpdateIndicator() +function newobject:UpdateIndicator() local time = love.timer.getTime() local indincatortime = self.indincatortime @@ -808,7 +811,7 @@ end - desc: adds text into the object's text a given position --]]--------------------------------------------------------- -function textinput:AddIntoText(t, p) +function newobject:AddIntoText(t, p) local lines = self.lines local line = self.line @@ -827,7 +830,7 @@ end - desc: removes text from the object's text a given position --]]--------------------------------------------------------- -function textinput:RemoveFromeText(p) +function newobject:RemoveFromeText(p) local lines = self.lines local line = self.line @@ -846,7 +849,7 @@ end - func: GetTextCollisions(x, y) - desc: gets text collisions with the mouse --]]--------------------------------------------------------- -function textinput:GetTextCollisions(x, y) +function newobject:GetTextCollisions(x, y) local font = self.font local lines = self.lines @@ -957,7 +960,7 @@ end - func: PositionText() - desc: positions the object's text --]]--------------------------------------------------------- -function textinput:PositionText() +function newobject:PositionText() local multiline = self.multiline local x = self.x @@ -988,7 +991,7 @@ end - func: SetTextOffsetX(num) - desc: sets the object's text x offset --]]--------------------------------------------------------- -function textinput:SetTextOffsetX(num) +function newobject:SetTextOffsetX(num) self.textoffsetx = num @@ -998,7 +1001,7 @@ end - func: SetTextOffsetY(num) - desc: sets the object's text y offset --]]--------------------------------------------------------- -function textinput:SetTextOffsetY(num) +function newobject:SetTextOffsetY(num) self.textoffsety = num @@ -1008,7 +1011,7 @@ end - func: SetFont(font) - desc: sets the object's font --]]--------------------------------------------------------- -function textinput:SetFont(font) +function newobject:SetFont(font) self.font = font @@ -1018,7 +1021,7 @@ end - func: GetFont() - desc: gets the object's font --]]--------------------------------------------------------- -function textinput:GetFont() +function newobject:GetFont() return self.font @@ -1028,7 +1031,7 @@ end - func: SetFocus(focus) - desc: sets the object's focus --]]--------------------------------------------------------- -function textinput:SetFocus(focus) +function newobject:SetFocus(focus) self.focus = focus @@ -1038,7 +1041,7 @@ end - func: GetFocus() - desc: gets the object's focus --]]--------------------------------------------------------- -function textinput:GetFocus() +function newobject:GetFocus() return self.focus @@ -1048,7 +1051,7 @@ end - func: GetIndicatorVisibility() - desc: gets the object's indicator visibility --]]--------------------------------------------------------- -function textinput:GetIndicatorVisibility() +function newobject:GetIndicatorVisibility() return self.showindicator @@ -1058,7 +1061,7 @@ end - func: SetLimit(limit) - desc: sets the object's text limit --]]--------------------------------------------------------- -function textinput:SetLimit(limit) +function newobject:SetLimit(limit) self.limit = limit @@ -1069,7 +1072,7 @@ end - desc: sets what characters can be used for the object's text --]]--------------------------------------------------------- -function textinput:SetUsable(usable) +function newobject:SetUsable(usable) self.usable = usable @@ -1080,7 +1083,7 @@ end - desc: gets what characters can be used for the object's text --]]--------------------------------------------------------- -function textinput:GetUsable() +function newobject:GetUsable() return self.usable @@ -1091,7 +1094,7 @@ end - desc: sets what characters can not be used for the object's text --]]--------------------------------------------------------- -function textinput:SetUnusable(unusable) +function newobject:SetUnusable(unusable) self.unusable = unusable @@ -1102,7 +1105,7 @@ end - desc: gets what characters can not be used for the object's text --]]--------------------------------------------------------- -function textinput:GetUnusable() +function newobject:GetUnusable() return self.unusable @@ -1112,7 +1115,7 @@ end - func: Clear() - desc: clears the object's text --]]--------------------------------------------------------- -function textinput:Clear() +function newobject:Clear() self.lines = {""} self.line = 1 @@ -1126,7 +1129,7 @@ end - func: SetText(text) - desc: sets the object's text --]]--------------------------------------------------------- -function textinput:SetText(text) +function newobject:SetText(text) local tabreplacement = self.tabreplacement local multiline = self.multiline @@ -1158,7 +1161,7 @@ end - func: GetText() - desc: gets the object's text --]]--------------------------------------------------------- -function textinput:GetText() +function newobject:GetText() local multiline = self.multiline local lines = self.lines @@ -1181,7 +1184,7 @@ end - desc: enables or disables allowing multiple lines for text entry --]]--------------------------------------------------------- -function textinput:SetMultiline(bool) +function newobject:SetMultiline(bool) local text = "" local lines = self.lines @@ -1208,7 +1211,7 @@ end - desc: gets whether or not the object is using multiple lines --]]--------------------------------------------------------- -function textinput:GetMultiLine() +function newobject:GetMultiLine() return self.multiline @@ -1218,7 +1221,7 @@ end - func: GetVerticalScrollBody() - desc: gets the object's vertical scroll body --]]--------------------------------------------------------- -function textinput:GetVerticalScrollBody() +function newobject:GetVerticalScrollBody() local vbar = self.vbar local internals = self.internals @@ -1240,7 +1243,7 @@ end - func: GetHorizontalScrollBody() - desc: gets the object's horizontal scroll body --]]--------------------------------------------------------- -function textinput:GetHorizontalScrollBody() +function newobject:GetHorizontalScrollBody() local hbar = self.hbar local internals = self.internals @@ -1263,7 +1266,7 @@ end - desc: gets whether or not the object has a vertical scroll bar --]]--------------------------------------------------------- -function textinput:HasVerticalScrollBar() +function newobject:HasVerticalScrollBar() return self.vbar @@ -1274,7 +1277,7 @@ end - desc: gets whether or not the object has a horizontal scroll bar --]]--------------------------------------------------------- -function textinput:HasHorizontalScrollBar() +function newobject:HasHorizontalScrollBar() return self.hbar @@ -1284,7 +1287,7 @@ end - func: GetLineNumbersPanel() - desc: gets the object's line numbers panel --]]--------------------------------------------------------- -function textinput:GetLineNumbersPanel() +function newobject:GetLineNumbersPanel() local panel = self.linenumberspanel local internals = self.internals @@ -1307,7 +1310,7 @@ end - desc: sets whether or not to show line numbers when using multiple lines --]]--------------------------------------------------------- -function textinput:ShowLineNumbers(bool) +function newobject:ShowLineNumbers(bool) local multiline = self.multiline @@ -1321,7 +1324,7 @@ end - func: GetTextX() - desc: gets the object's text x --]]--------------------------------------------------------- -function textinput:GetTextX() +function newobject:GetTextX() return self.textx @@ -1331,7 +1334,7 @@ end - func: GetTextY() - desc: gets the object's text y --]]--------------------------------------------------------- -function textinput:GetTextY() +function newobject:GetTextY() return self.texty @@ -1342,7 +1345,7 @@ end - desc: gets whether or not all of the object's text is selected --]]--------------------------------------------------------- -function textinput:IsAllTextSelected() +function newobject:IsAllTextSelected() return self.alltextselected @@ -1352,7 +1355,7 @@ end - func: GetLines() - desc: gets the object's lines --]]--------------------------------------------------------- -function textinput:GetLines() +function newobject:GetLines() return self.lines @@ -1362,7 +1365,7 @@ end - func: GetOffsetX() - desc: gets the object's x offset --]]--------------------------------------------------------- -function textinput:GetOffsetX() +function newobject:GetOffsetX() return self.offsetx @@ -1372,7 +1375,7 @@ end - func: GetOffsetY() - desc: gets the object's y offset --]]--------------------------------------------------------- -function textinput:GetOffsetY() +function newobject:GetOffsetY() return self.offsety @@ -1382,7 +1385,7 @@ end - func: GetIndicatorX() - desc: gets the object's indicator's xpos --]]--------------------------------------------------------- -function textinput:GetIndicatorX() +function newobject:GetIndicatorX() return self.indicatorx @@ -1392,7 +1395,7 @@ end - func: GetIndicatorY() - desc: gets the object's indicator's ypos --]]--------------------------------------------------------- -function textinput:GetIndicatorY() +function newobject:GetIndicatorY() return self.indicatory @@ -1403,7 +1406,7 @@ end - desc: gets whether line numbers are enabled on the object or not --]]--------------------------------------------------------- -function textinput:GetLineNumbersEnabled() +function newobject:GetLineNumbersEnabled() return self.linenumbers @@ -1413,7 +1416,7 @@ end - func: GetItemWidth() - desc: gets the object's item width --]]--------------------------------------------------------- -function textinput:GetItemWidth() +function newobject:GetItemWidth() return self.itemwidth @@ -1423,7 +1426,7 @@ end - func: GetItemHeight() - desc: gets the object's item height --]]--------------------------------------------------------- -function textinput:GetItemHeight() +function newobject:GetItemHeight() return self.itemheight @@ -1433,7 +1436,7 @@ end - func: SetTabReplacement(tabreplacement) - desc: sets a string to replace tabs with --]]--------------------------------------------------------- -function textinput:SetTabReplacement(tabreplacement) +function newobject:SetTabReplacement(tabreplacement) self.tabreplacement = tabreplacement @@ -1443,7 +1446,7 @@ end - func: GetTabReplacement() - desc: gets the object's tab replacement --]]--------------------------------------------------------- -function textinput:GetTabReplacement() +function newobject:GetTabReplacement() return self.tabreplacement @@ -1454,7 +1457,7 @@ end - desc: sets whether or not the user can edit the object's text --]]--------------------------------------------------------- -function textinput:SetEditable(bool) +function newobject:SetEditable(bool) self.editable = bool @@ -1465,8 +1468,50 @@ end - desc: gets whether or not the user can edit the object's text --]]--------------------------------------------------------- -function textinput:GetEditable() +function newobject:GetEditable() return self.editable +end + +--[[--------------------------------------------------------- + - func: SetButtonScrollAmount(speed) + - desc: sets the scroll amount of the object's scrollbar + buttons +--]]--------------------------------------------------------- +function newobject:SetButtonScrollAmount(amount) + + self.buttonscrollamount = amount + +end + +--[[--------------------------------------------------------- + - func: GetButtonScrollAmount() + - desc: gets the scroll amount of the object's scrollbar + buttons +--]]--------------------------------------------------------- +function newobject:GetButtonScrollAmount() + + return self.buttonscrollamount + +end + +--[[--------------------------------------------------------- + - func: SetMouseWheelScrollAmount(amount) + - desc: sets the scroll amount of the mouse wheel +--]]--------------------------------------------------------- +function newobject:SetMouseWheelScrollAmount(amount) + + self.mousewheelscrollamount = amount + +end + +--[[--------------------------------------------------------- + - func: GetMouseWheelScrollAmount() + - desc: gets the scroll amount of the mouse wheel +--]]--------------------------------------------------------- +function newobject:GetButtonScrollAmount() + + return self.mousewheelscrollamount + end \ No newline at end of file diff --git a/readme.md b/readme.md index c5942eb..01c3e00 100644 --- a/readme.md +++ b/readme.md @@ -2,7 +2,7 @@ ## Information -Love Frames is a GUI library for LÖVE. For information on installation and usage, please visit the wiki. A demo of the library can be found at: http://nikolairesokav.com/projects/loveframes/ +Love Frames is a GUI library for [LOVE](https://love2d.org/). For information on installation and usage, please visit the wiki. A demo of the library can be found at: http://nikolairesokav.com/projects/loveframes/ ## License diff --git a/skins/Blue/skin.lua b/skins/Blue/skin.lua index d375b06..58114a9 100644 --- a/skins/Blue/skin.lua +++ b/skins/Blue/skin.lua @@ -20,7 +20,7 @@ skin.controls = {} -- frame skin.controls.frame_border_color = bordercolor -skin.controls.frame_body_color = {255, 255, 255, 150} +skin.controls.frame_body_color = {232, 232, 232, 255} skin.controls.frame_top_color = {102, 194, 255, 255} skin.controls.frame_name_color = {255, 255, 255, 255} skin.controls.frame_name_font = smallfont @@ -399,8 +399,10 @@ function skin.DrawCloseButton(object) local x = object:GetX() local y = object:GetY() + local staticx = object:GetStaticX() local width = object:GetWidth() local height = object:GetHeight() + local parentwidth = object.parent:GetWidth() local index = loveframes.config["ACTIVESKIN"] local font = skin.controls.button_text_font local twidth = font:getWidth("X") @@ -433,6 +435,10 @@ function skin.DrawCloseButton(object) end + if staticx ~= (parentwidth - 20) then + object:SetPos(parentwidth - 20, 4) + end + end --[[--------------------------------------------------------- diff --git a/skins/Orange/skin.lua b/skins/Orange/skin.lua index 2d16035..e3e3b21 100644 --- a/skins/Orange/skin.lua +++ b/skins/Orange/skin.lua @@ -20,7 +20,7 @@ skin.controls = {} -- frame skin.controls.frame_border_color = bordercolor -skin.controls.frame_body_color = {255, 255, 255, 150} +skin.controls.frame_body_color = {232, 232, 232, 255} skin.controls.frame_top_color = {255, 153, 0, 255} skin.controls.frame_name_color = {255, 255, 255, 255} skin.controls.frame_name_font = smallfont @@ -399,8 +399,10 @@ function skin.DrawCloseButton(object) local x = object:GetX() local y = object:GetY() + local staticx = object:GetStaticX() local width = object:GetWidth() local height = object:GetHeight() + local parentwidth = object.parent:GetWidth() local index = loveframes.config["ACTIVESKIN"] local font = skin.controls.button_text_font local twidth = font:getWidth("X") @@ -433,6 +435,10 @@ function skin.DrawCloseButton(object) end + if staticx ~= (parentwidth - 20) then + object:SetPos(parentwidth - 20, 4) + end + end --[[--------------------------------------------------------- diff --git a/templates.lua b/templates.lua index 4fb2311..c94a38a 100644 --- a/templates.lua +++ b/templates.lua @@ -86,7 +86,8 @@ function loveframes.templates.Register(template) local registeredobjects = loveframes.templates.objects local name = template.name local properties = template.properties - local objects = template.objects + local objects = loveframes.objects + local base = objects["base"] local found = false local foundall = false @@ -96,7 +97,7 @@ function loveframes.templates.Register(template) end if name == "Base" then - _G["base"]:include(template.properties["*"]) + base:include(template.properties["*"]) end -- insert the template into the available templates table