Re: [Widelands-dev] [Merge] lp:~widelands-dev/widelands/feature-test-supply-crash into lp:widelands

2017-01-06 Thread Notabilis
The suggestions from the review has been dealt with.

The Travis-tests are failing on purpose since the created regression test shows 
a bug in trunk at creation time of this branch. When merging trunk locally the 
tests run fine. If there are no further objections regarding this branch trunk 
can be merged into it which will make this branch ready for merge.
-- 
https://code.launchpad.net/~widelands-dev/widelands/feature-test-supply-crash/+merge/312422
Your team Widelands Developers is subscribed to branch 
lp:~widelands-dev/widelands/feature-test-supply-crash.

___
Mailing list: https://launchpad.net/~widelands-dev
Post to : widelands-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~widelands-dev
More help   : https://help.launchpad.net/ListHelp


[Widelands-dev] [Merge] lp:~widelands-dev/widelands/casern_campaign into lp:widelands

2017-01-06 Thread Notabilis
Notabilis has proposed merging lp:~widelands-dev/widelands/casern_campaign into 
lp:widelands.

Requested reviews:
  Widelands Developers (widelands-dev)

For more details, see:
https://code.launchpad.net/~widelands-dev/widelands/casern_campaign/+merge/314208

Adapted the tutorials and campaigns for the future implementation of barracks.

While the campaigns are currently playable some of them will (partially) break 
when barracks are required for soldier creation. This branch modifies some 
dialogs and objectives so barracks have/can be build where required / where it 
makes sense.

Please check the NOCOM in 
data/campaigns/emp02.wmf/scripting/starting_conditions.lua. It should work as 
proposed but I would like to have a second opinion about it.
-- 
Your team Widelands Developers is requested to review the proposed merge of 
lp:~widelands-dev/widelands/casern_campaign into lp:widelands.
=== modified file 'data/campaigns/bar02.wmf/scripting/mission_thread.lua'
--- data/campaigns/bar02.wmf/scripting/mission_thread.lua	2016-10-23 11:31:25 +
+++ data/campaigns/bar02.wmf/scripting/mission_thread.lua	2017-01-06 09:30:02 +
@@ -188,6 +188,7 @@
   "barbarians_ax_workshop",
   "barbarians_warmill",
   "barbarians_helmsmithy",
+  "barbarians_barracks",
   "barbarians_battlearena",
   "barbarians_trainingcamp",
   "barbarians_inn",
@@ -208,7 +209,7 @@
 end
 
 function check_trainingssite_obj(o)
-   while not check_for_buildings(p1, {barbarians_trainingcamp = 1, barbarians_battlearena = 1}) do
+   while not check_for_buildings(p1, {barbarians_barracks = 1, barbarians_trainingcamp = 1, barbarians_battlearena = 1}) do
   sleep(6523)
end
set_objective_done(o)

=== modified file 'data/campaigns/bar02.wmf/scripting/texts.lua'
--- data/campaigns/bar02.wmf/scripting/texts.lua	2016-09-20 17:01:35 +
+++ data/campaigns/bar02.wmf/scripting/texts.lua	2017-01-06 09:30:02 +
@@ -93,6 +93,7 @@
title = _"Build a training infrastructure",
number = 4,
body = objective_text(_"Build a training infrastructure",
+  listitem_bullet(_"Build a barracks to train some basic soldiers.") ..
   listitem_bullet(_"Build a battle arena and a training camp to the west of the mountains.") ..
   listitem_bullet(_"Enhance your metal workshop to an ax workshop in order to produce weapons, and build up a second metal workshop to ensure the production of tools. When the blacksmith reaches his next level (master blacksmith), you can even enhance the ax workshop to a war mill, which will produce additional weapons.") ..
   listitem_bullet(_"Build a helm smithy to the west of the mountains to provide your soldiers with better armor."))
@@ -113,8 +114,8 @@
title = _"Build training sites",
number = 2,
body = objective_text(_"Build training sites",
-  listitem_bullet(_"Build a battle arena and a training camp to the west of the mountains.") ..
-  listitem_arrow(_"Training sites like a training camp or a battle arena are used for training soldiers in their different attributes. These attributes are important in fights and the better a soldier is, the higher is the chance to win a fight."
+  listitem_bullet(_"Build a barracks, a battle arena and a training camp to the west of the mountains.") ..
+  listitem_arrow(_"Barracks train basic soldiers while training sites like a training camp or a battle arena are used for training soldiers in their different attributes. These attributes are important in fights and the better a soldier is, the higher is the chance to win a fight."
   .. "" ..
   _"The attributes are: health, attack, defense and evade."))
 }

