summaryrefslogtreecommitdiffhomepage
path: root/selector.lua
diff options
context:
space:
mode:
Diffstat (limited to 'selector.lua')
-rw-r--r--selector.lua80
1 files changed, 47 insertions, 33 deletions
diff --git a/selector.lua b/selector.lua
index ae62e13..f869377 100644
--- a/selector.lua
+++ b/selector.lua
@@ -5,8 +5,8 @@ Selector = {
x = 0,
y = 0,
parent = nil,
- controller = nil,
- state = false
+ controlset = nil,
+ locked = false
}
function Selector:new(menu)
local o = {}
@@ -15,6 +15,7 @@ function Selector:new(menu)
o.parent = menu
return o
end
+-- Position
function Selector:setPosition(x,y)
self.x = x
self.y = y
@@ -22,20 +23,30 @@ end
function Selector:getPosition()
return self.x, self.y
end
-function Selector:assignController(controller)
- controller:setParent(self)
- self.controller = controller
+-- Control Sets
+function Selector:assignControlSet(set)
+ self.controlset = set
self.naut = 2
end
-function Selector:getController()
- if self.controller ~= nil then
- return self.controller
+function Selector:getControlSet()
+ if self.controlset ~= nil then
+ return self.controlset
end
end
+-- States
+function Selector:getState()
+ if self:getControlSet() ~= nil then
+ if self.locked then
+ return 2 -- has controls and locked
+ end
+ return 1 -- has controls but not locked
+ end
+ return 0 -- no controls and not locked
+end
function Selector:clear()
- self.controller = nil
+ self.controlset = nil
self.naut = 1
- self.state = false
+ self.locked = 0
end
function Selector:getSelectionName()
return self.parent.nauts[self.naut]
@@ -53,9 +64,9 @@ function Selector:draw()
-- arrows
local arrowl = self.parent.portrait_sheet.arrow_left
local arrowr = self.parent.portrait_sheet.arrow_right
- if not self.state then
+ if not self.locked then
love.graphics.draw(sprite, p.normal, x*scale, y*scale, 0, scale, scale)
- if self.controller ~= nil then
+ if self.controlset ~= nil then
love.graphics.draw(sprite, arrowl, (x-2)* scale, (y+13)*scale, 0, scale, scale)
love.graphics.draw(sprite, arrowr, (x+30)*scale, (y+13)*scale, 0, scale, scale)
end
@@ -69,28 +80,31 @@ end
-- Controller callbacks
function Selector:controlpressed(set, action, key)
+ -- locals
local n = #self.parent.nauts
- if control == "left" and not self.state then
- if self.naut == 2 or self.naut == 1 then
- self.naut = n
- else
- self.naut = self.naut - 1
- end
- elseif control == "right" and not self.state then
- if self.naut == n then
- self.naut = 2
- else
- self.naut = self.naut + 1
- end
- elseif control == "attack" then
- if self.naut ~= 1 then
- self.state = true
- end
- elseif control == "jump" then
- if self.state == true then
- self.state = false
- else
- self.parent:unselectSelector(self)
+ if set == self:getControlSet() then
+ if action == "left" and not self.locked then
+ if self.naut == 2 or self.naut == 1 then
+ self.naut = n
+ else
+ self.naut = self.naut - 1
+ end
+ elseif action == "right" and not self.locked then
+ if self.naut == n then
+ self.naut = 2
+ else
+ self.naut = self.naut + 1
+ end
+ elseif action == "attack" then
+ if self.naut ~= 1 then
+ self.locked = true
+ end
+ elseif action == "jump" then
+ if self.locked == true then
+ self.locked = false
+ else
+ self.parent:unselectSelector(self)
+ end
end
end
end