parent
f65edf1924
commit
e5d8a7f874
9 changed files with 247 additions and 38 deletions
|
@ -7,6 +7,7 @@ return {
|
||||||
name = "spinattack",
|
name = "spinattack",
|
||||||
fullname = "Spin Attack",
|
fullname = "Spin Attack",
|
||||||
cost = 03,
|
cost = 03,
|
||||||
|
description = "Spin to attack. Roll at the right time for more damages",
|
||||||
|
|
||||||
targetNumber = 1, -- 0 for targeting all ennemies
|
targetNumber = 1, -- 0 for targeting all ennemies
|
||||||
targetEnnemies = true,
|
targetEnnemies = true,
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
return {
|
return {
|
||||||
name = "spindash",
|
name = "spindash",
|
||||||
fullname = "Spin Dash",
|
fullname = "Spin Dash",
|
||||||
|
description = "Sonic's signature attack ! Charge for more damage",
|
||||||
cost = 05,
|
cost = 05,
|
||||||
targetNumber = 1, -- 0 for targeting all ennemies
|
targetNumber = 1, -- 0 for targeting all ennemies
|
||||||
targetEnnemies = true,
|
targetEnnemies = true,
|
||||||
|
|
|
@ -214,6 +214,9 @@ function OverWorld:drawScreenTopLayer()
|
||||||
|
|
||||||
self.assets.fonts["hudnbrs"]:print(game:getTimeString(), 424 - 16, 240 - self.timeBorder, "right")
|
self.assets.fonts["hudnbrs"]:print(game:getTimeString(), 424 - 16, 240 - self.timeBorder, "right")
|
||||||
|
|
||||||
|
if (self.currentScreen ~= nil) then
|
||||||
|
self.currentScreen:drawOverEverything()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
return OverWorld
|
return OverWorld
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
local BasicPage = Object:extend()
|
local PageParent = require "scenes.overworld.screens.mainmenu.character.pageparent"
|
||||||
|
local BasicPage = PageParent:extend()
|
||||||
|
|
||||||
local menu = require "game.modules.menus.fancy"
|
local menu = require "game.modules.menus.fancy"
|
||||||
local gui = require "game.modules.gui"
|
local gui = require "game.modules.gui"
|
||||||
|
@ -21,22 +22,15 @@ function BasicPage:new(view, character)
|
||||||
self.hpbar:setColorBackground(112/255, 0, 0)
|
self.hpbar:setColorBackground(112/255, 0, 0)
|
||||||
self.ppbar:setColorForeground(0, 248/255, 248/255, 1)
|
self.ppbar:setColorForeground(0, 248/255, 248/255, 1)
|
||||||
self.ppbar:setColorBackground(0, 54/255, 229/255)
|
self.ppbar:setColorBackground(0, 54/255, 229/255)
|
||||||
end
|
|
||||||
|
|
||||||
function BasicPage:getMenuWidgets()
|
|
||||||
|
|
||||||
end
|
|
||||||
|
|
||||||
function BasicPage:update(dt)
|
|
||||||
|
|
||||||
|
BasicPage.super.new(self, view, character, {})
|
||||||
end
|
end
|
||||||
|
|
||||||
function BasicPage:draw()
|
function BasicPage:draw()
|
||||||
self:drawIdentity(const.X, const.Y)
|
self:drawIdentity(const.X, const.Y)
|
||||||
self:drawHPPP(const.X, const.Y + 48)
|
self:drawHPPP(const.X, const.Y + 48)
|
||||||
self:drawLevel(const.X, 100)
|
self:drawLevel(const.X, 100)
|
||||||
self:drawStats(const.X, 160)
|
self:drawWeakStrong(const.X, 160)
|
||||||
--self:drawWeakStrong(const.X, 160)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function BasicPage:drawIdentity(x, y)
|
function BasicPage:drawIdentity(x, y)
|
||||||
|
@ -63,29 +57,9 @@ function BasicPage:drawLevel(x, y)
|
||||||
self.view.scene.assets.fonts["small"]:draw(levelString, x + 6, y + 4, -1, "left")
|
self.view.scene.assets.fonts["small"]:draw(levelString, x + 6, y + 4, -1, "left")
|
||||||
end
|
end
|
||||||
|
|
||||||
function BasicPage:drawStats(x, y)
|
|
||||||
local statString = "ATK " .. self.character.stats.attack .. "\n"
|
|
||||||
statString = statString .. "DEF " .. self.character.stats.defense .. "\n"
|
|
||||||
|
|
||||||
local statString2 = "POW " .. self.character.stats.power .. "\n"
|
|
||||||
statString2 = statString2 .. "MND " .. self.character.stats.mind .. "\n"
|
|
||||||
|
|
||||||
local statString3 = "SPD " .. self.character.stats.speed .. "\n"
|
|
||||||
statString3 = statString3 .. "TEK " .. self.character.stats.technic
|
|
||||||
|
|
||||||
local pos1 = const.CHARPAGESIZE * (1/3)
|
|
||||||
local pos2 = const.CHARPAGESIZE * (2/3)
|
|
||||||
|
|
||||||
love.graphics.draw(self.nameBox, x, y)
|
|
||||||
|
|
||||||
self.view.scene.assets.fonts["small"]:draw(statString, x + 6, y + 4, -1, "left")
|
|
||||||
self.view.scene.assets.fonts["small"]:draw(statString2, x + 6 + pos1, y + 4, -1, "left")
|
|
||||||
self.view.scene.assets.fonts["small"]:draw(statString3, x + 6 + pos2, y + 4, -1, "left")
|
|
||||||
end
|
|
||||||
|
|
||||||
function BasicPage:drawWeakStrong(x, y)
|
function BasicPage:drawWeakStrong(x, y)
|
||||||
local weakString = "Weak to: Earth, Lightning"
|
local weakString = "Weak to: Nothing"--"Earth, Lightning"
|
||||||
local strongString = "Resist To: Fire"
|
local strongString = "Resist To: Nothing"
|
||||||
|
|
||||||
love.graphics.draw(self.nameBox, x, y)
|
love.graphics.draw(self.nameBox, x, y)
|
||||||
self.view.scene.assets.fonts["small"]:draw(weakString .. "\n" .. strongString, x + 6, y + 4, -1, "left")
|
self.view.scene.assets.fonts["small"]:draw(weakString .. "\n" .. strongString, x + 6, y + 4, -1, "left")
|
||||||
|
|
|
@ -6,7 +6,9 @@ local gui = require "game.modules.gui"
|
||||||
local const = require "scenes.overworld.screens.mainmenu.const"
|
local const = require "scenes.overworld.screens.mainmenu.const"
|
||||||
|
|
||||||
local BasicPage = require "scenes.overworld.screens.mainmenu.character.basicpage"
|
local BasicPage = require "scenes.overworld.screens.mainmenu.character.basicpage"
|
||||||
local pageList = {BasicPage}
|
local StatPage = require "scenes.overworld.screens.mainmenu.character.statpage"
|
||||||
|
local SkillPage = require "scenes.overworld.screens.mainmenu.character.skillpage"
|
||||||
|
local pageList = {BasicPage, StatPage, SkillPage}
|
||||||
|
|
||||||
local ReturnWidget = menu.BaseWidget:extend()
|
local ReturnWidget = menu.BaseWidget:extend()
|
||||||
|
|
||||||
|
@ -48,18 +50,22 @@ function CharacterScreen:setPage(newPageIndex)
|
||||||
end
|
end
|
||||||
|
|
||||||
function CharacterScreen:setMenu()
|
function CharacterScreen:setMenu()
|
||||||
local itemNumber = 1
|
local itemNumber = self.page:getMenuSize()
|
||||||
local y = const.Y2 - (16*itemNumber) + 2
|
local y = const.Y2 - (16*itemNumber) + 2
|
||||||
menu.FancyMenu(self.scene, "menu", const.X2 - 128 - 14, y, 128, 1, false)
|
menu.FancyMenu(self.scene, "menu", const.X2 - 128 - 14, y, 128, itemNumber, false)
|
||||||
self.page:getMenuWidgets()
|
self.page:getMenuWidgets()
|
||||||
--menu.BaseWidget(self.scene, "equip", "Change talent", ">")
|
|
||||||
--menu.BaseWidget(self.scene, "equip", "Battle skills", ">")
|
|
||||||
--menu.BaseWidget(self.scene, "equip", "Equipement", ">")
|
|
||||||
ReturnWidget(self.scene, self.charName)
|
ReturnWidget(self.scene, self.charName)
|
||||||
|
|
||||||
|
local customMenu = self.page:getCustomMenus()
|
||||||
|
|
||||||
self.scene.menusystem:switchMenu("menu")
|
self.scene.menusystem:switchMenu("menu")
|
||||||
self.scene.menusystem.menus["menu"]:getFocus()
|
self.scene.menusystem.menus["menu"]:getFocus()
|
||||||
self.scene.menusystem.menus["menu"]:setCancelWidget()
|
self.scene.menusystem.menus["menu"]:setCancelWidget()
|
||||||
|
self.scene.menusystem.menus["menu"].isLocked = true
|
||||||
|
if (customMenu ~= nil) then
|
||||||
|
customMenu.isLocked = true
|
||||||
|
customMenu.isVisible = true
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function CharacterScreen:draw()
|
function CharacterScreen:draw()
|
||||||
|
@ -67,12 +73,32 @@ function CharacterScreen:draw()
|
||||||
if (self.page ~= nil) then
|
if (self.page ~= nil) then
|
||||||
self.page:draw()
|
self.page:draw()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
for i = 1, #pageList, 1 do
|
||||||
|
local radius = 2
|
||||||
|
if (i == self.pageIndex) then
|
||||||
|
radius = 3
|
||||||
|
end
|
||||||
|
local x = (16*i) + 240 + 64
|
||||||
|
local y = 17
|
||||||
|
local outlineLight = 0.15
|
||||||
|
love.graphics.circle("fill", x + 8, y + 8, radius, 8)
|
||||||
|
love.graphics.setColor(outlineLight, outlineLight, outlineLight, 1)
|
||||||
|
love.graphics.circle("line", x + 8, y + 8, radius, 8)
|
||||||
|
utils.graphics.resetColor()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function CharacterScreen:drawBackground()
|
function CharacterScreen:drawBackground()
|
||||||
love.graphics.draw(self.artwork, self.artworkOrigin.x, self.artworkOrigin.y)
|
love.graphics.draw(self.artwork, self.artworkOrigin.x, self.artworkOrigin.y)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function CharacterScreen:drawOverEverything()
|
||||||
|
if (self.page ~= nil) then
|
||||||
|
self.page:drawOverEverything()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
-- Widgets
|
-- Widgets
|
||||||
|
|
||||||
function ReturnWidget:new(scene, charName)
|
function ReturnWidget:new(scene, charName)
|
||||||
|
|
|
@ -0,0 +1,46 @@
|
||||||
|
local PageParent = Object:extend()
|
||||||
|
local menu = require "game.modules.menus.fancy"
|
||||||
|
local Widget = menu.BaseWidget:extend()
|
||||||
|
|
||||||
|
function PageParent:new(view, character, menu)
|
||||||
|
self.view = view
|
||||||
|
self.character = game.characters.list[character]
|
||||||
|
self.menu = menu or {}
|
||||||
|
end
|
||||||
|
|
||||||
|
function PageParent:update(dt)
|
||||||
|
end
|
||||||
|
|
||||||
|
function PageParent:getMenuSize()
|
||||||
|
return #self.menu + 1
|
||||||
|
end
|
||||||
|
|
||||||
|
function PageParent:getMenuWidgets()
|
||||||
|
for index, name in ipairs(self.menu) do
|
||||||
|
Widget(self, name, index)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function PageParent:menuResponses(i)
|
||||||
|
end
|
||||||
|
|
||||||
|
function PageParent:getCustomMenus()
|
||||||
|
end
|
||||||
|
|
||||||
|
function PageParent:draw()
|
||||||
|
end
|
||||||
|
|
||||||
|
function PageParent:drawOverEverything()
|
||||||
|
end
|
||||||
|
|
||||||
|
function Widget:new(page, name, num)
|
||||||
|
self.num = num
|
||||||
|
self.page = page
|
||||||
|
Widget.super.new(self, self.page.view.scene, "menu", name, ">")
|
||||||
|
end
|
||||||
|
|
||||||
|
function Widget:action()
|
||||||
|
self.page:menuResponses(self.num)
|
||||||
|
end
|
||||||
|
|
||||||
|
return PageParent
|
|
@ -0,0 +1,68 @@
|
||||||
|
local PageParent = require "scenes.overworld.screens.mainmenu.character.pageparent"
|
||||||
|
local StatPage = PageParent:extend()
|
||||||
|
|
||||||
|
local menu = require "game.modules.menus.list"
|
||||||
|
local const = require "scenes.overworld.screens.mainmenu.const"
|
||||||
|
|
||||||
|
local SkillMenu = menu.ListMenu:extend()
|
||||||
|
local SkillWidget = menu.DualTextWidget:extend()
|
||||||
|
local PLAYER_MESSAGE = 240 - 24
|
||||||
|
|
||||||
|
function StatPage:new(view, character)
|
||||||
|
StatPage.super.new(self, view, character, {"See skill"})
|
||||||
|
self.message = ""
|
||||||
|
end
|
||||||
|
|
||||||
|
function StatPage:getCustomMenus()
|
||||||
|
return SkillMenu(self, self.character)
|
||||||
|
end
|
||||||
|
|
||||||
|
function StatPage:menuResponses(i)
|
||||||
|
if (#self.character.skills > 0) then
|
||||||
|
self.view.scene.menusystem:switchMenu("equip")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function StatPage:drawOverEverything()
|
||||||
|
if (not utils.string.isEmpty(self.message)) then
|
||||||
|
love.graphics.setColor(0,0,0, 0.66)
|
||||||
|
love.graphics.rectangle("fill", 0, PLAYER_MESSAGE, 424, 16)
|
||||||
|
self.view.scene.assets.fonts["small"]:setColor(1,1,1, 1)
|
||||||
|
self.view.scene.assets.fonts["small"]:draw(self.message, 424/2, PLAYER_MESSAGE - 1, -1, "center")
|
||||||
|
self.view.scene.assets.fonts["small"]:setColor(1,1,1, 1)
|
||||||
|
utils.graphics.resetColor()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function StatPage:setMessage(message)
|
||||||
|
self.message = message
|
||||||
|
end
|
||||||
|
|
||||||
|
function StatPage:removeEquip(type)
|
||||||
|
self.character:removeEquip(type)
|
||||||
|
end
|
||||||
|
|
||||||
|
function SkillMenu:new(page, character)
|
||||||
|
self.page = page
|
||||||
|
SkillMenu.super.new(self, page.view.scene, "equip", const.X, const.Y + 4, const.CHARPAGESIZE, 9, true, true)
|
||||||
|
for _, skill in ipairs(character.skills) do
|
||||||
|
SkillWidget(page, skill.name)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function SkillMenu:cancelAction()
|
||||||
|
self.scene.menusystem.menus["menu"]:getFocus()
|
||||||
|
self.page:setMessage("")
|
||||||
|
end
|
||||||
|
|
||||||
|
function SkillWidget:new(page, skill)
|
||||||
|
self.page = page
|
||||||
|
self.skillData = game.skills:getSkillData(skill)
|
||||||
|
SkillWidget.super.new(self, self.page.view.scene, "equip", self.skillData.fullname, utils.math.numberToString(self.skillData.cost, 2))
|
||||||
|
end
|
||||||
|
|
||||||
|
function SkillWidget:selectAction()
|
||||||
|
self.page:setMessage(self.skillData.description)
|
||||||
|
end
|
||||||
|
|
||||||
|
return StatPage
|
|
@ -0,0 +1,87 @@
|
||||||
|
local PageParent = require "scenes.overworld.screens.mainmenu.character.pageparent"
|
||||||
|
local StatPage = PageParent:extend()
|
||||||
|
|
||||||
|
local menu = require "game.modules.menus.list"
|
||||||
|
local gui = require "game.modules.gui"
|
||||||
|
local const = require "scenes.overworld.screens.mainmenu.const"
|
||||||
|
|
||||||
|
local EquipMenu = menu.ListMenu:extend()
|
||||||
|
local EquipWidget = menu.DualTextWidget:extend()
|
||||||
|
|
||||||
|
local itemutils = require "game.utils.items"
|
||||||
|
local STATS = require "datas.stats"
|
||||||
|
|
||||||
|
function StatPage:new(view, character)
|
||||||
|
self.statBox = gui.newTextBox("assets/gui/dialogbox.png", const.CHARPAGESIZE, 40 + 32)
|
||||||
|
|
||||||
|
StatPage.super.new(self, view, character, {"Remove item"})
|
||||||
|
end
|
||||||
|
|
||||||
|
function StatPage:getCustomMenus()
|
||||||
|
return EquipMenu(self)
|
||||||
|
end
|
||||||
|
|
||||||
|
function StatPage:menuResponses(i)
|
||||||
|
self.view.scene.menusystem:switchMenu("equip")
|
||||||
|
end
|
||||||
|
|
||||||
|
function StatPage:draw()
|
||||||
|
self:drawStats(const.X, 100)
|
||||||
|
end
|
||||||
|
|
||||||
|
function StatPage:drawStats(x, y)
|
||||||
|
love.graphics.draw(self.statBox, x, y)
|
||||||
|
|
||||||
|
local char = self.character
|
||||||
|
for i, statName in ipairs(STATS.LIST) do
|
||||||
|
local xStat = x + (((i - 1) % 2) * (const.CHARPAGESIZE/2)) + 6
|
||||||
|
local yStat = y + (math.floor((i-1)/2) * 16) + 4
|
||||||
|
local middle = xStat + 10 + const.CHARPAGESIZE/4
|
||||||
|
local stat = char.stats[statName]
|
||||||
|
self.view.scene.assets.fonts["small"]:draw(STATS.SIMPLENAME[statName], xStat, yStat, const.CHARPAGESIZE, "left")
|
||||||
|
self.view.scene.assets.fonts["small"]:setColor(1, 1, 1, 0.9)
|
||||||
|
self.view.scene.assets.fonts["small"]:draw(stat, middle, yStat, -1, "center")
|
||||||
|
self.view.scene.assets.fonts["small"]:setColor(1, 1, 1, 1)
|
||||||
|
utils.graphics.resetColor()
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function StatPage:removeEquip(type)
|
||||||
|
self.character:removeEquip(type)
|
||||||
|
end
|
||||||
|
|
||||||
|
function EquipMenu:new(page)
|
||||||
|
self.page = page
|
||||||
|
EquipMenu.super.new(self, page.view.scene, "equip", const.X, const.Y + 4, const.CHARPAGESIZE, 3, true, true)
|
||||||
|
EquipWidget(page, "gloves")
|
||||||
|
EquipWidget(page, "shoes")
|
||||||
|
EquipWidget(page, "accessories")
|
||||||
|
end
|
||||||
|
|
||||||
|
function EquipMenu:cancelAction()
|
||||||
|
self.scene.menusystem.menus["menu"]:getFocus()
|
||||||
|
end
|
||||||
|
|
||||||
|
function EquipWidget:new(page, type)
|
||||||
|
self.page = page
|
||||||
|
self.type = type
|
||||||
|
local label = self:getLabel()
|
||||||
|
EquipWidget.super.new(self, self.page.view.scene, "equip", label, "")
|
||||||
|
end
|
||||||
|
|
||||||
|
function EquipWidget:getLabel()
|
||||||
|
local obj = self.page.character.equip[self.type]
|
||||||
|
if (utils.string.isEmpty(obj)) then
|
||||||
|
return "No " .. self.type
|
||||||
|
end
|
||||||
|
local data = itemutils.getItemData(self.type, obj)
|
||||||
|
return data.fullname
|
||||||
|
end
|
||||||
|
|
||||||
|
function EquipWidget:action()
|
||||||
|
self.page:removeEquip(self.type)
|
||||||
|
self.label = self:getLabel()
|
||||||
|
self:redrawCanvas()
|
||||||
|
end
|
||||||
|
|
||||||
|
return StatPage
|
|
@ -43,4 +43,7 @@ function MenuScreenParent:drawBackground()
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function MenuScreenParent:drawOverEverything()
|
||||||
|
end
|
||||||
|
|
||||||
return MenuScreenParent
|
return MenuScreenParent
|
||||||
|
|
Loading…
Reference in a new issue