=== modified file 'data/campaigns/emp02.wmf/scripting/mission_thread.lua'
--- data/campaigns/emp02.wmf/scripting/mission_thread.lua	2016-10-23 11:31:25 +
+++ data/campaigns/emp02.wmf/scripting/mission_thread.lua	2017-01-06 09:30:02 +
@@ -246,7 +246,7 @@
   sleep(2343)
end
campaign_message_box(diary_page_9)
-   p1:allow_buildings{"empire_fortress"}
+   p1:allow_buildings{"empire_barracks", "empire_fortress"}
 
o = add_campaign_objective(obj_remove_the_barbarians)
-- Wait for the fortress to come up

=== modified file 'data/campaigns/emp02.wmf/scripting/starting_conditions.lua'
--- data/campaigns/emp02.wmf/scripting/starting_conditions.lua	2015-10-31 12:11:44 +
+++ data/campaigns/emp02.wmf/scripting/starting_conditions.lua	2017-01-06 09:30:02 +
@@ -14,7 +14,11 @@
  basket = 1,
  empire_bread = 8,
  bread_paddle = 2,
- cloth = 5,
+ -- NOCOM(Notabilis): The barracks need 1 cloth, the rest is for armor.
+ -- However, cloth can not be produced. Is this a problem? Apart from
+ -- really strange player behavior it should be enough.
+ -- (8 in armor smithy, 3 made to armor and stored, 1 for barracks)
+ cloth = 15,
  coal = 12,
  felling_ax = 6,
  fire_tongs = 2,

=== modified fil

[Widelands-dev] [Merge] lp:~widelands-dev/widelands/bug-trainingsite-worker-display into lp:widelands

2017-01-06 Thread Notabilis
Notabilis has proposed merging 
lp:~widelands-dev/widelands/bug-trainingsite-worker-display into lp:widelands.

Requested reviews:
  Widelands Developers (widelands-dev)
Related bugs:
  Bug #1635808 in widelands: "Display of worker in training sites is not 
updated"
  https://bugs.launchpad.net/widelands/+bug/1635808

For more details, see:
https://code.launchpad.net/~widelands-dev/widelands/bug-trainingsite-worker-display/+merge/314217

