Rehandled menus; reworked dialog, added dialogsequences instead of dialogboxes

This commit is contained in:
lustlion
2022-02-03 05:31:25 +01:00
parent 26fe8f2c33
commit 7595ed3b90
14 changed files with 324 additions and 185 deletions

View File

@@ -53,18 +53,13 @@ function interfaceButton:getVariable()
return self.target_variable
end
function AddElement(self)
table.insert(UIElement,self)
self.id = #UIElement
end
function interfaceButton:checkMouse(mouse_x, mouse_y)
if not self.clicked
and mouse_x < self.pos.x + self.size.w/2
and mouse_x > self.pos.x - self.size.w/2
and mouse_y < self.pos.y + self.size.h/2
and mouse_y > self.pos.y - self.size.h/2 then
o.style.scale_proportion = o.style.selected.scale_proportion
self.style.scale_proportion = o.style.selected.scale_proportion
if love.mouse.isDown(1) then
self.clicked = true
self.value = self.value + 1
@@ -73,8 +68,8 @@ function interfaceButton:checkMouse(mouse_x, mouse_y)
end
self.target_variable = self.values[self.value]
end
else
o.style.scale_proportion = o.style.unselected.scale_proportion
elseif not love.mouse.isDown(1) then
self.style.scale_proportion = o.style.unselected.scale_proportion
self.clicked = false
end
end

View File

@@ -1,6 +1,5 @@
interfaceDialog = {type = "Dialog"}
-- centered buttons
-- dialog boxes
function interfaceDialog:New(style)
o = {}
@@ -14,11 +13,10 @@ function interfaceDialog:New(style)
}
o.values = {false,true}
o.value = 1
o.target_variable = o.values[o.value]
o.value = 0
o.target_value = 0
o.clicked = false
local style = {}
o.style = {
content = style.content or nil,
@@ -40,26 +38,31 @@ function interfaceDialog:New(style)
return o
end
function interfaceDialog:getVariable()
return self.target_variable
function interfaceDialog:updateContents()
if self.value < self.target_value then
self.contents = self.sequence[self.value]
if self.contents[1] == nil then self.contents[1] = "" end
if self.contents[2] == nil then self.contents[2] = "" end
if self.contents[3] == nil then self.contents[3] = "" end
end
end
function AddElement(self)
table.insert(UIElement,self)
self.id = #UIElement
function interfaceDialog:loadSequence(sequence)
self.sequence = sequence
self.value = 1
self.target_value = 1+#sequence
self:updateContents()
end
function interfaceDialog:checkConfirm()
if not self.clicked then
if Keybind:HasPressed(Keybind.menu.confirm) then
if love.mouse.isDown(1) then
self.clicked = true
self.value = self.value + 1
if self.value > #self.values then
self.value = 1
end
self.target_variable = self.values[self.value]
print(self.value.." of "..self.target_value)
self:updateContents()
end
else
elseif not love.mouse.isDown(1) then
self.clicked = false
end
end
@@ -82,12 +85,13 @@ function interfaceDialog:Draw()
self.size.w*self.style.scale_x*self.style.scale_proportion,
self.size.h*self.style.scale_y*self.style.scale_proportion)
if self.style.content ~= nil then
love.graphics.printf(self.style.content[1],self.pos.x+10,self.pos.y+(self.size.h/2),100,"left")
love.graphics.printf(self.style.content[2],self.pos.x+(self.size.w/2),self.pos.y+(self.size.h/2),100,"center")
love.graphics.printf(self.style.content[3],self.pos.x+(self.size.w)-10,self.pos.y+(self.size.h/2),100,"right")
if self.contents ~= nil then
love.graphics.printf(self.contents[1],self.pos.x+10,self.pos.y+(self.size.h/2),100,"left")
love.graphics.printf(self.contents[2],self.pos.x+(self.size.w/2),self.pos.y+(self.size.h/2),100,"center")
love.graphics.printf(self.contents[3],self.pos.x+(self.size.w)-10,self.pos.y+(self.size.h/2),100,"right")
else
love.graphics.printf("ERROR",self.pos.x+(self.size.w/2),self.pos.y+(self.size.h/2),100,"center")
end
love.graphics.setColor(c1,c2,c3,a)
end

View File

@@ -1,9 +0,0 @@
dialogboxes = {
example = {
object = nil,
style = {content = {"test", "tested", "lol"}},
exit = {example, 0}
}
}