Don't Starve Revision History Viewer

Comparing Six Feet Under (Rev 86935) to All's Well That Maxwell (Rev 88237)

screens/deathscreen.lua

8910111213141516171819
local UIAnim = require "widgets/uianim" local Menu = require "widgets/menu" local DeathScreen = Class(Screen, function(self, days_survived, start_xp, escaped) Widget._ctor(self, "Progress") self.owner = GetPlayer() self.log = true self.root = self:AddChild(Widget("ROOT")) self.root:SetVAnchor(ANCHOR_MIDDLE) self.root:SetHAnchor(ANCHOR_MIDDLE)
89101112131415161718192021222324
local UIAnim = require "widgets/uianim" local Menu = require "widgets/menu" local DeathScreen = Class(Screen, function(self, days_survived, start_xp, escaped, capped) Widget._ctor(self, "Progress") self.owner = GetPlayer() self.log = true TheInputProxy:SetCursorVisible(true) self.root = self:AddChild(Widget("ROOT")) self.root:SetVAnchor(ANCHOR_MIDDLE) self.root:SetHAnchor(ANCHOR_MIDDLE)
2021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
self.root:SetPosition(0,0,0) self.root:SetScaleMode(SCALEMODE_PROPORTIONAL) self.bg = self.root:AddChild(Image("images/hud.xml", "death_BG.tex")) self.progbar = self.root:AddChild(UIAnim()) self.progbar:GetAnimState():SetBank("progressbar") self.progbar:GetAnimState():SetBuild("progressbar") self.progbar:GetAnimState():PlayAnimation("anim", true) self.progbar:GetAnimState():SetPercent("anim", 0) self.progbar:SetPosition(Vector3(-316,-35,0)) local font = BODYTEXTFONT self.title = self.root:AddChild(Text(TITLEFONT, 75)) self.title:SetPosition(0,190,0) if escaped == nil then self.title:SetString(STRINGS.UI.DEATHSCREEN.YOUAREDEAD) else self.title:SetString(STRINGS.UI.DEATHSCREEN.YOUESCAPED) end self.t1 = self.root:AddChild(Text(font, 60)) self.t1:SetPosition(-150,70,0) self.t1:SetString(STRINGS.UI.DEATHSCREEN.SURVIVEDDAYS) self.t2 = self.root:AddChild(Text(font, 60)) self.t2:SetPosition(200,70,0) self.t2:SetString(STRINGS.UI.DEATHSCREEN.DAYS) self.survivedtext = self.root:AddChild(Text(font, 50)) self.survivedtext:SetPosition(75,70,0) self.leveltext = self.root:AddChild(Text(font, 50)) self.leveltext:SetHAlign(ANCHOR_LEFT) self.leveltext:SetPosition(-260,-40,0) self.xptext = self.root:AddChild(Text(NUMBERFONT, 50)) self.xptext:SetHAlign(ANCHOR_LEFT) self.xptext:SetPosition(-230,-110,0) local menu_items = { {text = STRINGS.UI.DEATHSCREEN.MAINMENU, cb = function() self:OnMenu(escaped) end}
25262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
self.root:SetPosition(0,0,0) self.root:SetScaleMode(SCALEMODE_PROPORTIONAL) if capped then self:Capped(days_survived, start_xp, escaped) else self:NotCapped(days_survived, start_xp, escaped) end end) function DeathScreen:NotCapped(days_survived, start_xp, escaped) local font = BUTTONFONT self.bg = self.root:AddChild(Image("images/globalpanels.xml", "panel_upsell_small.tex")) self.progbar = self.root:AddChild(UIAnim()) self.progbar:GetAnimState():SetBank("progressbar") --XP Bar self.progbar:GetAnimState():SetBuild("progressbar") self.progbar:GetAnimState():PlayAnimation("anim", true) self.progbar:GetAnimState():SetPercent("anim", 0) self.progbar:SetPosition(Vector3(-220, 5,0)) self.progbar:SetScale(.65,.7,.7) self.title = self.root:AddChild(Text(TITLEFONT, 60)) self.title:SetPosition(0,140,0) if escaped == nil then self.title:SetString(STRINGS.UI.DEATHSCREEN.YOUAREDEAD) else self.title:SetString(STRINGS.UI.DEATHSCREEN.YOUESCAPED) end self.t1 = self.root:AddChild(Text(font, 40)) self.t1:SetPosition(-160,55,0) self.t1:SetString(STRINGS.UI.DEATHSCREEN.SURVIVEDDAYS) --"You survived..." self.survivedtext = self.root:AddChild(Text(font, 40)) -- Day Count self.survivedtext:SetPosition(-50,55,0) self.t2 = self.root:AddChild(Text(font, 40)) self.t2:SetPosition(30,55,0) self.t2:SetString(STRINGS.UI.DEATHSCREEN.DAYS) --"Days" self.leveltext = self.root:AddChild(Text(font, 35)) --Level #: self.leveltext:SetHAlign(ANCHOR_LEFT) self.leveltext:SetPosition(-180,3,0) self.xptext = self.root:AddChild(Text(font, 35)) --XP: #### self.xptext:SetHAlign(ANCHOR_LEFT) self.xptext:SetPosition(-180,-45,0) self.rewardtext = self.root:AddChild(Text(font, 35)) --"Next Reward..." self.rewardtext:SetString(STRINGS.UI.DEATHSCREEN.NEXTREWARD) self.rewardtext:SetHAlign(ANCHOR_LEFT) self.rewardtext:SetPosition(5,-45,0) local menu_items = { {text = STRINGS.UI.DEATHSCREEN.MAINMENU, cb = function() self:OnMenu(escaped) end}
75767778798081828384858687888990919293949596979899100101102103
table.insert(menu_items, {text = STRINGS.UI.DEATHSCREEN.RETRY, cb = function() self:OnRetry() end}) end self.menu = self.root:AddChild(Menu(menu_items, 180, true)) self.menu:SetPosition(-((#menu_items-1)*180)/2, -195, 0) self.portrait = self.root:AddChild(Image("images/saveslot_portraits.xml", "wilson.tex")) self.portrait:SetPosition(Vector3(250,-145, 0)) self.portrait:SetScale(1.5,1.5,1.5) self.portrait:SetTint(0,0,0,1) self.portrait:SetVRegPoint(ANCHOR_BOTTOM) self:ShowButtons(false) self.rewardtext = self.root:AddChild(Text(font, 40)) self.rewardtext:SetString(STRINGS.UI.DEATHSCREEN.NEXTREWARD) self.rewardtext:SetHAlign(ANCHOR_LEFT) self.rewardtext:SetPosition(60,-110,0) self:ShowResults(days_survived, start_xp) self.default_focus = self.menu end) local function DoReload(slot) StartNextInstance({reset_action=RESET_ACTION.LOAD_SLOT, save_slot = slot or SaveGameIndex:GetCurrentSaveSlot()})
888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
table.insert(menu_items, {text = STRINGS.UI.DEATHSCREEN.RETRY, cb = function() self:OnRetry() end}) end self.menu = self.root:AddChild(Menu(menu_items, 180, true)) self.menu:SetPosition(-((#menu_items-1)*135)/2, -140, 0) self.menu:SetScale(.75,.75,.75) local portrait_pos = {x = 155, y = -60} local portrait_scale = 1.25 self.portrait_background = self.root:AddChild(Image("images/saveslot_portraits.xml", "background.tex")) self.portrait_background:SetPosition(Vector3(portrait_pos.x, portrait_pos.y, 0)) self.portrait_background:SetScale(portrait_scale,portrait_scale,portrait_scale) self.portrait_background:SetVRegPoint(ANCHOR_BOTTOM) self.portrait = self.root:AddChild(Image("images/saveslot_portraits.xml", "wilson.tex")) self.portrait:SetPosition(Vector3(portrait_pos.x , portrait_pos.y - 1, 0)) self.portrait:SetScale(portrait_scale,portrait_scale,portrait_scale) self.portrait:SetTint(0,0,0,1) self.portrait:SetVRegPoint(ANCHOR_BOTTOM) self:ShowButtons(false) self:ShowResults(days_survived, start_xp) self.default_focus = self.menu end function DeathScreen:Capped(days_survived, start_xp, escaped) local font = BUTTONFONT self.bg = self.root:AddChild(Image("images/globalpanels.xml", "small_dialog.tex")) self.bg:SetScale(1.25, 1.3, 1) self.title = self.root:AddChild(Text(TITLEFONT, 60)) self.title:SetPosition(0,70,0) if escaped == nil then self.title:SetString(STRINGS.UI.DEATHSCREEN.YOUAREDEAD) else self.title:SetString(STRINGS.UI.DEATHSCREEN.YOUESCAPED) end local line_y = 0 self.t1 = self.root:AddChild(Text(font, 40)) self.t1:SetPosition(-70,line_y,0) self.t1:SetString(STRINGS.UI.DEATHSCREEN.SURVIVEDDAYS) --"You survived..." self.survivedtext = self.root:AddChild(Text(font, 40)) -- Day Count self.survivedtext:SetPosition(30,line_y,0) self.t2 = self.root:AddChild(Text(font, 40)) self.t2:SetPosition(90,line_y,0) self.t2:SetString(STRINGS.UI.DEATHSCREEN.DAYS) --"Days" local menu_items = { {text = STRINGS.UI.DEATHSCREEN.MAINMENU, cb = function() self:OnMenu(escaped) end} } if escaped then table.insert(menu_items, {text = STRINGS.UI.DEATHSCREEN.CONTINUE, cb = function() self:OnContinue() end}) else table.insert(menu_items, {text = STRINGS.UI.DEATHSCREEN.RETRY, cb = function() self:OnRetry() end}) end self.menu = self.root:AddChild(Menu(menu_items, 180, true)) self.menu:SetPosition(-((#menu_items-1)*135)/2, -60, 0) self.menu:SetScale(.75,.75,.75) self:ShowResults(days_survived, start_xp) self.default_focus = self.menu end local function DoReload(slot) StartNextInstance({reset_action=RESET_ACTION.LOAD_SLOT, save_slot = slot or SaveGameIndex:GetCurrentSaveSlot()})
109110111112113114115116
local starts = Profile:GetValue("starts") or 0 Profile:SetValue("starts", starts+1) Profile:Save() self.menu:Disable() local slot = SaveGameIndex:GetCurrentSaveSlot() SaveGameIndex:DeleteSlot(slot, function()
165166167168169170171
local starts = Profile:GetValue("starts") or 0 Profile:SetValue("starts", starts+1) Profile:Save() self.menu:Disable() local slot = SaveGameIndex:GetCurrentSaveSlot() SaveGameIndex:DeleteSlot(slot, function()
148149150151152153154155156157158
end end function DeathScreen:SetStatus(xp, ignore_image) local level, percent = Progression.GetLevelForXP(xp) if not ignore_image then self.portrait:SetTint(0,0,0,1) local reward = Progression.GetRewardForLevel(level) if reward then
203204205206207208209210211212
end end function DeathScreen:SetStatus(xp, ignore_image) local level, percent = Progression.GetLevelForXP(xp) if not ignore_image and self.portrait then self.portrait:SetTint(0,0,0,1) local reward = Progression.GetRewardForLevel(level) if reward then
164165166167168169170171172173174175176177
self.portrait:Hide() end end self.leveltext:SetString(STRINGS.UI.DEATHSCREEN.LEVEL.." "..tostring(level+1)) self.progbar:GetAnimState():SetPercent("anim", percent) self.xptext:SetString(string.format("XP: %d", xp)) if xp >= Progression.GetXPCap() then self.rewardtext:SetString(STRINGS.UI.DEATHSCREEN.ATCAP) end
218219220221222223224225226227228229230231232233
self.portrait:Hide() end end if self.leveltext then self.leveltext:SetString(STRINGS.UI.DEATHSCREEN.LEVEL.." "..tostring(level+1)) end if self.progbar then self.progbar:GetAnimState():SetPercent("anim", percent) end if self.xptext then self.xptext:SetString(string.format("XP: %d", xp)) end if xp >= Progression.GetXPCap() and self.rewardtext then self.rewardtext:SetString(STRINGS.UI.DEATHSCREEN.ATCAP) end
234235236237238239240241242243244245246247248249
p = p + dt*fill_rate local xp = xp_for_level + math.min(end_p,p)*level_xp_size self:SetStatus(xp, p >= 1) self.progbar:GetAnimState():SetPercent("anim", p) Yield() until p >= end_p self.owner.SoundEmitter:KillSound("fillsound") if end_p >= 1 then self.owner.SoundEmitter:PlaySound("dontstarve/HUD/XP_bar_fill_unlock") self.progbar:GetAnimState():SetPercent("anim", 1) self.portrait:SetTint(1,1,1,1) self.portrait:ScaleTo(2, 1.5, .25) Sleep(1) end end
290291292293294295296297298299300301302303304305306307308309310
p = p + dt*fill_rate local xp = xp_for_level + math.min(end_p,p)*level_xp_size self:SetStatus(xp, p >= 1) if self.progbar then self.progbar:GetAnimState():SetPercent("anim", p) end Yield() until p >= end_p self.owner.SoundEmitter:KillSound("fillsound") if end_p >= 1 then self.owner.SoundEmitter:PlaySound("dontstarve/HUD/XP_bar_fill_unlock") if self.progbar then self.progbar:GetAnimState():SetPercent("anim", 1) end if self.portrait then self.portrait:SetTint(1,1,1,1) self.portrait:ScaleTo((1.25 * 1.5), 1.25, .25) end Sleep(1) end end