When a trainer enters a training site the entry in the worker-list is not 
updated and stays on "(coming)". This branch adds the missing binding to update 
the display on entering.
-- 
Your team Widelands Developers is requested to review the proposed merge of 
lp:~widelands-dev/widelands/bug-trainingsite-worker-display into lp:widelands.
=== modified file 'src/wui/trainingsitewindow.cc'
--- src/wui/trainingsitewindow.cc	2016-08-04 15:59:26 +
+++ src/wui/trainingsitewindow.cc	2017-01-06 11:57:40 +
@@ -65,5 +65,8 @@
 ===
 */
 void TrainingSite::create_options_window(InteractiveGameBase& plr, UI::Window*& registry) {
-	new TrainingSiteWindow(plr, *this, registry);
+	ProductionSiteWindow* win
+		= dynamic_cast(new TrainingSiteWindow(plr, *this, registry));
+	Building::options_window_connections.push_back(Building::workers_changed.connect(
+	   boost::bind(&ProductionSiteWindow::update_worker_table, boost::ref(*win;
 }

___
Mailing list: https://launchpad.net/~widelands-dev
Post to : widelands-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~widelands-dev
More help   : https://help.launchpad.net/ListHelp


Re: [Widelands-dev] [Merge] lp:~widelands-dev/widelands/unique_ptr_coroutine into lp:widelands

2017-01-06 Thread GunChleoc
Review: Approve

Not tested, code LGTM :)
-- 
https://code.launchpad.net/~widelands-dev/widelands/unique_ptr_coroutine/+merge/313880
Your team Widelands Developers is subscribed to branch 
lp:~widelands-dev/widelands/unique_ptr_coroutine.

___
Mailing list: https://launchpad.net/~widelands-dev
Post to : widelands-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~widelands-dev
More help   : https://help.launchpad.net/ListHelp


Re: [Widelands-dev] [Merge] lp:~widelands-dev/widelands/sound_improvements into lp:widelands

2017-01-06 Thread GunChleoc
Review: Approve

One tiny nit - it's up to you if you want to change it. Not compiled or tested.

Diff comments:

> === modified file 'src/sound/sound_handler.cc'
> --- src/sound/sound_handler.cc2016-10-22 18:19:22 +
> +++ src/sound/sound_handler.cc2017-01-03 20:52:54 +
> @@ -129,6 +130,10 @@
>   return;
>   }
>  
> + if (Mix_AllocateChannels(kNumMixingChannels) != kNumMixingChannels) {

I'm not a big fan of side effects in if statements - grabbing the return value 
in a const variable first might me more readable.

> + initialization_error(Mix_GetError());
> + }
> +
>   Mix_HookMusicFinished(SoundHandler::music_finished_callback);
>   Mix_ChannelFinished(SoundHandler::fx_finished_callback);
>   load_system_sounds();


-- 
https://code.launchpad.net/~widelands-dev/widelands/sound_improvements/+merge/314035
Your team Widelands Developers is subscribed to branch 
lp:~widelands-dev/widelands/sound_improvements.

___
Mailing list: https://launchpad.net/~widelands-dev
Post to : widelands-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~widelands-dev
More help   : https://help.launchpad.net/ListHelp


Re: [Widelands-dev] [Merge] lp:~widelands-dev/widelands/casern_campaign into lp:widelands

2017-01-06 Thread GunChleoc
Review: Approve

LGTM - just 1 nit as to phrasing.

Not tested.

Diff comments:

> 
> === modified file 'data/campaigns/tutorial02_warfare.wmf/scripting/texts.lua'
> --- data/campaigns/tutorial02_warfare.wmf/scripting/texts.lua 2016-11-30 
> 09:14:27 +
> +++ data/campaigns/tutorial02_warfare.wmf/scripting/texts.lua 2017-01-06 
> 09:30:02 +
> @@ -34,7 +34,7 @@
> position = "topright",
> title = _"Soldiers’ abilities",
> body = rt(
> -  p(_[[A new soldier is created like a worker: when a military building 
> needs a soldier, a carrier grabs the needed weapons and armor from a 
> warehouse (or your headquarters) and walks up the road to your new building. 
> Basic Barbarian soldiers do not use armor, they only need an ax.]]) ..
> +  p(_[[New soldiers are created differently from normal workers: 
> recruits are walking from a warehouse (or your headquarters) to the barracks 
> where they receive some basic training and become soldiers. Basic Barbarian 
> soldiers do not use armor, they only need an ax.]]) ..

recruits will walk ... where they will receive ...

>p(_[[Take a look at the soldiers that are on their way to our military 
> buildings. They look different from normal workers: they have a health bar 
> over their head that displays their remaining health, and they have four 
> symbols, which symbolize the individual soldier’s current levels in the four 
> different categories: health, attack, defense and evade.]]) ..
>-- TRANSLATORS: the current stats are: 3 health, 5 attack, 0 defense, 
> 2 evade.
>p((_[[If a Barbarian soldier is fully trained, he has level %1% 
> health, level %2% attack, level %3% defense and level %4% evade. This is one 
> fearsome warrior then! The individual abilities have the following 
> meaning:]]):bformat(soldier.max_health_level, soldier.max_attack_level, 
> soldier.max_defense_level, soldier.max_evade_level))


-- 
https://code.launchpad.net/~widelands-dev/widelands/casern_campaign/+merge/314208
Your team Widelands Developers is subscribed to branch 
lp:~widelands-dev/widelands/casern_campaign.

___
Mailing list: https://launchpad.net/~widelands-dev
Post to : widelands-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~widelands-dev
More help   : https://help.launchpad.net/ListHelp


Re: [Widelands-dev] [Merge] lp:~widelands-dev/widelands/animation_manager into lp:widelands

2017-01-06 Thread GunChleoc
Review: Approve

I went through the code - mostly minor nits. Feel free to merge when you have 
addressed them as you see fit and you are happy with the level of testing.

Diff comments:

> 
> === modified file 'data/campaigns/bar02.wmf/scripting/mission_thread.lua'
> --- data/campaigns/bar02.wmf/scripting/mission_thread.lua 2016-10-23 
> 11:31:25 +
> +++ data/campaigns/bar02.wmf/scripting/mission_thread.lua 2017-01-04 
> 08:15:34 +
> @@ -359,7 +359,7 @@
>  
> p1:reveal_fields(map:get_field(4,9):region(6))
>  
> -   local pts = scroll_smoothly_to(map:get_field(4,5))
> +   local pts = scroll_to_field(map:get_field(4,5))

Rename this one to prior_center as well.

>  
> campaign_message_box(story_msg_7)
>  
> 
> === modified file 'src/base/math.h'
> --- src/base/math.h   2016-11-03 07:20:57 +
> +++ src/base/math.h   2017-01-04 08:15:34 +
> @@ -40,6 +40,11 @@
>   return val;
>  }
>  
> +// A simple square function.

Is there a specific reason not to use

http://www.cplusplus.com/reference/cmath/pow/

?

> +template  T sqr(const T& a) {
> + return a * a;
> +}
> +
>  }  // namespace math
>  
>  #endif  // end of include guard: WL_BASE_MATH_H
> 
> === modified file 'src/scripting/lua_ui.cc'
> --- src/scripting/lua_ui.cc   2016-10-22 18:19:22 +
> +++ src/scripting/lua_ui.cc   2017-01-04 08:15:34 +
> @@ -73,11 +73,9 @@
>  */
>  const char LuaPanel::className[] = "Panel";
>  const PropertyType LuaPanel::Properties[] = {
> -   PROP_RO(LuaPanel, buttons),  PROP_RO(LuaPanel, tabs),
> -   PROP_RO(LuaPanel, windows),  PROP_RW(LuaPanel, mouse_position_x),
> -   PROP_RW(LuaPanel, mouse_position_y), PROP_RW(LuaPanel, position_x),
> -   PROP_RW(LuaPanel, position_y),   PROP_RW(LuaPanel, width),
> -   PROP_RW(LuaPanel, height),   {nullptr, nullptr, nullptr},
> +   PROP_RO(LuaPanel, buttons),PROP_RO(LuaPanel, tabs),   
> PROP_RO(LuaPanel, windows),

I think each of these on a new line would be more readable and make future 
diffs smaller.

> +   PROP_RW(LuaPanel, position_x), PROP_RW(LuaPanel, position_y), 
> PROP_RW(LuaPanel, width),
> +   PROP_RW(LuaPanel, height), {nullptr, nullptr, nullptr},
>  };
>  const MethodType LuaPanel::Methods[] = {
> METHOD(LuaPanel, get_descendant_position), {nullptr, nullptr},
> @@ -486,12 +454,17 @@
> METHOD(LuaMapView, start_road_building),
> METHOD(LuaMapView, abort_road_building),
> METHOD(LuaMapView, close),
> +   METHOD(LuaMapView, scroll_to_field),
> +   METHOD(LuaMapView, scroll_to_map_pixel),
> +   METHOD(LuaMapView, is_visible),
> +   METHOD(LuaMapView, mouse_to_field),
> +   METHOD(LuaMapView, mouse_to_pixel),
> {nullptr, nullptr},
>  };
>  const PropertyType LuaMapView::Properties[] = {
> -   PROP_RW(LuaMapView, viewpoint_x), PROP_RW(LuaMapView, viewpoint_y),
> -   PROP_RW(LuaMapView, buildhelp),   PROP_RW(LuaMapView, census),
> -   PROP_RW(LuaMapView, statistics),  PROP_RO(LuaMapView, is_building_road),
> +   PROP_RO(LuaMapView, center_map_pixel), PROP_RW(LuaMapView, buildhelp),

Each of these on a new line?

> +   PROP_RW(LuaMapView, census),   PROP_RW(LuaMapView, statistics),
> +   PROP_RO(LuaMapView, is_building_road), PROP_RO(LuaMapView, is_animating),
> {nullptr, nullptr, nullptr},
>  };
>  
> @@ -674,6 +634,93 @@
>   return 0;
>  }
>  
> +/* RST
> +   .. method:: scroll_to_map_pixel(x, y)
> +
> + Starts an animation to center the view on top of the pixel (x, 
> y) in map
> + pixel space. Use `is_animating` to check if the animation is 
> still going
> + on.
> +
> +  :arg x: x coordinate of the pixel
> +  :type x: number
> +  :arg y: y coordinate of the pixel
> +  :type y: number
> +*/
> +int LuaMapView::scroll_to_map_pixel(lua_State* L) {
> + Widelands::Game& game = get_game(L);
> + // don't move view in replays
> + if (game.game_controller()->get_game_type() == 
> GameController::GameType::REPLAY) {
> + return 0;
> + }
> +
> + const Vector2f center(luaL_checkdouble(L, 2), luaL_checkdouble(L, 3));
> + get()->scroll_to_map_pixel(center, MapView::Transition::Smooth);
> + return 0;
> +}
> +
> +/* RST
> +   .. method:: scroll_to_map_pixel(field)
> +
> + Starts an animation to center the view on top of the 'field'. 
> Use
> + `is_animating` to check if the animation is still going on.
> +
> +  :arg field: the field to center on
> +  :type field: :class:`wl.map.Field`
> +*/
> +int LuaMapView::scroll_to_field(lua_State* L) {
> + get()->scroll_to_field(
> +(*get_user_class(L, 2))->coords(), 
> MapView::Transition::Smooth);
> + return 0;
> +}
> +
> +/* RST
> +   .. method:: is_visible(field)
> +
> + Returns `true` if `field` is currently visible in the map view.
> +
> +  :arg field: the field
> +  :type field: :class:`wl.map.Field`
> +*/
> +int LuaMapView::is_visible(lua_State* L) {
> + lua_pushboolean(

Re: [Widelands-dev] [Merge] lp:~widelands-dev/widelands/feature-test-supply-crash into lp:widelands

2017-01-06 Thread GunChleoc
Review: Approve

Added some tiny nits - feel free to merge any time once you have addressed them 
:)

Diff comments:

> === modified file 'src/scripting/lua_map.cc'
> --- src/scripting/lua_map.cc  2016-12-14 22:11:52 +
> +++ src/scripting/lua_map.cc  2017-01-06 09:18:41 +
> @@ -3974,7 +3977,233 @@
>  WH_GET(ware, Ware)
>  // documented in parent class
>  WH_GET(worker, Worker)
> -#undef GET
> +#undef WH_GET
> +
> +// Transforms the given warehouse policy to a string which is used by the 
> lua code
> +inline void wh_policy_to_string(lua_State* L, Warehouse::StockPolicy p) {
> + switch (p) {
> + case Warehouse::StockPolicy::SP_Normal:
> + lua_pushstring(L, "normal");
> + break;
> + case Warehouse::StockPolicy::SP_Prefer:
> + lua_pushstring(L, "prefer");
> + break;
> + case Warehouse::StockPolicy::SP_DontStock:
> + lua_pushstring(L, "dontstock");
> + break;
> + case Warehouse::StockPolicy::SP_Remove:
> + lua_pushstring(L, "remove");
> + break;
> + }
> +}
> +
> +// Transforms the given string from the lua code to a warehouse policy
> +inline Warehouse::StockPolicy string_to_wh_policy(lua_State* L, uint32_t 
> index) {
> + std::string str = luaL_checkstring(L, index);
> + if (str == "normal")
> + return Warehouse::StockPolicy::SP_Normal;
> + else if (str == "prefer")
> + return Warehouse::StockPolicy::SP_Prefer;
> + else if (str == "dontstock")
> + return Warehouse::StockPolicy::SP_DontStock;
> + else if (str == "remove")
> + return Warehouse::StockPolicy::SP_Remove;
> + else
> + report_error(L, "<%s> is no valid warehouse policy!", 
> str.c_str());
> +}
> +
> +bool do_set_ware_policy(Warehouse* wh, const DescriptionIndex idx, const 
> Warehouse::StockPolicy p) {
> + wh->set_ware_policy(idx, p);
> + return true;
> +}
> +
> +/**
> + * Sets the given policy for the given ware in the given warehouse and 
> return true.
> + * If the no ware with the given name exists for the tribe of the warehouse, 
> return false.
> + */
> +bool do_set_ware_policy(Warehouse* wh, const std::string& name, const 
> Warehouse::StockPolicy p) {
> + const TribeDescr& tribe = wh->owner().tribe();
> + DescriptionIndex idx = tribe.ware_index(name);
> + if (!tribe.has_ware(idx)) {
> + return false;
> + }
> + return do_set_ware_policy(wh, idx, p);
> +}
> +
> +bool do_set_worker_policy(Warehouse* wh,
> +  const DescriptionIndex idx,
> +  const Warehouse::StockPolicy p) {
> + const TribeDescr& tribe = wh->owner().tribe();
> + // If the worker does not cost anything, ignore it
> + // Otherwise, an unlimited stream of carriers might leave the warehouse
> + if (tribe.get_worker_descr(idx)->is_buildable() &&
> + tribe.get_worker_descr(idx)->buildcost().empty()) {
> + return true;
> + }
> + wh->set_worker_policy(idx, p);
> + return true;
> +}
> +
> +/**
> + * Sets the given policy for the given worker in the given warehouse and 
> return true.

returns true

> + * Also return true if the given worker does not cost anything but do not 
> set its policy.

returns true ... in this case does not

> + * If the no worker with the given name exists for the tribe of the 
> warehouse, return false.

the no > no

> + */
> +bool do_set_worker_policy(Warehouse* wh, const std::string& name, const 
> Warehouse::StockPolicy p) {
> + const TribeDescr& tribe = wh->owner().tribe();
> + DescriptionIndex idx = tribe.worker_index(name);
> + if (!tribe.has_worker(idx)) {
> + return false;
> + }
> + return do_set_worker_policy(wh, idx, p);
> +}
> +
> +/* RST
> +   .. method:: set_warehouse_policies(which, policy)
> +
> +  Sets the policies how the warehouse should handle the given wares.

wares/workers

> +
> +  Usage example:
> +  .. code-block:: lua
> +
> + wh:set_warehouse_policies("coal", "prefer")
> +
> +  :arg which: behaves like for :meth:`HasWares.get_wares`.
> +
> +  :arg policy: the policy to apply for all the wares given in `which`.

wares/workers

> +  :type policy: a string out of "normal", "prefer", "dontstock", 
> "remove".
> +*/
> +int LuaWarehouse::set_warehouse_policies(lua_State* L) {
> + int32_t nargs = lua_gettop(L);
> + if (nargs != 3)
> + report_error(L, "Wrong number of arguments to 
> set_warehouse_policies!");
> +
> + Warehouse* wh = get(L, get_egbase(L));
> + Warehouse::StockPolicy p = string_to_wh_policy(L, -1);
> + lua_pop(L, 1);
> + const TribeDescr& tribe = wh->owner().tribe();
> +
> + // takes either "all", a name or an array of names
> + if (lua_isstring(L, 2)) {
> + const std::string& what = luaL_checkstring(L, -1);
> + if (what == "all") {
> + f

Re: [Widelands-dev] [Merge] lp:~widelands-dev/widelands/critter_editor_categories into lp:widelands

2017-01-06 Thread GunChleoc
@toptopple: Your ideas are unrelated to this branch, we should create a new bug 
for them though - will yo do the honours?

@SirVer: I'd like to hear you opinion on

https://code.launchpad.net/~widelands-dev/widelands/critter_editor_categories/+merge/312967/comments/814078
-- 
https://code.launchpad.net/~widelands-dev/widelands/critter_editor_categories/+merge/312967
Your team Widelands Developers is subscribed to branch 
lp:~widelands-dev/widelands/critter_editor_categories.

___
Mailing list: https://launchpad.net/~widelands-dev
Post to : widelands-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~widelands-dev
More help   : https://help.launchpad.net/ListHelp


[Widelands-dev] [Merge] lp:~widelands-dev/widelands/casern_campaign into lp:widelands

2017-01-06 Thread bunnybot
Continuous integration builds have changed state:

Travis build 1801. State: passed. Details: 
https://travis-ci.org/widelands/widelands/builds/189461912.
Appveyor build 1639. State: success. Details: 
https://ci.appveyor.com/project/widelands-dev/widelands/build/_widelands_dev_widelands_casern_campaign-1639.
-- 
https://code.launchpad.net/~widelands-dev/widelands/casern_campaign/+merge/314208
Your team Widelands Developers is subscribed to branch 
lp:~widelands-dev/widelands/casern_campaign.

___
Mailing list: https://launchpad.net/~widelands-dev
Post to : widelands-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~widelands-dev
More help   : https://help.launchpad.net/ListHelp


[Widelands-dev] [Merge] lp:~widelands-dev/widelands/feature-test-supply-crash into lp:widelands

2017-01-06 Thread bunnybot
Continuous integration builds have changed state:

Travis build 1807. State: passed. Details: 
https://travis-ci.org/widelands/widelands/builds/189544298.
Appveyor build 1645. State: success. Details: 
https://ci.appveyor.com/project/widelands-dev/widelands/build/_widelands_dev_widelands_feature_test_supply_crash-1645.
-- 
https://code.launchpad.net/~widelands-dev/widelands/feature-test-supply-crash/+merge/312422
Your team Widelands Developers is subscribed to branch 
lp:~widelands-dev/widelands/feature-test-supply-crash.

___
Mailing list: https://launchpad.net/~widelands-dev
Post to : widelands-dev@lists.launchpad.net
Unsubscribe : https://launchpad.net/~widelands-dev
More help   : https://help.launchpad.net/ListHelp