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("textbox.lua")
|
||||
|
||||
|
||||
main_txb = new_textbox(2, 98, 124, 124)
|
||||
|
||||
enemy_x = 78
|
||||
enemy_y = 8
|
||||
player_x = 12
|
||||
player_y = 56
|
||||
require("game.lua")
|
||||
|
||||
function _init()
|
||||
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)
|
||||
-- main_txb.current_text = "enemy " .. p_enemy.name .. " appeared!"
|
||||
states = {}
|
||||
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)
|
||||
main_txb.current_text = "go " .. p_enemy.name .. "!"
|
||||
gm = new_game("start_menu")
|
||||
states[gm.state].init(gm)
|
||||
end
|
||||
|
||||
function _draw()
|
||||
cls(0)
|
||||
draw_p(p_enemy)
|
||||
draw_p(p_player)
|
||||
draw_txb(main_txb)
|
||||
states[gm.state].draw(gm)
|
||||
end
|
||||
|
||||
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
|
@ -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