diff --git a/game/engines/default/engine/Button.lua b/game/engines/default/engine/Button.lua deleted file mode 100644 index ce8adf1b35d9c0f331ad20acbb9f2bdae7635560..0000000000000000000000000000000000000000 --- a/game/engines/default/engine/Button.lua +++ /dev/null @@ -1,58 +0,0 @@ --- TE4 - T-Engine 4 --- Copyright (C) 2009, 2010 Nicolas Casalini --- --- This program is free software: you can redistribute it and/or modify --- it under the terms of the GNU General Public License as published by --- the Free Software Foundation, either version 3 of the License, or --- (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License --- along with this program. If not, see <http://www.gnu.org/licenses/>. --- --- Nicolas Casalini "DarkGod" --- darkgod@te4.org - -require "engine.class" -require "engine.Tiles" -require "engine.Mouse" -require "engine.KeyBind" -local ButtonList = require "engine.ButtonList" - ---- Handles dialog windows -module(..., package.seeall, class.make) - -function _M:init(name, text, x, y, w, height, owner, font, fct) - self.type = "Button" - self.owner = owner - self.name = name - self.fct = fct - self.font = font - self.x = x - self.y = y - self.btn = { - susel = ButtonList:makeButton(text, self.font, w, height, false), - sel = ButtonList:makeButton(text, self.font, 50, height, true), - h = height, - mouse_over= function(button) - if self.owner.state ~= self.name then self.owner:focusControl(self.name) end - if button == "left" then - self:fct() - end - self.owner.changed = true - end - } - self.owner.mouse:registerZone(owner.display_x + self.x, owner.display_y + self.y + height, w, height, self.btn.mouse_over) -end - -function _M:drawControl(s) - if (self.owner.state == self.name) then - s:merge(self.btn.sel, self.x, self.y) - else - s:merge(self.btn.susel, self.x, self.y) - end -end \ No newline at end of file diff --git a/game/engines/default/engine/ButtonList.lua b/game/engines/default/engine/ButtonList.lua deleted file mode 100644 index 7b2713c91409b473acb8427f358a44696ac55a0a..0000000000000000000000000000000000000000 --- a/game/engines/default/engine/ButtonList.lua +++ /dev/null @@ -1,161 +0,0 @@ --- TE4 - T-Engine 4 --- Copyright (C) 2009, 2010 Nicolas Casalini --- --- This program is free software: you can redistribute it and/or modify --- it under the terms of the GNU General Public License as published by --- the Free Software Foundation, either version 3 of the License, or --- (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License --- along with this program. If not, see <http://www.gnu.org/licenses/>. --- --- Nicolas Casalini "DarkGod" --- darkgod@te4.org - -require "engine.class" -require "engine.Tiles" -require "engine.Mouse" -require "engine.KeyBind" - ---- Handles dialog windows -module(..., package.seeall, class.make) - -tiles = engine.Tiles.new(16, 16) - ---- Create a buttons list -function _M:init(list, x, y, w, h, font, separator) - self.separator = separator or 20 - self.w, self.h = math.floor(w), math.floor(h) - self.display_x = math.floor(x or (game.w - self.w) / 2) - self.display_y = math.floor(y or (game.h - self.h) / 2) - self.font = font - self.list = list - if not font then self.font = core.display.newFont("/data/font/VeraBd.ttf", 16) end - self.surface = core.display.newSurface(w, h) - self.texture = self.surface:glTexture() - self.surface:erase() - - self.old_selected = 0 - self.selected = 0 - self:select(1) - - for i, b in ipairs(self.list) do - assert(b.name, "no button name") - assert(b.fct, "no button function") - local bw, bh = (b.font or self.font):size(b.name) - b.w, b.h = w, h / (#list + 1) - b.susel = self:makeButton(b.name, b.font, b.w, b.h, false) - b.ssel = self:makeButton(b.name, b.font, b.w, b.h, true) - b.mouse_over = function(button) - self:select(i) - - if button == "left" then - self:click(i) - end - end - end - - self.changed = true -end - -function _M:close() - if self.old_key then self.old_key:setCurrent() end - if self.old_mouse then self.old_mouse:setCurrent() end -end - -function _M:setKeyHandling() - self.old_key = engine.KeyBind.current - self.key = engine.KeyBind.new() - self.key:setCurrent() - self.key:addBinds - { - MOVE_UP = function() - self:select(-1, true) - end, - MOVE_DOWN = function() - self:select(1, true) - end, - ACCEPT = function() - self:click() - end, - } - game.key = self.key -end - -function _M:setMouseHandling() - self.old_mouse = engine.Mouse.current - self.mouse = engine.Mouse.new() - self.mouse:setCurrent() - for i, b in ipairs(self.list) do - self.mouse:registerZone(self.display_x, self.display_y + (i - 1) * (b.h + self.separator), b.w, b.h, b.mouse_over) - end - game.mouse = self.mouse -end - -function _M:select(i, offset) - if offset then - self.selected = self.selected + i - else - self.selected = i - end - if self.selected > #self.list then self.selected = 1 self.old_selected = 0 end - if self.selected < 1 then self.selected = #self.list self.old_selected = #self.list + 1 end - if (not self.old_selected or self.old_selected ~= self.selected) and self.list[self.selected].onSelect then self.list[self.selected].onSelect() end - self.old_selected = self.selected - self.changed = true -end - -function _M:skipSelected() - if self.old_selected < self.selected then self:select(1, true) - elseif self.old_selected > self.selected then self:select(-1, true) end -end - -function _M:click(i) - self.list[i or self.selected].fct() -end - -function _M:display() -end - -function _M:toScreen(x,y) - for i, b in ipairs(self.list) do - if i == self.selected then - b.ssel:toScreen(x + 0, y + (i - 1) * (b.h + self.separator)) - else - b.susel:toScreen(x + 0, y + (i - 1) * (b.h + self.separator)) - end - end -end - -function _M:makeButton(name, font, w, h, sel) - font = font or self.font - local s = core.display.newSurface(w, h) - if sel then - s:erase(143, 155, 85, 200) - else - s:erase(0,0,0,200) - end - - s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_7"..(sel and "_sel" or "")..".png"), 0, 0) - s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_9"..(sel and "_sel" or "")..".png"), w - 8, 0) - s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_1"..(sel and "_sel" or "")..".png"), 0, h - 8) - s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_3"..(sel and "_sel" or "")..".png"), w - 8, h - 8) - for i = 8, w - 9 do - s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_8.png"), i, 0) - s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_8.png"), i, h - 3) - end - for i = 8, h - 9 do - s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_4.png"), 0, i) - s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_4.png"), w - 3, i) - end - - local sw, sh = font:size(name) - s:drawColorStringBlended(font, name, (w - sw) / 2, (h - sh) / 2) - - return s -end diff --git a/game/engines/default/engine/Dialog.lua b/game/engines/default/engine/Dialog.lua index 6b9a5f7ca8f8901e292cc1110ea998bee396be3b..81e4f29e0cfd5fad23d6d181b527b1b328d010f8 100644 --- a/game/engines/default/engine/Dialog.lua +++ b/game/engines/default/engine/Dialog.lua @@ -238,56 +238,6 @@ function _M:toScreen(x, y, nb_keyframes) end end -function _M:addControl(control) - control.tabindex = self.tabindex - self.tabindex = self.tabindex + 1 - self.controls[control.name] = control - table.sort(self.controls, function(a,b) return a.tabindex<b.tabindex end) -end - -function _M:changeFocus(up) - local add = 1 - if not up then add = -1 end - self.currenttabindex = self.currenttabindex + add - if (self.currenttabindex==self.tabindex) then self.currenttabindex = 0 end - if self.currenttabindex==-1 then self.currenttabindex=self.tabindex-1 end - local name = "" - for i, cntrl in pairs(self.controls) do - if cntrl.tabindex==self.currenttabindex then - if self.controls[self.state] and self.controls[self.state].unFocus then self.controls[self.state]:unFocus() end - cntrl.focused=true - name=i - end - end - return name -end - -function _M:focusControl(focusOn) - if focusOn==self.state then return end - local oldstate = self.state - for i, cntrl in pairs(self.controls) do - if i==focusOn then cntrl.focused=true self.state=i self.currenttabindex=cntrl.tabindex end - if i==oldstate and cntrl.unFocus then cntrl:unFocus() end - end -end - - -function _M:databind() - local result = { } - for i, cntrl in pairs(self.controls or { }) do - if cntrl.type and (cntrl.type=="TextBox" or cntrl.type=="NumberBox") then - result[cntrl.name] = cntrl.text - end - end - return result -end - - -function _M:drawControls(s) - for i, cntrl in pairs(self.controls or { }) do - cntrl:drawControl(s) - end -end function _M:drawDialog(s) end diff --git a/game/engines/default/engine/NumberBox.lua b/game/engines/default/engine/NumberBox.lua deleted file mode 100644 index e7d1bee223d93356e186927f20abc002848d7932..0000000000000000000000000000000000000000 --- a/game/engines/default/engine/NumberBox.lua +++ /dev/null @@ -1,143 +0,0 @@ --- TE4 - T-Engine 4 --- Copyright (C) 2009, 2010 Nicolas Casalini --- --- This program is free software: you can redistribute it and/or modify --- it under the terms of the GNU General Public License as published by --- the Free Software Foundation, either version 3 of the License, or --- (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License --- along with this program. If not, see <http://www.gnu.org/licenses/>. --- --- Nicolas Casalini "DarkGod" --- darkgod@te4.org - -require "engine.class" -require "engine.Tiles" -require "engine.Mouse" -require "engine.KeyBind" -require "engine.interface.ControlCursorSupport" - ---- Handles numberbox input control -module(..., package.seeall, class.inherit(engine.interface.ControlCursorSupport)) - -tiles = engine.Tiles.new(16, 16) - -function _M:init(dialogdef, owner, font, mask, fct) - --name, title, min, max, x, y, w, height - self.type = "NumberBox" - self.name = dialogdef.name - self.title = dialogdef.title - self.min = dialogdef.min or 2 - self.max = dialogdef.max or 25 - self.h = dialogdef.h or 30 - self.font = font - self.w = dialogdef.w or 200 - self.x = dialogdef.x - self.y = dialogdef.y - self.private = dialogdef.private - self.text = dialogdef.default or 0 - self.owner = owner - self.btn = { - h = dialogdef.h, - mouse_over= function(button) - if self.owner.state ~= self.name then self.focused=true self.owner:focusControl(self.name) end - if button == "right" then - self.text=0 - end - self.owner.changed=true - end - } - self.owner.mouse:registerZone(self.owner.display_x + self.x, self.owner.display_y + self.y + self.h, self.w, self.h, self.btn.mouse_over) - self:startCursor() - self:moveRight(1, true) -end - -function _M:backSpace() ---[[ - if (self.cursorPosition==0) then return end - local temptext = self.text:sub(1, self.cursorPosition - 1) - if self.cursorPosition < self.maximumCursorPosition then temptext = temptext..self.text:sub(self.cursorPosition + 1, self.text:len()) end - self.text = temptext - self.maximumCursorPosition = self.maximumCursorPosition - 1 - self.cursorPosition = self.cursorPosition - 1 -]] - local b = tostring(self.text) - b = b:sub(1, b:len() - 1) - if b == '' then self.text = 0 - else self.text = tonumber(b) - end - self.cursorPosition = b:len() + 1 -end - -function _M:textInput(c) - if not (c == '0' or c == '1' or c == '2' or c == '3' or c == '4' or c == '5' or c == '6' or c == '7' or c == '8' or c == '9') then return end - if self.text >= 10000000 then return end - local b = tostring(self.text) - if self.text == 0 then b = "" end - if self.first then - self.text = tonumber(c) - self.first = false - else - self.text = tonumber(b .. c) - end - self.cursorPosition = b:len() + 1 - ---[[ - if self.text:len() < self.max then - local temp=nil - if self.cursorPosition < self.maximumCursorPosition then temp=self.text:sub(self.cursorPosition + 1, self.text:len()) end - self.text = self.text:sub(1,self.cursorPosition) .. c - if temp then self.text=self.text..temp end - self.owner.changed = true - self:moveRight(1, true) - end -]] -end - -function _M:unFocus() - self.focused = false -end - - -function _M:drawControl(s) - - local r, g, b - local w = self.w - local h = self.h - local tw, th = self.font:size(self.title) - tw = tw + 10 - local title=self.title - if self.owner.state==self.name then - title = title.."*" - end - r, g, b = s:drawColorStringBlended(self.font, title, self.x, self.y + ((h - th) / 2), r, g, b) - - s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_7"..(sel and "_sel" or "")..".png"), self.x + tw, self.y) - s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_9"..(sel and "_sel" or "")..".png"), w + self.x - 8, self.y) - s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_1"..(sel and "_sel" or "")..".png"), self.x + tw, self.y + h - 8) - s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_3"..(sel and "_sel" or "")..".png"), self.x + w - 8, self.y + h - 8) - for i = 8, w - tw - 9 do - s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_8.png"), self.x + tw + i, self.y) - s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_8.png"), self.x + tw + i, self.y + h - 3) - end - for i = 8, h - 9 do - s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_4.png"), self.x + tw, self.y + i) - s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_4.png"), self.x + w - 3, self.y + i) - end - - local text = tostring(self.text) - if text=="" then text=self.mask or "" end - if self.private then text = text:gsub('.', '*') end - local sw, sh = self.font:size(text) - - local baseX = self.x + tw + 10 - - s:drawColorStringBlended(self.font, text, baseX, self.y + h - sh - 8) - self:drawCursor(s, baseX, text) -end diff --git a/game/engines/default/engine/TextBox.lua b/game/engines/default/engine/TextBox.lua deleted file mode 100644 index bfe3e6b0bd2ae24607579a5a9f33a52f98836b4e..0000000000000000000000000000000000000000 --- a/game/engines/default/engine/TextBox.lua +++ /dev/null @@ -1,127 +0,0 @@ --- TE4 - T-Engine 4 --- Copyright (C) 2009, 2010 Nicolas Casalini --- --- This program is free software: you can redistribute it and/or modify --- it under the terms of the GNU General Public License as published by --- the Free Software Foundation, either version 3 of the License, or --- (at your option) any later version. --- --- This program is distributed in the hope that it will be useful, --- but WITHOUT ANY WARRANTY; without even the implied warranty of --- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the --- GNU General Public License for more details. --- --- You should have received a copy of the GNU General Public License --- along with this program. If not, see <http://www.gnu.org/licenses/>. --- --- Nicolas Casalini "DarkGod" --- darkgod@te4.org - -require "engine.class" -require "engine.Tiles" -require "engine.Mouse" -require "engine.KeyBind" -require "engine.interface.ControlCursorSupport" ---- Handles textbox input control -module(..., package.seeall, class.inherit(engine.interface.ControlCursorSupport)) - -tiles = engine.Tiles.new(16, 16) - -function _M:init(dialogdef, owner, font, mask, fct) - --name, title, min, max, x, y, w, height - self.type = "TextBox" - self.name = dialogdef.name - self.title = dialogdef.title - self.min = dialogdef.min or 2 - self.max = dialogdef.max or 25 - self.h = dialogdef.h or 30 - self.font = font - self.w = dialogdef.w or 200 - self.x = dialogdef.x - self.y = dialogdef.y - self.private = dialogdef.private - self.text = "" - self.owner = owner - self.btn = { - h = dialogdef.h, - mouse_over= function(button) - if self.owner.state ~= self.name then self.focused=true self.owner:focusControl(self.name) end - if button == "right" then - self.text="" - end - self.owner.changed=true - end - } - self.owner.mouse:registerZone(self.owner.display_x + self.x, self.owner.display_y + self.y + self.h, self.w, self.h, self.btn.mouse_over) - self:startCursor() -end - -function _M:delete() - if (self.cursorPosition>=self.maximumCursorPosition) then return end - local temptext = self.text:sub(1, self.cursorPosition) - if self.cursorPosition < self.maximumCursorPosition - 1 then temptext = temptext..self.text:sub(self.cursorPosition + 2, self.text:len()) end - self.text = temptext - self.maximumCursorPosition = self.maximumCursorPosition - 1 -end - -function _M:backSpace() - if (self.cursorPosition==0) then return end - local temptext = self.text:sub(1, self.cursorPosition - 1) - if self.cursorPosition < self.maximumCursorPosition then temptext = temptext..self.text:sub(self.cursorPosition + 1, self.text:len()) end - self.text = temptext - self.maximumCursorPosition = self.maximumCursorPosition - 1 - self.cursorPosition = self.cursorPosition - 1 -end - -function _M:textInput(c) - if self.text:len() < self.max then - local temp=nil - if self.cursorPosition < self.maximumCursorPosition then temp=self.text:sub(self.cursorPosition + 1, self.text:len()) end - self.text = self.text:sub(1,self.cursorPosition) .. c - if temp then self.text=self.text..temp end - self.owner.changed = true - self:moveRight(1, true) - end -end - -function _M:unFocus() - self.focused = false -end - - -function _M:drawControl(s) - - local r, g, b - local w = self.w - local h = self.h - local tw, th = self.font:size(self.title) - tw = tw + 10 - local title=self.title - if self.owner.state==self.name then - title = title.."*" - end - r, g, b = s:drawColorStringBlended(self.font, title, self.x, self.y + ((h - th) / 2), r, g, b) - - s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_7"..(sel and "_sel" or "")..".png"), self.x + tw, self.y) - s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_9"..(sel and "_sel" or "")..".png"), w + self.x - 8, self.y) - s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_1"..(sel and "_sel" or "")..".png"), self.x + tw, self.y + h - 8) - s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_3"..(sel and "_sel" or "")..".png"), self.x + w - 8, self.y + h - 8) - for i = 8, w - tw - 9 do - s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_8.png"), self.x + tw + i, self.y) - s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_8.png"), self.x + tw + i, self.y + h - 3) - end - for i = 8, h - 9 do - s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_4.png"), self.x + tw, self.y + i) - s:merge(tiles:get(nil, 0,0,0, 0,0,0, "border_4.png"), self.x + w - 3, self.y + i) - end - - local text = self.text - if text=="" then text=self.mask or "" end - if self.private then text = text:gsub('.', '*') end - local sw, sh = self.font:size(text) - - local baseX = self.x + tw + 10 - - s:drawColorStringBlended(self.font, text, baseX, self.y + h - sh - 8) - self:drawCursor(s, baseX, text) -end