picking pokemon sorta
parent
e01ea1309f
commit
d82b3afeb1
@ -0,0 +1,127 @@
|
|||||||
|
require("pokemon.lua")
|
||||||
|
require("textbox.lua")
|
||||||
|
require("menu.lua")
|
||||||
|
|
||||||
|
function new_game(start_state)
|
||||||
|
return {
|
||||||
|
player = nil,
|
||||||
|
enemy = nil,
|
||||||
|
main_txb = new_textbox(2, 98, 124, 124),
|
||||||
|
menu = nil,
|
||||||
|
state = start_state,
|
||||||
|
lockout = 0,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
function new_state(name, init, draw, update, next, timer)
|
||||||
|
return {
|
||||||
|
name = name,
|
||||||
|
init = init,
|
||||||
|
draw = draw,
|
||||||
|
update = update,
|
||||||
|
next = next,
|
||||||
|
timer = timer,
|
||||||
|
next_state = false,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
function start_menu()
|
||||||
|
init = function(g)
|
||||||
|
end
|
||||||
|
|
||||||
|
update = function(g)
|
||||||
|
if btn(4) then
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
draw = function(g)
|
||||||
|
print("welcome to pico-mon!", 0, 0)
|
||||||
|
print("press a to continue", 0, 10)
|
||||||
|
end
|
||||||
|
|
||||||
|
return new_state("start_menu", init, draw, update, "pick_player")
|
||||||
|
end
|
||||||
|
|
||||||
|
function pick_state(enemy, name, next)
|
||||||
|
init = function(g)
|
||||||
|
g.lockout = 2
|
||||||
|
menu = pokemon_menu()
|
||||||
|
g.menu = menu
|
||||||
|
if enemy then
|
||||||
|
g.main_txb.current_text = "choose your enemy's pokemon"
|
||||||
|
else
|
||||||
|
g.main_txb.current_text = "choose your pokemon"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
update = function(g)
|
||||||
|
if g.lockout > 0 then
|
||||||
|
g.lockout = g.lockout - 1
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
if btn(2) then
|
||||||
|
m_up(g.menu)
|
||||||
|
elseif btn(3) then
|
||||||
|
m_down(g.menu)
|
||||||
|
end
|
||||||
|
|
||||||
|
if btn(4) then
|
||||||
|
p_name = m_select(g.menu)
|
||||||
|
p = choose(p_name, enemy)
|
||||||
|
if enemy then
|
||||||
|
g.enemy = p
|
||||||
|
else
|
||||||
|
g.player = p
|
||||||
|
end
|
||||||
|
g.menu = nil
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
draw = function(g)
|
||||||
|
draw_m(g.menu)
|
||||||
|
draw_txb(g.main_txb)
|
||||||
|
end
|
||||||
|
|
||||||
|
return new_state(name, init, draw, update, next)
|
||||||
|
end
|
||||||
|
|
||||||
|
function appear_enemy()
|
||||||
|
init = function(g)
|
||||||
|
appear(g.enemy)
|
||||||
|
g.main_txb.current_text = "enemy " .. g.enemy.name .. " appeared!"
|
||||||
|
end
|
||||||
|
|
||||||
|
update = function(g)
|
||||||
|
end
|
||||||
|
|
||||||
|
draw = function(g)
|
||||||
|
draw_p(g.enemy)
|
||||||
|
draw_txb(g.main_txb)
|
||||||
|
end
|
||||||
|
|
||||||
|
return new_state("appear_enemy", init, draw, update, "appear_player", 80)
|
||||||
|
end
|
||||||
|
|
||||||
|
function appear_player()
|
||||||
|
init = function(g)
|
||||||
|
appear(g.player)
|
||||||
|
g.main_txb.current_text = "go " .. g.player.name .. "!"
|
||||||
|
end
|
||||||
|
|
||||||
|
update = function(g)
|
||||||
|
end
|
||||||
|
|
||||||
|
draw = function(g)
|
||||||
|
draw_p(g.enemy)
|
||||||
|
draw_p(g.player)
|
||||||
|
draw_txb(g.main_txb)
|
||||||
|
end
|
||||||
|
|
||||||
|
return new_state("appear_player", init, draw, update, "appear_player", 80)
|
||||||
|
end
|
@ -1,36 +1,40 @@
|
|||||||
require("pokemon.lua")
|
require("pokemon.lua")
|
||||||
require("textbox.lua")
|
require("textbox.lua")
|
||||||
|
require("game.lua")
|
||||||
|
|
||||||
main_txb = new_textbox(2, 98, 124, 124)
|
|
||||||
|
|
||||||
enemy_x = 78
|
|
||||||
enemy_y = 8
|
|
||||||
player_x = 12
|
|
||||||
player_y = 56
|
|
||||||
|
|
||||||
function _init()
|
function _init()
|
||||||
cls(0)
|
cls(0)
|
||||||
p_player = axoleafel(false)
|
|
||||||
p_player.x = player_x
|
|
||||||
p_player.y = player_y
|
|
||||||
p_enemy = axoleafel(true)
|
|
||||||
p_enemy.x = enemy_x
|
|
||||||
p_enemy.y = enemy_y
|
|
||||||
|
|
||||||
-- appear(p_enemy)
|
states = {}
|
||||||
-- main_txb.current_text = "enemy " .. p_enemy.name .. " appeared!"
|
states["start_menu"] = start_menu()
|
||||||
|
states["pick_player"] = pick_state(false, "pick_player", "pick_enemy")
|
||||||
|
states["pick_enemy"] = pick_state(true, "pick_enemy", "appear_enemy")
|
||||||
|
states["appear_enemy"] = appear_enemy()
|
||||||
|
states["appear_player"] = appear_player()
|
||||||
|
-- states["player_turn"] = new_state("player_turn")
|
||||||
|
|
||||||
appear(p_player)
|
gm = new_game("start_menu")
|
||||||
main_txb.current_text = "go " .. p_enemy.name .. "!"
|
states[gm.state].init(gm)
|
||||||
end
|
end
|
||||||
|
|
||||||
function _draw()
|
function _draw()
|
||||||
cls(0)
|
cls(0)
|
||||||
draw_p(p_enemy)
|
states[gm.state].draw(gm)
|
||||||
draw_p(p_player)
|
|
||||||
draw_txb(main_txb)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
function _update()
|
function _update()
|
||||||
|
next_state = states[gm.state].update(gm)
|
||||||
|
|
||||||
|
t = states[gm.state].timer
|
||||||
|
if t then
|
||||||
|
if t <= 0 then
|
||||||
|
next_state = true
|
||||||
|
end
|
||||||
|
states[gm.state].timer = t - 1
|
||||||
|
end
|
||||||
|
|
||||||
|
if next_state then
|
||||||
|
gm.state = states[gm.state].next
|
||||||
|
states[gm.state].init(gm)
|
||||||
|
end
|
||||||
end
|
end
|
@ -0,0 +1,51 @@
|
|||||||
|
-- Constructor
|
||||||
|
|
||||||
|
cursor_spr = 207
|
||||||
|
|
||||||
|
function new_menu(x, y, w, h, options)
|
||||||
|
return {
|
||||||
|
x = x,
|
||||||
|
y = y,
|
||||||
|
w = w,
|
||||||
|
h = h,
|
||||||
|
|
||||||
|
options = options,
|
||||||
|
cursor = 1,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
-- Menu methods
|
||||||
|
|
||||||
|
function pokemon_menu()
|
||||||
|
return new_menu(60, 8, 88, 68, {
|
||||||
|
"axoleafel",
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
function draw_m(m)
|
||||||
|
rect(m.x, m.y, m.w, m.h)
|
||||||
|
for i,o in ipairs(m.options) do
|
||||||
|
r = i-1
|
||||||
|
o_x = m.x+14
|
||||||
|
o_y = m.y+4+(8*r)
|
||||||
|
print(o, o_x, o_y)
|
||||||
|
end
|
||||||
|
|
||||||
|
spr(cursor_spr, m.x+14, m.y+4+(8*m.cursor))
|
||||||
|
end
|
||||||
|
|
||||||
|
function m_down(m)
|
||||||
|
if m.cursor == 1 then
|
||||||
|
m.cursor = table.getn(m.options)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function m_up(m)
|
||||||
|
if m.cursor == table.getn(m.options) then
|
||||||
|
m.cursor = 1
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function m_select(m)
|
||||||
|
return m.options[m.cursor]
|
||||||
|
end
|
Loading…
Reference in New Issue