Added GUI2-compatible versions of mp tests and plugin scripts

This commit is contained in:
Charles Dang 2016-08-27 01:14:49 +11:00
parent a043902236
commit 793b8491ad
4 changed files with 284 additions and 1 deletions

114
host-gui2.lua Normal file
View file

@ -0,0 +1,114 @@
-- host.lua --
-- Try to host a game called "Test"
local function plugin()
local function log(text)
std_print("host: " .. text)
end
local counter = 0
local events, context, info
local helper = wesnoth.require("lua/helper.lua")
local function idle_text(text)
counter = counter + 1
if counter >= 100 then
counter = 0
log("idling " .. text)
end
end
log("hello world")
repeat
events, context, info = coroutine.yield()
idle_text("in " .. info.name .. " waiting for titlescreen or lobby")
until info.name == "titlescreen" or info.name == "Multiplayer Lobby"
local tries = 0
while info.name == "titlescreen" and tries < 100 do
context.play_multiplayer({})
tries = tries + 1
log("playing multiplayer...")
events, context, info = coroutine.yield()
end
if info.name == "titlescreen" then
context.exit({code = 1})
coroutine.yield()
end
repeat
events, context, info = coroutine.yield()
idle_text("in " .. info.name .. " waiting for lobby")
until info.name == "Multiplayer Lobby"
context.chat({message = "hosting"})
log("creating a game")
context.create({})
repeat
events, context, info = coroutine.yield()
idle_text("in " .. info.name .. " waiting for create")
until info.name == "Multiplayer Create"
context.select_type({type = "scenario"})
local s = info.find_level({id = "test1"})
if s.index < 0 then
log(" error: Could not find scenario with id=test1")
end
context.select_level({index = s.index})
log("configuring a game")
context.set_name({name = "Test"})
context.update_settings({registered_users = false})
events, context, info = coroutine.yield()
context.create({})
ready = nil
repeat
events, context, info = coroutine.yield()
for i,v in ipairs(events) do
if v[1] == "chat" then
std_print(events[i][2])
if v[2].message == "ready" then
ready = true
end
end
end
idle_text("in " .. info.name .. " waiting for ready in chat")
until ready
log("starting game...")
context.chat({message = "starting"})
context.launch({})
repeat
events, context, info = coroutine.yield()
idle_text("in " .. info.name .. " waiting for game")
until info.name == "Game"
log("got to a game context...")
repeat
events, context, info = coroutine.yield()
idle_text("in " .. info.name .. " waiting for not game")
until info.name ~= "Game"
log("left a game context...")
repeat
context.quit({})
log("quitting a " .. info.name .. " context...")
events, context, info = coroutine.yield()
until info.name == "titlescreen"
context.exit({code = 0})
coroutine.yield()
end
return plugin

View file

@ -72,7 +72,6 @@ local function plugin()
until info.name == "Multiplayer Configure"
context.set_name({name = "Test"})
context.update_settings({registered_users = false})
log("hosting a game")
context.launch({})

149
join-gui2.lua Normal file
View file

@ -0,0 +1,149 @@
-- join.lua --
-- Try to join a game called "Test"
local function plugin()
local function log(text)
std_print("join: " .. text)
end
local counter = 0
local events, context, info
local helper = wesnoth.require("lua/helper.lua")
local function find_test_game(info)
local g = info.game_list()
if g then
local gamelist = helper.get_child(g, "gamelist")
if gamelist then
for i = 1, #gamelist do
local t = gamelist[i]
if t[1] == "game" then
local game = t[2]
if game.scenario == "Test" then
return game.id
end
end
end
end
end
return nil
end
local function idle_text(text)
counter = counter + 1
if counter >= 100 then
counter = 0
log("idling " .. text)
end
end
log("hello world")
repeat
events, context, info = coroutine.yield()
idle_text("in " .. info.name .. " waiting for titlescreen or lobby")
until info.name == "titlescreen" or info.name == "Multiplayer Lobby"
local tries = 0
while info.name == "titlescreen" and tries < 100 do
context.play_multiplayer({})
tries = tries + 1
log("playing multiplayer...")
events, context, info = coroutine.yield()
end
if info.name == "titlescreen" then
context.exit({code = 1})
coroutine.yield()
end
repeat
events, context, info = coroutine.yield()
idle_text("in " .. info.name .. " waiting for lobby")
until info.name == "Multiplayer Lobby"
events, context, info = coroutine.yield()
context.chat({message = "waiting for test game to join..."})
local test_game = nil
repeat
events, context, info = coroutine.yield()
idle_text("in " .. info.name .. " waiting for test game")
for i,v in ipairs(events) do
if v[1] == "chat" then
std_print("chat:", v[2].message)
end
end
test_game = find_test_game(info)
until test_game
log("found a test game, joining... id = " .. test_game)
context.chat({message = "found test game"})
context.select_game({id = test_game})
events, context, info = coroutine.yield()
context.chat({message = "going to join"})
context.join({})
events, context, info = coroutine.yield()
context.chat({message = "done first join"})
repeat
if context.join then
context.join({})
else
std_print("did not find join...")
end
events, context, info = coroutine.yield()
idle_text("in " .. info.name .. " waiting for leader select dialog")
until info.name == "Dialog" or info.name == "Multiplayer Wait"
if info.name == "Dialog" then
log("got a leader select dialog...")
context.set_result({result = 0})
events, context, info = coroutine.yield()
repeat
events, context, info = coroutine.yield()
idle_text("in " .. info.name .. " waiting for mp wait")
until info.name == "Multiplayer Wait"
end
log("got to multiplayer wait...")
context.chat({message = "ready"})
repeat
events, context, info = coroutine.yield()
idle_text("in " .. info.name .. " waiting for game")
until info.name == "Game"
log("got to a game context...")
repeat
events, context, info = coroutine.yield()
idle_text("in " .. info.name .. " waiting for not game")
until info.name ~= "Game"
log("left a game context...")
repeat
context.quit({})
log("quitting a " .. info.name .. " context...")
events, context, info = coroutine.yield()
until info.name == "titlescreen"
context.exit({code = 0})
coroutine.yield()
end
return plugin

View file

@ -0,0 +1,21 @@
#!/bin/bash
set -e #Error if any line errors
set -m #Enable job control
set -v #Print shell commands as they are read
./wesnothd --port 12345 --log-debug=server --log-warning=config &
serverpid=$!
./wesnoth --plugin=host-gui2.lua --server=localhost:12345 --username=host --mp-test --noaddons &
hostpid=$!
./wesnoth --plugin=join-gui2.lua --server=localhost:12345 --username=join --mp-test --noaddons &
joinpid=$!
wait $hostpid
wait $joinpid
kill $serverpid
exit 0