widelands-dev team mailing list archive
-
widelands-dev team
-
Mailing list archive
-
Message #02030
[Merge] lp:~widelands-dev/widelands/bug-1322473 into lp:widelands
GunChleoc has proposed merging lp:~widelands-dev/widelands/bug-1322473 into lp:widelands.
Requested reviews:
Widelands Developers (widelands-dev)
Related bugs:
Bug #1322473 in widelands: " Add Win conditions as an Objective"
https://bugs.launchpad.net/widelands/+bug/1322473
For more details, see:
https://code.launchpad.net/~widelands-dev/widelands/bug-1322473/+merge/221235
Initial win condition is now an objective.
Keep the bug open for further future improvements.
--
https://code.launchpad.net/~widelands-dev/widelands/bug-1322473/+merge/221235
Your team Widelands Developers is requested to review the proposed merge of lp:~widelands-dev/widelands/bug-1322473 into lp:widelands.
=== modified file 'maps/MP Scenarios/Island Hopping.wmf/scripting/multiplayer_init.lua'
--- maps/MP Scenarios/Island Hopping.wmf/scripting/multiplayer_init.lua 2014-03-25 06:18:48 +0000
+++ maps/MP Scenarios/Island Hopping.wmf/scripting/multiplayer_init.lua 2014-05-28 13:43:10 +0000
@@ -239,6 +239,9 @@
disable_unused_buildings()
send_to_all(welcome_msg)
+ -- set the objective with the game type for all players
+ -- TODO change this to a broadcast once individual game objectives have been implementes
+ game.players[1]:add_objective("win_conditions", _"Rules", welcome_msg)
for idx,plr in ipairs(game.players) do
run(function() run_island(plr, 1) end)
=== modified file 'maps/MP Scenarios/Smugglers.wmf/scripting/multiplayer_init.lua'
--- maps/MP Scenarios/Smugglers.wmf/scripting/multiplayer_init.lua 2014-03-25 06:18:48 +0000
+++ maps/MP Scenarios/Smugglers.wmf/scripting/multiplayer_init.lua 2014-05-28 13:43:10 +0000
@@ -140,7 +140,9 @@
end
send_to_all(welcome_msg:format((ngettext("%i point", "%i points", points_to_win)):format(points_to_win)))
-
+ -- set the objective with the game type for all players
+ -- TODO change this to a broadcast once individual game objectives have been implementes
+ game.players[1]:add_objective("win_conditions", _"Rules", welcome_msg:format((ngettext("%i point", "%i points", points_to_win)):format(points_to_win)))
for idx,descr in ipairs(route_descrs) do
run(wait_for_established_route, descr)
=== modified file 'maps/Plateau.wmf/scripting/init.lua'
--- maps/Plateau.wmf/scripting/init.lua 2014-03-25 06:18:48 +0000
+++ maps/Plateau.wmf/scripting/init.lua 2014-05-28 13:43:10 +0000
@@ -22,6 +22,7 @@
sleep(300)
send_msg(briefing_1_the_forbidden_island)
+ local o = add_obj(obj_forbidden_island)
local map = wl.Game().map
while not p1:seen_field(map:get_field(5,8)) do sleep(2345) end
@@ -47,7 +48,8 @@
scroll_smoothly_to(castle)
send_msg(briefing_2_found_ancient_castle)
- local o = add_obj(obj_capture_ancient_castle)
+ o.done = true
+ o = add_obj(obj_capture_ancient_castle)
-- Wait till we conquered the castle
while #p1:get_buildings"castle.atlanteans" < 1 do sleep(2345) end
=== modified file 'maps/Plateau.wmf/scripting/texts.lua'
--- maps/Plateau.wmf/scripting/texts.lua 2014-04-09 17:50:02 +0000
+++ maps/Plateau.wmf/scripting/texts.lua 2014-05-28 13:43:10 +0000
@@ -23,6 +23,19 @@
return p1:add_objective(o.name, o.title, _obj(reflow(o.body)), o)
end
+obj_forbidden_island = {
+ name = "forbidden_island",
+ title =_"The Forbidden Island",
+ body = _(
+[[Finally! We have just taken our first step towards victory! ]] ..
+[[Last night, we landed on the forbidden island and defeated the few guards that were watching the ]] ..
+[[north-western part of the island. ]] ..
+[[I am quite sure that none of the other warlords has detected us so far, ]] ..
+[[so we should keep quiet and build up our infrastructure. Soon we will be strong enough to raid their positions.]]),
+}
+
+
+
obj_capture_ancient_castle = {
name = "capture_ancient_castle",
title =_ "Capture the Ancient Castle",
=== modified file 'scripting/win_condition_functions.lua'
--- scripting/win_condition_functions.lua 2013-08-07 16:58:48 +0000
+++ scripting/win_condition_functions.lua 2014-05-28 13:43:10 +0000
@@ -125,3 +125,19 @@
wl.game.report_result(p, 0, make_extra_data(p, wc_name, wc_ver, extra))
end
end
+
+
+-- RST
+-- .. function:: broadcast_objective(plrs, header, msg, body)
+--
+-- :arg plrs: This should be wl.Game().players
+-- :arg name: A unique name for the objective
+-- :arg title: The title to be displayed for the objective
+-- :arg body: The content text to be displayed for the objective
+--
+-- broadcast an objective to all players
+-- technically, it is assigned to player1, because all players will see all objectives
+function broadcast_objective(plrs, name, title, body)
+ plrs[1]:add_objective(name, title, body)
+end
+
=== modified file 'scripting/win_conditions/00_endless_game.lua'
--- scripting/win_conditions/00_endless_game.lua 2014-03-25 06:18:48 +0000
+++ scripting/win_conditions/00_endless_game.lua 2014-05-28 13:43:10 +0000
@@ -18,7 +18,8 @@
func = function()
local plrs = wl.Game().players
- broadcast(plrs, wc_name, wc_desc)
+ -- set the objective with the game type for all players
+ broadcast_objective(plrs, "win_condition", wc_name, wc_desc)
-- Iterate all players, if one is defeated, remove him
-- from the list, send him a defeated message and give him full vision
=== modified file 'scripting/win_conditions/01_defeat_all.lua'
--- scripting/win_conditions/01_defeat_all.lua 2014-03-25 06:18:48 +0000
+++ scripting/win_conditions/01_defeat_all.lua 2014-05-28 13:43:10 +0000
@@ -18,7 +18,8 @@
func = function()
local plrs = wl.Game().players
- broadcast(plrs, wc_name, wc_desc)
+ -- set the objective with the game type for all players
+ broadcast_objective(plrs, "win_condition", wc_name, wc_desc)
-- Iterate all players, if one is defeated, remove him
-- from the list, send him a defeated message and give him full vision
=== modified file 'scripting/win_conditions/02_collectors.lua'
--- scripting/win_conditions/02_collectors.lua 2014-03-25 06:18:48 +0000
+++ scripting/win_conditions/02_collectors.lua 2014-05-28 13:43:10 +0000
@@ -22,6 +22,10 @@
name = wc_name,
description = wc_desc,
func = function()
+ local plrs = wl.Game().players
+
+ -- set the objective with the game type for all players
+ broadcast_objective(plrs, "win_condition", wc_name, wc_desc)
-- Simple flowing text. One Paragraph
local function p(s)
@@ -167,12 +171,6 @@
sleep(1000)
local remaining_time = 60 * 4
-local plrs = wl.Game().players
-
--- send a message with the game type to all players
-for idx, p in ipairs(plrs) do
- p:send_message(wc_name, wc_desc)
-end
-- Endless loop
while true do
=== modified file 'scripting/win_conditions/03_territorial_lord.lua'
--- scripting/win_conditions/03_territorial_lord.lua 2014-03-25 06:18:48 +0000
+++ scripting/win_conditions/03_territorial_lord.lua 2014-05-28 13:43:10 +0000
@@ -21,6 +21,10 @@
name = wc_name,
description = wc_desc,
func = function()
+ local plrs = wl.Game().players
+
+ -- set the objective with the game type for all players
+ broadcast_objective(plrs, "win_condition", wc_name, wc_desc)
-- Get all valueable fields of the map
local fields = {}
@@ -50,12 +54,6 @@
local candidateisteam = false
local remaining_time = 10 -- (dummy) -- time in secs, if == 0 -> victory
- -- Find all valid players
- local plrs = wl.Game().players
-
- -- send a message with the game type to all players
- broadcast(plrs, wc_name, wc_desc)
-
-- Find all valid teams
local teamnumbers = {} -- array with team numbers
for idx,p in ipairs(plrs) do
=== modified file 'scripting/win_conditions/03_territorial_time.lua'
--- scripting/win_conditions/03_territorial_time.lua 2014-03-25 06:18:48 +0000
+++ scripting/win_conditions/03_territorial_time.lua 2014-05-28 13:43:10 +0000
@@ -26,6 +26,10 @@
name = wc_name,
description = wc_desc,
func = function()
+ local plrs = wl.Game().players
+
+ -- set the objective with the game type for all players
+ broadcast_objective(plrs, "win_condition", wc_name, wc_desc)
-- Get all valueable fields of the map
local fields = {}
@@ -58,12 +62,6 @@
local candidateisteam = false
local remaining_time = 10 -- (dummy) -- time in secs, if == 0 -> victory
- -- Find all valid players
- local plrs = wl.Game().players
-
- -- send a message with the game type to all players
- broadcast(plrs, wc_name, wc_desc)
-
-- Find all valid teams
local teamnumbers = {} -- array with team numbers
for idx,p in ipairs(plrs) do
=== modified file 'scripting/win_conditions/04_wood_gnome.lua'
--- scripting/win_conditions/04_wood_gnome.lua 2014-03-25 06:18:48 +0000
+++ scripting/win_conditions/04_wood_gnome.lua 2014-05-28 13:43:10 +0000
@@ -21,10 +21,10 @@
name = wc_name,
description = wc_desc,
func = function()
- local plrs = wl.Game().players
+ local plrs = wl.Game().players
- -- send a message with the game type to all players
- broadcast(plrs, wc_name, wc_desc)
+ -- set the objective with the game type for all players
+ broadcast_objective(plrs, "win_condition", wc_name, wc_desc)
local remaining_time = 4 * 60 -- 4 hours
=== modified file 'scripting/win_conditions/05_endless_game_fogless.lua'
--- scripting/win_conditions/05_endless_game_fogless.lua 2014-03-25 06:18:48 +0000
+++ scripting/win_conditions/05_endless_game_fogless.lua 2014-05-28 13:43:10 +0000
@@ -18,7 +18,8 @@
func = function()
local plrs = wl.Game().players
- broadcast(plrs, wc_name, wc_desc)
+ -- set the objective with the game type for all players
+ broadcast_objective(plrs, "win_condition", wc_name, wc_desc)
-- reveal the whole map for every player
local game = wl.Game()
=== modified file 'src/logic/cmd_queue.h'
--- src/logic/cmd_queue.h 2014-05-11 12:29:55 +0000
+++ src/logic/cmd_queue.h 2014-05-28 13:43:10 +0000
@@ -22,6 +22,7 @@
#include <memory>
#include <queue>
+#include <stdint.h>
#include "logic/queue_cmd_ids.h"
=== modified file 'src/wui/interactive_player.cc'
--- src/wui/interactive_player.cc 2014-05-27 11:01:15 +0000
+++ src/wui/interactive_player.cc 2014-05-28 13:43:10 +0000
@@ -155,10 +155,7 @@
}
m_toolbar.add(&m_toggle_help, UI::Box::AlignLeft);
- if (not scenario)
- m_toggle_objectives.set_visible(false);
- else
- m_toolbar.add(&m_toggle_objectives, UI::Box::AlignLeft);
+ m_toolbar.add(&m_toggle_objectives, UI::Box::AlignLeft);
m_toolbar.add(&m_toggle_message_menu, UI::Box::AlignLeft);
set_player_number(plyn);
Follow ups