From c858dee5efdcd370cc7ef8d0aece6140b8bb3329 Mon Sep 17 00:00:00 2001 From: Maxim Osin Date: Mon, 20 Dec 2021 11:22:56 -0500 Subject: [PATCH 1/6] Added Scrolling Credits --- screens/credits.lua | 60 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 54 insertions(+), 6 deletions(-) diff --git a/screens/credits.lua b/screens/credits.lua index 446389e..32e9d6e 100644 --- a/screens/credits.lua +++ b/screens/credits.lua @@ -1,5 +1,43 @@ -local Credits = { -} +function stringToArray(arr, creditsString) + for line in creditsString:gmatch("([^\n]*)\n?") do + table.insert(arr, line) + end +end + +function setLabelProperties(this, creditsLabel, index) + creditsLabel:setPosition(400, index * 30) + creditsLabel:setAlignment("middle", "start") + creditsLabel:onUpdate( + function(delta) + local x, y = creditsLabel:getPosition() + y = math.round(y - delta * 15) + creditsLabel:setPosition(x, y) + if y < -30 then + creditsLabel:setPosition(400, 600) + if this.creditLineOffset <= #this.creditsLines then + local creditsline = this.creditsLines[this.creditLineOffset] + if string.find(creditsline, "*") then + -- red text without first * and last \n + creditsline = string.sub(creditsline, 2, -2) + creditsLabel:setColorMod(0xFF, 0x00, 0x00) + else + -- white text without first * and last \n + creditsline = string.sub(creditsline, 1, -2) + creditsLabel:setColorMod(0xFF, 0xFF, 0xFF) + end + creditsLabel.caption = creditsline + else + -- remove the label since there no more credits lines + this.rootNode:removeChild(creditsLabel) + creditsLabel = nil + end + this.creditLineOffset = this.creditLineOffset + 1 + end + end + ) +end +local Credits = {} +Credits.__index = Credits function Credits:new() local this = {} @@ -9,13 +47,11 @@ function Credits:new() end function Credits:initialize() - self.creditsLines = abyss.loadString(Language:i18nPath(ResourceDefs.CreditsText)) - self.rootNode = abyss.getRootNode() self.rootNode:removeAllChildren() abyss.resetMouseState() - self.btnExit = CreateButton(ButtonTypes.Medium, 33, 543, "@strExit#5101", function() + self.btnExit = CreateButton(ButtonTypes.Medium, 33, 543, "Exit", function() SetScreen(Screen.MAIN_MENU) end) @@ -26,7 +62,19 @@ function Credits:initialize() self.rootNode:appendChild(self.mainBg) self.mainBg:appendChild(self.btnExit) + -- Credits + self.creditLineOffset = 1 + self.creditsLines = {} + stringToArray(self.creditsLines, abyss.utf16To8(abyss.loadString(Language:i18nPath(ResourceDefs.CreditsText)))) + self.labelPool = {} + local this = self + -- Populating the pool + for i = 1, 21 do + local creditsLabel = abyss.createLabel(SystemFonts.FntFormal12) + setLabelProperties(this, creditsLabel, i) + table.insert(self.labelPool, creditsLabel) + self.rootNode:appendChild(creditsLabel) + end end - return Credits From a512ee2e6add259c3ff2d10275f9e4704ddc6513 Mon Sep 17 00:00:00 2001 From: Maxim Osin Date: Mon, 20 Dec 2021 11:29:16 -0500 Subject: [PATCH 2/6] Added Red color and used it in credits --- common/ui.lua | 2 +- screens/credits.lua | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/common/ui.lua b/common/ui.lua index 4b0bcf3..fc4f958 100644 --- a/common/ui.lua +++ b/common/ui.lua @@ -10,7 +10,7 @@ function InitUI() LightBrown = { R = 188, G = 168, B = 140 }, LightGreen = { R = 24, G = 255, B = 0 }, White = { R = 255, G = 255, B = 255 }, - Black = { R = 0, G = 0, B = 0 }, + Red = { R = 255, G = 0, B = 0}, Black = { R = 0, G = 0, B = 0 }, Yellowish = { R = 199, G = 179, B = 119 }, } diff --git a/screens/credits.lua b/screens/credits.lua index 32e9d6e..6c41886 100644 --- a/screens/credits.lua +++ b/screens/credits.lua @@ -19,11 +19,11 @@ function setLabelProperties(this, creditsLabel, index) if string.find(creditsline, "*") then -- red text without first * and last \n creditsline = string.sub(creditsline, 2, -2) - creditsLabel:setColorMod(0xFF, 0x00, 0x00) + creditsLabel:setColorMod(TextColor.Red) else -- white text without first * and last \n creditsline = string.sub(creditsline, 1, -2) - creditsLabel:setColorMod(0xFF, 0xFF, 0xFF) + creditsLabel:setColorMod(TextColor.White) end creditsLabel.caption = creditsline else From 39d9adcd820fa87ebff6f6456b94a04cd6e6146f Mon Sep 17 00:00:00 2001 From: Maxim Osin Date: Mon, 20 Dec 2021 11:29:52 -0500 Subject: [PATCH 3/6] Fixed minor problem --- screens/credits.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/screens/credits.lua b/screens/credits.lua index 6c41886..c94ba30 100644 --- a/screens/credits.lua +++ b/screens/credits.lua @@ -10,7 +10,7 @@ function setLabelProperties(this, creditsLabel, index) creditsLabel:onUpdate( function(delta) local x, y = creditsLabel:getPosition() - y = math.round(y - delta * 15) + y = math.floor(y - delta * 15) creditsLabel:setPosition(x, y) if y < -30 then creditsLabel:setPosition(400, 600) From d2d1b98bbce866dc40bf49a704ffb34fc3ed94f3 Mon Sep 17 00:00:00 2001 From: Maxim Osin Date: Mon, 20 Dec 2021 11:33:52 -0500 Subject: [PATCH 4/6] Added colors to credits(fix) + minor formatting --- screens/credits.lua | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/screens/credits.lua b/screens/credits.lua index c94ba30..86938ad 100644 --- a/screens/credits.lua +++ b/screens/credits.lua @@ -19,11 +19,11 @@ function setLabelProperties(this, creditsLabel, index) if string.find(creditsline, "*") then -- red text without first * and last \n creditsline = string.sub(creditsline, 2, -2) - creditsLabel:setColorMod(TextColor.Red) + creditsLabel:setColorMod(TextColor.Red.R, TextColor.Red.G, TextColor.Red.B) else -- white text without first * and last \n creditsline = string.sub(creditsline, 1, -2) - creditsLabel:setColorMod(TextColor.White) + creditsLabel:setColorMod(TextColor.White.R, TextColor.White.G, TextColor.White.B) end creditsLabel.caption = creditsline else @@ -51,9 +51,16 @@ function Credits:initialize() self.rootNode:removeAllChildren() abyss.resetMouseState() - self.btnExit = CreateButton(ButtonTypes.Medium, 33, 543, "Exit", function() - SetScreen(Screen.MAIN_MENU) - end) + self.btnExit = + CreateButton( + ButtonTypes.Medium, + 33, + 543, + "Exit", + function() + SetScreen(Screen.MAIN_MENU) + end + ) -- Main Background self.mainBg = CreateUniqueSpriteFromFile(ResourceDefs.CreditsBackground, ResourceDefs.Palette.Sky) From ee936aa5445364d7fa4593810e763a8b2407274b Mon Sep 17 00:00:00 2001 From: Troy Cook Date: Sun, 23 Jan 2022 22:45:27 -0600 Subject: [PATCH 5/6] Fix formatting, and remove new globals and make local --- common/ui.lua | 3 ++- screens/credits.lua | 20 +++++++------------- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/common/ui.lua b/common/ui.lua index fc4f958..4f4109b 100644 --- a/common/ui.lua +++ b/common/ui.lua @@ -10,7 +10,8 @@ function InitUI() LightBrown = { R = 188, G = 168, B = 140 }, LightGreen = { R = 24, G = 255, B = 0 }, White = { R = 255, G = 255, B = 255 }, - Red = { R = 255, G = 0, B = 0}, Black = { R = 0, G = 0, B = 0 }, + Red = { R = 255, G = 0, B = 0}, + Black = { R = 0, G = 0, B = 0 }, Yellowish = { R = 199, G = 179, B = 119 }, } diff --git a/screens/credits.lua b/screens/credits.lua index 86938ad..d105530 100644 --- a/screens/credits.lua +++ b/screens/credits.lua @@ -1,10 +1,4 @@ -function stringToArray(arr, creditsString) - for line in creditsString:gmatch("([^\n]*)\n?") do - table.insert(arr, line) - end -end - -function setLabelProperties(this, creditsLabel, index) +local function setLabelProperties(this, creditsLabel, index) creditsLabel:setPosition(400, index * 30) creditsLabel:setAlignment("middle", "start") creditsLabel:onUpdate( @@ -28,7 +22,7 @@ function setLabelProperties(this, creditsLabel, index) creditsLabel.caption = creditsline else -- remove the label since there no more credits lines - this.rootNode:removeChild(creditsLabel) + abyss.getRootNode():removeChild(creditsLabel) creditsLabel = nil end this.creditLineOffset = this.creditLineOffset + 1 @@ -47,8 +41,8 @@ function Credits:new() end function Credits:initialize() - self.rootNode = abyss.getRootNode() - self.rootNode:removeAllChildren() + local rootNode = abyss.getRootNode() + rootNode:removeAllChildren() abyss.resetMouseState() self.btnExit = @@ -66,13 +60,13 @@ function Credits:initialize() self.mainBg = CreateUniqueSpriteFromFile(ResourceDefs.CreditsBackground, ResourceDefs.Palette.Sky) self.mainBg:setCellSize(4, 3) - self.rootNode:appendChild(self.mainBg) + rootNode:appendChild(self.mainBg) self.mainBg:appendChild(self.btnExit) -- Credits self.creditLineOffset = 1 self.creditsLines = {} - stringToArray(self.creditsLines, abyss.utf16To8(abyss.loadString(Language:i18nPath(ResourceDefs.CreditsText)))) + self.creditsLines = Split(abyss.utf16To8(abyss.loadString(Language:i18nPath(ResourceDefs.CreditsText))), "\n") self.labelPool = {} local this = self -- Populating the pool @@ -80,7 +74,7 @@ function Credits:initialize() local creditsLabel = abyss.createLabel(SystemFonts.FntFormal12) setLabelProperties(this, creditsLabel, i) table.insert(self.labelPool, creditsLabel) - self.rootNode:appendChild(creditsLabel) + rootNode:appendChild(creditsLabel) end end From 1b424a3b88c55baf3de1ea51ff0c2e1dfd0ca13e Mon Sep 17 00:00:00 2001 From: Troy Cook Date: Mon, 7 Feb 2022 20:45:05 -0600 Subject: [PATCH 6/6] Fixed sizing issues. Next thing to work on is some labels overlapping --- common/ui.lua | 14 ++++++++------ screens/credits.lua | 13 ++++++++++--- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/common/ui.lua b/common/ui.lua index 4f4109b..a693f5a 100644 --- a/common/ui.lua +++ b/common/ui.lua @@ -5,14 +5,16 @@ function InitUI() local imgButtonMediumBlank = abyss.loadImage(ResourceDefs.MediumButtonBlank, ResourceDefs.Palette.Sky) local imgCheckbox = abyss.loadImage(ResourceDefs.Checkbox, ResourceDefs.Palette.Fechar) + -- Colors do not render correctly due to gamma issues in the engine TextColor = { --blackHalfOpacity = 0x0000007f - LightBrown = { R = 188, G = 168, B = 140 }, - LightGreen = { R = 24, G = 255, B = 0 }, - White = { R = 255, G = 255, B = 255 }, - Red = { R = 255, G = 0, B = 0}, - Black = { R = 0, G = 0, B = 0 }, - Yellowish = { R = 199, G = 179, B = 119 }, + LightBrown = { R = 188, G = 168, B = 140, A = 255 }, + LightGreen = { R = 24, G = 255, B = 0, A = 255 }, + White = { R = 255, G = 255, B = 255, A = 255 }, + Red = { R = 219, G = 63, B = 61, A = 255 }, + Black = { R = 0, G = 0, B = 0, A = 255 }, + Gold = { R = 200, G = 170, B = 140, A = 255 }, + Yellowish = { R = 199, G = 179, B = 119, A = 255 }, } diff --git a/screens/credits.lua b/screens/credits.lua index d105530..77187bf 100644 --- a/screens/credits.lua +++ b/screens/credits.lua @@ -13,11 +13,11 @@ local function setLabelProperties(this, creditsLabel, index) if string.find(creditsline, "*") then -- red text without first * and last \n creditsline = string.sub(creditsline, 2, -2) - creditsLabel:setColorMod(TextColor.Red.R, TextColor.Red.G, TextColor.Red.B) + setLabelColor(creditsLabel, TextColor.Red) else -- white text without first * and last \n creditsline = string.sub(creditsline, 1, -2) - creditsLabel:setColorMod(TextColor.White.R, TextColor.White.G, TextColor.White.B) + setLabelColor(creditsLabel, TextColor.Gold) end creditsLabel.caption = creditsline else @@ -33,6 +33,10 @@ end local Credits = {} Credits.__index = Credits +function setLabelColor(label, color) + return label:setColorMod(color.R, color.G, color.B) +end + function Credits:new() local this = {} setmetatable(this, self) @@ -40,6 +44,9 @@ function Credits:new() return this end +--default to 2 columns when possible otherwise center last name in section. +--header and section text seperated by one empty line + function Credits:initialize() local rootNode = abyss.getRootNode() rootNode:removeAllChildren() @@ -71,7 +78,7 @@ function Credits:initialize() local this = self -- Populating the pool for i = 1, 21 do - local creditsLabel = abyss.createLabel(SystemFonts.FntFormal12) + local creditsLabel = abyss.createLabel(SystemFonts.FntFormal10) setLabelProperties(this, creditsLabel, i) table.insert(self.labelPool, creditsLabel) rootNode:appendChild(creditsLabel)