← Back to team overview

widelands-dev team mailing list archive

[Merge] lp:~widelands-dev/widelands/bug-1545243-plnum-lua into lp:widelands

 

GunChleoc has proposed merging lp:~widelands-dev/widelands/bug-1545243-plnum-lua into lp:widelands.

Commit message:
Some data type improvements:
- Fixed PlayerNumber datatype in Lua interface.
- New named datatype "Quantity" for ware/worker quantity.
- More consistent use of DescriptionIndex and ResourceAmount.

Requested reviews:
  Widelands Developers (widelands-dev)
Related bugs:
  Bug #1545243 in widelands: "Change player number datatype in scripting/lua_game"
  https://bugs.launchpad.net/widelands/+bug/1545243

For more details, see:
https://code.launchpad.net/~widelands-dev/widelands/bug-1545243-plnum-lua/+merge/291481

See commit message.
-- 
Your team Widelands Developers is requested to review the proposed merge of lp:~widelands-dev/widelands/bug-1545243-plnum-lua into lp:widelands.
=== modified file 'src/ai/ai_help_structs.cc'
--- src/ai/ai_help_structs.cc	2016-04-01 07:38:04 +0000
+++ src/ai/ai_help_structs.cc	2016-04-11 06:48:15 +0000
@@ -136,7 +136,7 @@
 
 // Looking only for mines-capable fields nearby
 // of specific type
-FindNodeMineable::FindNodeMineable(Game& g, int32_t r) : game(g), res(r) {}
+FindNodeMineable::FindNodeMineable(Game& g, DescriptionIndex r) : game(g), res(r) {}
 
 bool FindNodeMineable::accept(const Map&, const FCoords& fc) const {
 

=== modified file 'src/ai/ai_help_structs.h'
--- src/ai/ai_help_structs.h	2016-04-01 08:50:56 +0000
+++ src/ai/ai_help_structs.h	2016-04-11 06:48:15 +0000
@@ -154,7 +154,7 @@
 // Looking only for mines-capable fields nearby
 // of specific type
 struct FindNodeMineable {
-	FindNodeMineable(Game& g, int32_t r);
+	FindNodeMineable(Game& g, DescriptionIndex r);
 
 	bool accept(const Map&, const FCoords& fc) const;
 
@@ -245,7 +245,7 @@
 	int16_t distant_water;
 	int8_t fish_nearby;
 	int8_t critters_nearby;
-	int8_t ground_water;  // used by wells
+	ResourceAmount ground_water;  // used by wells
 	uint8_t space_consumers_nearby;
 	uint8_t rangers_nearby;
 	// to manage the military better following variables exists:
@@ -346,7 +346,7 @@
 
 	uint16_t unconnected_count;  // to any warehouse (count of such buildings)
 
-	int32_t mines;           // type of resource it mines_
+	DescriptionIndex mines;           // type of resource it mines_
 	uint16_t mines_percent;  // % of res it can mine
 	uint32_t current_stats;
 

=== modified file 'src/ai/defaultai.cc'
--- src/ai/defaultai.cc	2016-04-01 12:22:09 +0000
+++ src/ai/defaultai.cc	2016-04-11 06:48:15 +0000
@@ -4572,8 +4572,8 @@
 		if (other_player_accessible(
 		       vision + 4, &unused1, &unused2, ms->get_position(), WalkSearch::kEnemy)) {
 
-			uint32_t const total_capacity = ms->max_soldier_capacity();
-			uint32_t const target_capacity = ms->soldier_capacity();
+			Quantity const total_capacity = ms->max_soldier_capacity();
+			Quantity const target_capacity = ms->soldier_capacity();
 
 			game().send_player_change_soldier_capacity(*ms, total_capacity - target_capacity);
 			changed = true;

=== modified file 'src/economy/economy.cc'
--- src/economy/economy.cc	2016-04-01 08:08:24 +0000
+++ src/economy/economy.cc	2016-04-11 06:48:15 +0000
@@ -333,7 +333,7 @@
  */
 void Economy::set_ware_target_quantity
 	(DescriptionIndex const ware_type,
-	 uint32_t   const permanent,
+	 Quantity   const permanent,
 	 Time       const mod_time)
 {
 	TargetQuantity & tq = ware_target_quantities_[ware_type];
@@ -344,7 +344,7 @@
 
 void Economy::set_worker_target_quantity
 	(DescriptionIndex const ware_type,
-	 uint32_t   const permanent,
+	 Quantity   const permanent,
 	 Time       const mod_time)
 {
 	TargetQuantity & tq = worker_target_quantities_[ware_type];
@@ -359,14 +359,14 @@
  * This is also called when a ware is added to the economy through trade or
  * a merger.
 */
-void Economy::add_wares(DescriptionIndex const id, uint32_t const count)
+void Economy::add_wares(DescriptionIndex const id, Quantity const count)
 {
 	wares_.add(id, count);
 	start_request_timer();
 
 	// TODO(unknown): add to global player inventory?
 }
-void Economy::add_workers(DescriptionIndex const id, uint32_t const count)
+void Economy::add_workers(DescriptionIndex const id, Quantity const count)
 {
 	workers_.add(id, count);
 	start_request_timer();
@@ -380,7 +380,7 @@
  * This is also called when a ware is removed from the economy through trade or
  * a split of the Economy.
 */
-void Economy::remove_wares(DescriptionIndex const id, uint32_t const count)
+void Economy::remove_wares(DescriptionIndex const id, Quantity const count)
 {
 	assert(owner_.egbase().tribes().ware_exists(id));
 	wares_.remove(id, count);
@@ -393,7 +393,7 @@
  * This is also called when a worker is removed from the economy through
  * a split of the Economy.
  */
-void Economy::remove_workers(DescriptionIndex const id, uint32_t const count)
+void Economy::remove_workers(DescriptionIndex const id, Quantity const count)
 {
 	workers_.remove(id, count);
 
@@ -497,11 +497,11 @@
 
 
 bool Economy::needs_ware(DescriptionIndex const ware_type) const {
-	uint32_t const t = ware_target_quantity(ware_type).permanent;
+	Quantity const t = ware_target_quantity(ware_type).permanent;
 
 	// we have a target quantity set
 	if (t > 0) {
-		uint32_t quantity = 0;
+		Quantity quantity = 0;
 		for (const Warehouse * wh : warehouses_) {
 			quantity += wh->get_wares().stock(ware_type);
 			if (t <= quantity)
@@ -523,11 +523,11 @@
 
 
 bool Economy::needs_worker(DescriptionIndex const worker_type) const {
-	uint32_t const t = worker_target_quantity(worker_type).permanent;
+	Quantity const t = worker_target_quantity(worker_type).permanent;
 
 	// we have a target quantity set
 	if (t > 0) {
-		uint32_t quantity = 0;
+		Quantity quantity = 0;
 		for (const Warehouse * wh : warehouses_) {
 			quantity += wh->get_workers().stock(worker_type);
 			if (t <= quantity)
@@ -917,8 +917,8 @@
 	// Find warehouses where we can create the required workers,
 	// and collect stats about existing build prerequisites
 	const WorkerDescr::Buildcost & cost = w_desc.buildcost();
-	std::vector<uint32_t> total_available;
-	uint32_t total_planned = 0;
+	std::vector<Quantity> total_available;
+	Quantity total_planned = 0;
 
 	total_available.insert(total_available.begin(), cost.size(), 0);
 
@@ -934,11 +934,11 @@
 				return;
 		}
 
-		std::vector<uint32_t> wh_available =
+		std::vector<Quantity> wh_available =
 			wh->calc_available_for_worker(game, index);
 		assert(wh_available.size() == total_available.size());
 
-		for (uint32_t idx = 0; idx < total_available.size(); ++idx)
+		for (Quantity idx = 0; idx < total_available.size(); ++idx)
 			total_available[idx] += wh_available[idx];
 	}
 

=== modified file 'src/economy/economy.h'
--- src/economy/economy.h	2016-02-09 16:29:48 +0000
+++ src/economy/economy.h	2016-04-11 06:48:15 +0000
@@ -89,7 +89,7 @@
 	/// economies are merged. The setting that was modified most recently will
 	/// be used for the merged economy.
 	struct TargetQuantity {
-		uint32_t permanent;
+		Quantity permanent;
 		Time     last_modified;
 	};
 
@@ -121,14 +121,14 @@
 	// (i.e. an Expedition ship).
 	Flag* get_arbitrary_flag();
 
-	void set_ware_target_quantity  (DescriptionIndex, uint32_t, Time);
-	void set_worker_target_quantity(DescriptionIndex, uint32_t, Time);
-
-	void    add_wares  (DescriptionIndex, uint32_t count = 1);
-	void remove_wares  (DescriptionIndex, uint32_t count = 1);
-
-	void    add_workers(DescriptionIndex, uint32_t count = 1);
-	void remove_workers(DescriptionIndex, uint32_t count = 1);
+	void set_ware_target_quantity  (DescriptionIndex, Quantity, Time);
+	void set_worker_target_quantity(DescriptionIndex, Quantity, Time);
+
+	void    add_wares  (DescriptionIndex, Quantity count = 1);
+	void remove_wares  (DescriptionIndex, Quantity count = 1);
+
+	void    add_workers(DescriptionIndex, Quantity count = 1);
+	void remove_workers(DescriptionIndex, Quantity count = 1);
 
 	void    add_warehouse(Warehouse &);
 	void remove_warehouse(Warehouse &);
@@ -141,10 +141,10 @@
 	void remove_supply(Supply &);
 
 	/// information about this economy
-	WareList::WareCount stock_ware  (DescriptionIndex const i) {
+	Quantity stock_ware  (DescriptionIndex const i) {
 		return wares_  .stock(i);
 	}
-	WareList::WareCount stock_worker(DescriptionIndex const i) {
+	Quantity stock_worker(DescriptionIndex const i) {
 		return workers_.stock(i);
 	}
 

=== modified file 'src/economy/request.h'
--- src/economy/request.h	2016-02-07 06:10:47 +0000
+++ src/economy/request.h	2016-04-11 06:48:15 +0000
@@ -72,7 +72,7 @@
 	PlayerImmovable & target() const {return target_;}
 	DescriptionIndex get_index() const {return index_;}
 	WareWorker get_type() const {return type_;}
-	uint32_t get_count() const {return count_;}
+	Quantity get_count() const {return count_;}
 	uint32_t get_open_count() const {return count_ - transfers_.size();}
 	bool is_open() const {return transfers_.size() < count_;}
 	Economy * get_economy() const {return economy_;}
@@ -85,7 +85,7 @@
 	Flag & target_flag() const;
 
 	void set_economy(Economy *);
-	void set_count(uint32_t);
+	void set_count(Quantity);
 	void set_required_time(int32_t time);
 	void set_required_interval(int32_t interval);
 
@@ -127,7 +127,7 @@
 
 	Economy         * economy_;
 	DescriptionIndex        index_;             //  the index of the ware descr
-	uint32_t          count_;             //  how many do we need in total
+	Quantity          count_;             //  how many do we need in total
 
 	CallbackFn        callbackfn_;        //  called on request success
 

=== modified file 'src/economy/warehousesupply.h'
--- src/economy/warehousesupply.h	2016-02-07 06:10:47 +0000
+++ src/economy/warehousesupply.h	2016-04-11 06:48:15 +0000
@@ -41,16 +41,16 @@
 
 	const WareList & get_wares  () const {return wares_;}
 	const WareList & get_workers() const {return workers_;}
-	uint32_t stock_wares  (DescriptionIndex const i) const {
+	Quantity stock_wares  (DescriptionIndex const i) const {
 		return wares_  .stock(i);
 	}
-	uint32_t stock_workers(DescriptionIndex const i) const {
+	Quantity stock_workers(DescriptionIndex const i) const {
 		return workers_.stock(i);
 	}
-	void add_wares     (DescriptionIndex, uint32_t count);
-	void remove_wares  (DescriptionIndex, uint32_t count);
-	void add_workers   (DescriptionIndex, uint32_t count);
-	void remove_workers(DescriptionIndex, uint32_t count);
+	void add_wares     (DescriptionIndex, Quantity count);
+	void remove_wares  (DescriptionIndex, Quantity count);
+	void add_workers   (DescriptionIndex, Quantity count);
+	void remove_workers(DescriptionIndex, Quantity count);
 
 	// Supply implementation
 	PlayerImmovable * get_position(Game &) override;

=== modified file 'src/economy/wares_queue.cc'
--- src/economy/wares_queue.cc	2016-02-09 16:29:48 +0000
+++ src/economy/wares_queue.cc	2016-04-11 06:48:15 +0000
@@ -171,9 +171,9 @@
 /**
  * Change size of the queue.
  */
-void WaresQueue::set_max_size(const uint32_t size)
+void WaresQueue::set_max_size(const Quantity size)
 {
-	uint32_t old_size = max_size_;
+	Quantity old_size = max_size_;
 	max_size_ = size;
 
 	// make sure that max fill is reduced as well if the max size is decreased
@@ -192,7 +192,7 @@
  * but if there are more wares than that in the queue, they will not get
  * lost (the building should drop them).
  */
-void WaresQueue::set_max_fill(uint32_t size)
+void WaresQueue::set_max_fill(Quantity size)
 {
 	if (size > max_size_)
 		size = max_size_;
@@ -205,7 +205,7 @@
 /**
  * Change fill status of the queue.
  */
-void WaresQueue::set_filled(const uint32_t filled) {
+void WaresQueue::set_filled(const Quantity filled) {
 	if (owner_.get_economy()) {
 		if (filled > filled_)
 			owner_.get_economy()->add_wares(ware_, filled - filled_);

=== modified file 'src/economy/wares_queue.h'
--- src/economy/wares_queue.h	2016-02-07 06:10:47 +0000
+++ src/economy/wares_queue.h	2016-04-11 06:48:15 +0000
@@ -49,9 +49,9 @@
 #endif
 
 	DescriptionIndex get_ware()    const {return ware_;}
-	uint32_t get_max_fill() const {return max_fill_;}
-	uint32_t get_max_size() const {return max_size_;}
-	uint32_t get_filled()   const {return filled_;}
+	Quantity get_max_fill() const {return max_fill_;}
+	Quantity get_max_size() const {return max_size_;}
+	Quantity get_filled()   const {return filled_;}
 
 	void cleanup();
 
@@ -60,9 +60,9 @@
 	void remove_from_economy(Economy &);
 	void add_to_economy(Economy &);
 
-	void set_max_size        (uint32_t);
-	void set_max_fill        (uint32_t);
-	void set_filled          (uint32_t);
+	void set_max_size        (Quantity);
+	void set_max_fill        (Quantity);
+	void set_filled          (Quantity);
 	void set_consume_interval(uint32_t);
 
 	Player & owner() const {return owner_.owner();}
@@ -77,9 +77,9 @@
 
 	PlayerImmovable & owner_;
 	DescriptionIndex         ware_;    ///< ware ID
-	uint32_t max_size_;         ///< nr of items that fit into the queue maximum
-	uint32_t max_fill_;         ///< nr of wares that should be ideally in this queue
-	uint32_t filled_;           ///< nr of items that are currently in the queue
+	Quantity max_size_;         ///< nr of items that fit into the queue maximum
+	Quantity max_fill_;         ///< nr of wares that should be ideally in this queue
+	Quantity filled_;           ///< nr of items that are currently in the queue
 
 	///< time in ms between consumption at full speed
 	uint32_t consume_interval_;

=== modified file 'src/editor/map_generator.cc'
--- src/editor/map_generator.cc	2016-04-06 09:23:04 +0000
+++ src/editor/map_generator.cc	2016-04-11 06:48:15 +0000
@@ -130,9 +130,9 @@
 	const auto set_resource_helper = [this, &world, &terrain_description, &fc] (
 	   const uint32_t random_value, const int valid_resource_index) {
 		const DescriptionIndex  res_idx = terrain_description.get_valid_resource(valid_resource_index);
-		const uint32_t max_amount = world.get_resource(res_idx)->max_amount();
-		uint8_t res_val = static_cast<uint8_t>(random_value / (kMaxElevation / max_amount));
-		res_val *= static_cast<uint8_t>(map_info_.resource_amount) + 1;
+		const ResourceAmount max_amount = world.get_resource(res_idx)->max_amount();
+		ResourceAmount res_val = static_cast<ResourceAmount>(random_value / (kMaxElevation / max_amount));
+		res_val *= static_cast<ResourceAmount>(map_info_.resource_amount) + 1;
 		res_val /= 3;
 		if (map_.is_resource_valid(world, fc, res_idx)) {
 			map_.initialize_resources(fc, res_idx, res_val);

=== modified file 'src/editor/tools/action_args.h'
--- src/editor/tools/action_args.h	2016-04-06 09:23:04 +0000
+++ src/editor/tools/action_args.h	2016-04-11 06:48:15 +0000
@@ -50,18 +50,19 @@
 
 	int32_t change_by;                                                  // resources, change height tools
 	std::list<Widelands::Field::Height> original_heights;               // change height tool
-	uint8_t current_resource, set_to;                                   // resources change tools
+	Widelands::DescriptionIndex current_resource;                       // resources change tools
+	Widelands::ResourceAmount set_to;                                   // resources change tools
 
 	struct ResourceState {
 		Widelands::FCoords location;
-		uint8_t idx;
-		uint8_t amount;
+		Widelands::DescriptionIndex idx;
+		Widelands::ResourceAmount amount;
 	};
 
 	std::list<ResourceState> original_resource;                         // resources set tool
 	std::list<const Widelands::BobDescr *> old_bob_type, new_bob_type;  // bob change tools
 	std::list<std::string> old_immovable_types;                         // immovable change tools
-	std::list<int32_t> new_immovable_types;                             // immovable change tools
+	std::list<Widelands::DescriptionIndex> new_immovable_types;         // immovable change tools
 	Widelands::HeightInterval interval;                                 // noise height tool
 	std::list<Widelands::DescriptionIndex> terrain_type, original_terrain_type; // set terrain tool
 

=== modified file 'src/editor/tools/decrease_resources_tool.cc'
--- src/editor/tools/decrease_resources_tool.cc	2016-04-06 09:23:04 +0000
+++ src/editor/tools/decrease_resources_tool.cc	2016-04-11 06:48:15 +0000
@@ -44,11 +44,9 @@
 	Widelands::Area<Widelands::FCoords>
 	(map->get_fcoords(center.node), args->sel_radius));
 	do {
-		int32_t amount = mr.location().field->get_resources_amount();
+		Widelands::ResourceAmount amount = mr.location().field->get_resources_amount();
 
-		amount -= args->change_by;
-		if (amount < 0)
-			amount = 0;
+		amount = (amount > args->change_by) ? amount - args->change_by : 0;
 
 		if (mr.location().field->get_resources() == args->current_resource &&
 			map->is_resource_valid(world, mr.location(), args->current_resource) &&

=== modified file 'src/editor/tools/increase_resources_tool.cc'
--- src/editor/tools/increase_resources_tool.cc	2016-04-06 09:23:04 +0000
+++ src/editor/tools/increase_resources_tool.cc	2016-04-11 06:48:15 +0000
@@ -39,8 +39,8 @@
 			Widelands::Area<Widelands::FCoords>
 				(map->get_fcoords(center.node), args->sel_radius));
 	do {
-		int32_t amount = mr.location().field->get_resources_amount();
-		int32_t max_amount = args->current_resource != Widelands::kNoResource ?
+		Widelands::ResourceAmount amount = mr.location().field->get_resources_amount();
+		Widelands::ResourceAmount max_amount = args->current_resource != Widelands::kNoResource ?
 							 world.get_resource(args->current_resource)->max_amount() : 0;
 
 		amount += args->change_by;

=== modified file 'src/editor/tools/info_tool.cc'
--- src/editor/tools/info_tool.cc	2016-04-06 09:23:04 +0000
+++ src/editor/tools/info_tool.cc	2016-04-11 06:48:15 +0000
@@ -123,13 +123,14 @@
 	buf += std::string("\n") + _("Resources:") + "\n";
 
 	Widelands::DescriptionIndex ridx = f.get_resources();
-	int ramount = f.get_resources_amount();
+	Widelands::ResourceAmount ramount = f.get_resources_amount();
 
 	if (ramount > 0) {
 		buf += "• " + (boost::format(
 				_("Resource name: %s")) % world.get_resource(ridx)->name().c_str()
 			).str() + "\n";
-		buf += "• " + (boost::format(_("Resource amount: %i")) % ramount).str() + "\n";
+		buf += "• " + (boost::format(_("Resource amount: %i")) % static_cast<unsigned int>(ramount)).str()
+				 + "\n";
 	}
 	else {
 		buf += "• " + std::string(_("No resources")) + "\n";

=== modified file 'src/editor/tools/place_immovable_tool.cc'
--- src/editor/tools/place_immovable_tool.cc	2016-04-06 09:23:04 +0000
+++ src/editor/tools/place_immovable_tool.cc	2016-04-11 06:48:15 +0000
@@ -60,7 +60,7 @@
 		(*map,
 		 Widelands::Area<Widelands::FCoords>
 		 (map->get_fcoords(center.node), radius));
-		std::list<int32_t>::iterator i = args->new_immovable_types.begin();
+		std::list<Widelands::DescriptionIndex>::iterator i = args->new_immovable_types.begin();
 		do {
 			if
 			(!mr.location().field->get_immovable()

=== modified file 'src/editor/tools/set_resources_tool.cc'
--- src/editor/tools/set_resources_tool.cc	2016-04-06 09:23:04 +0000
+++ src/editor/tools/set_resources_tool.cc	2016-04-11 06:48:15 +0000
@@ -38,8 +38,8 @@
 	 Widelands::Area<Widelands::FCoords>
 	 (map->get_fcoords(center.node), args->sel_radius));
 	do {
-		int32_t amount     = args->set_to;
-		int32_t max_amount = args->current_resource != Widelands::kNoResource ?
+		Widelands::ResourceAmount amount     = args->set_to;
+		Widelands::ResourceAmount max_amount = args->current_resource != Widelands::kNoResource ?
 							 world.get_resource(args->current_resource)->max_amount() : 0;
 		if (amount < 0)
 			amount = 0;
@@ -68,11 +68,9 @@
                                          EditorActionArgs* args,
                                          Widelands::Map* map) {
 	for (const auto & res : args->original_resource) {
-		int32_t amount     = res.amount;
-		int32_t max_amount = world.get_resource(args->current_resource)->max_amount();
+		Widelands::ResourceAmount amount     = res.amount;
+		Widelands::ResourceAmount max_amount = world.get_resource(args->current_resource)->max_amount();
 
-		if (amount < 0)
-			amount = 0;
 		if (amount > max_amount)
 			amount = max_amount;
 

=== modified file 'src/editor/tools/set_resources_tool.h'
--- src/editor/tools/set_resources_tool.h	2016-04-06 09:23:04 +0000
+++ src/editor/tools/set_resources_tool.h	2016-04-11 06:48:15 +0000
@@ -51,15 +51,15 @@
 		return "images/wui/editor/fsel_editor_set_resources.png";
 	}
 
-	uint8_t get_set_to() const       {return set_to_;}
-	void set_set_to(uint8_t const n) {set_to_ = n;}
+	Widelands::ResourceAmount get_set_to() const       {return set_to_;}
+	void set_set_to(Widelands::ResourceAmount const n) {set_to_ = n;}
 	Widelands::DescriptionIndex get_cur_res() const {return cur_res_;}
 	void set_cur_res(Widelands::DescriptionIndex const res)
 	{cur_res_ = res;}
 
 private:
 	Widelands::DescriptionIndex cur_res_;
-	uint8_t set_to_;
+	Widelands::ResourceAmount set_to_;
 };
 
 

=== modified file 'src/logic/editor_game_base.cc'
--- src/logic/editor_game_base.cc	2016-03-19 11:47:00 +0000
+++ src/logic/editor_game_base.cc	2016-04-11 06:48:15 +0000
@@ -349,7 +349,7 @@
 ===============
 */
 Immovable & EditorGameBase::create_immovable
-	(Coords const c, uint32_t const idx, MapObjectDescr::OwnerType type)
+	(Coords const c, DescriptionIndex const idx, MapObjectDescr::OwnerType type)
 {
 	const ImmovableDescr & descr =
 		*

=== modified file 'src/logic/editor_game_base.h'
--- src/logic/editor_game_base.h	2016-03-19 11:47:00 +0000
+++ src/logic/editor_game_base.h	2016-04-11 06:48:15 +0000
@@ -141,7 +141,7 @@
 	Bob& create_critter(Coords, DescriptionIndex bob_type_idx, Player* owner = nullptr);
 	Bob& create_critter(Coords, const std::string& name, Player* owner = nullptr);
 	Immovable& create_immovable(Coords,
-										 uint32_t idx,
+										 DescriptionIndex idx,
 										 MapObjectDescr::OwnerType = MapObjectDescr::OwnerType::kWorld);
 	Immovable& create_immovable(Coords,
 										 const std::string& name,

=== modified file 'src/logic/field.h'
--- src/logic/field.h	2016-02-15 23:26:42 +0000
+++ src/logic/field.h	2016-04-11 06:48:15 +0000
@@ -156,10 +156,10 @@
 
 	// Resources can be set through Map::set_resources()
 	// TODO(unknown): This should return DescriptionIndex
-	uint8_t get_resources() const {return resources;}
-	uint8_t get_resources_amount() const {return res_amount;}
+	DescriptionIndex get_resources() const {return resources;}
+	ResourceAmount get_resources_amount() const {return res_amount;}
 	// TODO(unknown): This should return uint8_t
-	int32_t get_initial_res_amount() const {return initial_res_amount;}
+	ResourceAmount get_initial_res_amount() const {return initial_res_amount;}
 
 	/// \note you must reset this field's + neighbor's brightness when you
 	/// change the height. Map::change_height does this. This function is not
@@ -212,8 +212,8 @@
 	OwnerInfoAndSelectionsType owner_info_and_selections;
 
 	DescriptionIndex resources; ///< Resource type on this field, if any
-	uint8_t initial_res_amount; ///< Initial amount of resources
-	uint8_t res_amount; ///< Current amount of resources
+	ResourceAmount initial_res_amount; ///< Initial amount of resources
+	ResourceAmount res_amount; ///< Current amount of resources
 
 	Terrains terrains;
 };

=== modified file 'src/logic/findnode.h'
--- src/logic/findnode.h	2016-02-16 13:15:29 +0000
+++ src/logic/findnode.h	2016-04-11 06:48:15 +0000
@@ -24,6 +24,8 @@
 
 #include <stdint.h>
 
+#include "logic/widelands.h"
+
 namespace Widelands {
 
 struct FCoords;
@@ -161,23 +163,23 @@
 
 /// Accepts a node if it has at least one of the given resource.
 struct FindNodeResource {
-	FindNodeResource(uint8_t res) : resource(res) {}
+	FindNodeResource(DescriptionIndex res) : resource(res) {}
 
 	bool accept(const Map &, const FCoords &) const;
 
 private:
-	uint8_t resource;
+	DescriptionIndex resource;
 };
 
 
 /// Accepts a node if it has the given resource type and remaining capacity.
 struct FindNodeResourceBreedable {
-	FindNodeResourceBreedable(uint8_t res) : resource(res) {}
+	FindNodeResourceBreedable(DescriptionIndex res) : resource(res) {}
 
 	bool accept(const Map &, const FCoords &) const;
 
 private:
-	uint8_t resource;
+	DescriptionIndex resource;
 };
 
 /// Accepts a node if it is a shore node in the sense that it is walkable

=== modified file 'src/logic/map.cc'
--- src/logic/map.cc	2016-04-06 09:23:04 +0000
+++ src/logic/map.cc	2016-04-11 06:48:15 +0000
@@ -172,7 +172,7 @@
 			if (f.field->get_resources() != Widelands::kNoResource || f.field->get_resources_amount())
 				continue;
 			std::map<int32_t, int32_t> m;
-			int32_t amount = 0;
+			ResourceAmount amount = 0;
 
 			//  this node
 			{
@@ -192,8 +192,8 @@
 			get_neighbour(f, WALK_NW, &f1);
 			{
 				const TerrainDescription& terr = world.terrain_descr(f1.field->terrain_r());
-				const int8_t resr = terr.get_default_resource();
-				const int default_amount = terr.get_default_resource_amount();
+				const DescriptionIndex resr = terr.get_default_resource();
+				const ResourceAmount default_amount = terr.get_default_resource_amount();
 				if ((terr.get_is() & TerrainDescription::Is::kUnwalkable) && default_amount > 0)
 					m[resr] += 3;
 				else
@@ -202,8 +202,8 @@
 			}
 			{
 				const TerrainDescription& terd = world.terrain_descr(f1.field->terrain_d());
-				const int8_t resd = terd.get_default_resource();
-				const int default_amount = terd.get_default_resource_amount();
+				const DescriptionIndex resd = terd.get_default_resource();
+				const ResourceAmount default_amount = terd.get_default_resource_amount();
 				if ((terd.get_is() & TerrainDescription::Is::kUnwalkable) && default_amount > 0)
 					m[resd] += 3;
 				else
@@ -215,8 +215,8 @@
 			get_neighbour(f, WALK_NE, &f1);
 			{
 				const TerrainDescription& terd = world.terrain_descr(f1.field->terrain_d());
-				const int8_t resd = terd.get_default_resource();
-				const int default_amount = terd.get_default_resource_amount();
+				const DescriptionIndex resd = terd.get_default_resource();
+				const ResourceAmount default_amount = terd.get_default_resource_amount();
 				if ((terd.get_is() & TerrainDescription::Is::kUnwalkable) && default_amount > 0)
 					m[resd] += 3;
 				else
@@ -228,8 +228,8 @@
 			get_neighbour(f, WALK_W, &f1);
 			{
 				const TerrainDescription& terr = world.terrain_descr(f1.field->terrain_r());
-				const int8_t resr = terr.get_default_resource();
-				const int default_amount = terr.get_default_resource_amount();
+				const DescriptionIndex resr = terr.get_default_resource();
+				const ResourceAmount default_amount = terr.get_default_resource_amount();
 				if ((terr.get_is() & TerrainDescription::Is::kUnwalkable) && default_amount > 0)
 					m[resr] += 3;
 				else
@@ -1869,7 +1869,7 @@
 }
 
 bool Map::is_resource_valid
-	(const Widelands::World& world, const TCoords<Widelands::FCoords>& c, int32_t const curres)
+	(const Widelands::World& world, const TCoords<Widelands::FCoords>& c, DescriptionIndex curres)
 {
 	if (curres == Widelands::kNoResource)
 		return true;
@@ -1912,7 +1912,7 @@
 
 void Map::initialize_resources(const FCoords& c,
                                const DescriptionIndex resource_type,
-                               uint8_t amount) {
+										 ResourceAmount amount) {
 	// You cannot have an amount of nothing.
 	if (resource_type == Widelands::kNoResource) {
 		amount = 0;
@@ -1927,7 +1927,7 @@
 	Notifications::publish(note);
 }
 
-void Map::set_resources(const FCoords& c, uint8_t amount) {
+void Map::set_resources(const FCoords& c, ResourceAmount amount) {
 	// You cannot change the amount of resources on a field without resources.
 	if (c.field->resources == Widelands::kNoResource) {
 		return;

=== modified file 'src/logic/map.h'
--- src/logic/map.h	2016-04-01 12:22:09 +0000
+++ src/logic/map.h	2016-04-11 06:48:15 +0000
@@ -82,8 +82,8 @@
 
 	FCoords fc;
 	DescriptionIndex old_resource;
-	uint8_t old_initial_amount;
-	uint8_t old_amount;
+	ResourceAmount old_initial_amount;
+	ResourceAmount old_amount;
 };
 
 struct ImmovableFound {
@@ -369,11 +369,11 @@
 
 	/// Initializes the 'initial_resources' on 'coords' to the 'resource_type'
 	/// with the given 'amount'.
-	void initialize_resources(const FCoords& coords, DescriptionIndex resource_type, uint8_t amount);
+	void initialize_resources(const FCoords& coords, DescriptionIndex resource_type, ResourceAmount amount);
 
 	/// Sets the number of resources of the field to 'amount'. The type of the
 	/// resource on this field is not changed.
-	void set_resources(const FCoords& coords, uint8_t amount);
+	void set_resources(const FCoords& coords, ResourceAmount amount);
 
 	/// Clears the resources, i.e. the amount will be set to 0 and the type of
 	/// resources will be kNoResource.
@@ -410,7 +410,7 @@
 	 */
 	bool is_resource_valid
 		(const Widelands::World& world, const Widelands::TCoords<Widelands::FCoords>& c,
-		int32_t const curres);
+		DescriptionIndex curres);
 
 	// The objectives that are defined in this map if it is a scenario.
 	const Objectives& objectives() const {

=== modified file 'src/logic/map_objects/tribes/bill_of_materials.h'
--- src/logic/map_objects/tribes/bill_of_materials.h	2016-02-04 17:49:51 +0000
+++ src/logic/map_objects/tribes/bill_of_materials.h	2016-04-11 06:48:15 +0000
@@ -25,7 +25,7 @@
 #include "logic/widelands.h"
 
 namespace Widelands {
-using WareAmount = std::pair<DescriptionIndex, uint32_t>;
+using WareAmount = std::pair<DescriptionIndex, Widelands::Quantity>;
 using BillOfMaterials = std::vector<WareAmount>;
 
 // range structure for iterating ware range with index

=== modified file 'src/logic/map_objects/tribes/militarysite.cc'
--- src/logic/map_objects/tribes/militarysite.cc	2016-03-29 10:04:48 +0000
+++ src/logic/map_objects/tribes/militarysite.cc	2016-04-11 06:48:15 +0000
@@ -117,8 +117,8 @@
 void MilitarySite::update_statistics_string(std::string* s)
 {
 	s->clear();
-	uint32_t present = present_soldiers().size();
-	uint32_t stationed = stationed_soldiers().size();
+	Quantity present = present_soldiers().size();
+	Quantity stationed = stationed_soldiers().size();
 
 	if (present == stationed) {
 		if (capacity_ > stationed) {
@@ -400,7 +400,7 @@
 void MilitarySite::update_normal_soldier_request()
 {
 	std::vector<Soldier *> present = present_soldiers();
-	uint32_t const stationed = stationed_soldiers().size();
+	Quantity const stationed = stationed_soldiers().size();
 
 	if (stationed < capacity_) {
 		if (!normal_soldier_request_) {
@@ -718,13 +718,13 @@
 	return soldiers;
 }
 
-uint32_t MilitarySite::min_soldier_capacity() const {
+Quantity MilitarySite::min_soldier_capacity() const {
 	return 1;
 }
-uint32_t MilitarySite::max_soldier_capacity() const {
+Quantity MilitarySite::max_soldier_capacity() const {
 	return descr().get_max_number_of_soldiers();
 }
-uint32_t MilitarySite::soldier_capacity() const
+Quantity MilitarySite::soldier_capacity() const
 {
 	return capacity_;
 }

=== modified file 'src/logic/map_objects/tribes/militarysite.h'
--- src/logic/map_objects/tribes/militarysite.h	2016-02-08 17:25:17 +0000
+++ src/logic/map_objects/tribes/militarysite.h	2016-04-11 06:48:15 +0000
@@ -43,7 +43,7 @@
 	Building & create_object() const override;
 
 	uint32_t get_conquers() const override {return conquer_radius_;}
-	uint32_t get_max_number_of_soldiers () const {
+	Quantity get_max_number_of_soldiers () const {
 		return num_soldiers_;
 	}
 	uint32_t get_heal_per_second        () const {
@@ -60,7 +60,7 @@
 
 private:
 	uint32_t conquer_radius_;
-	uint32_t num_soldiers_;
+	Quantity num_soldiers_;
 	uint32_t heal_per_second_;
 	DISALLOW_COPY_AND_ASSIGN(MilitarySiteDescr);
 };
@@ -93,10 +93,10 @@
 	// Begin implementation of SoldierControl
 	std::vector<Soldier *> present_soldiers() const override;
 	std::vector<Soldier *> stationed_soldiers() const override;
-	uint32_t min_soldier_capacity() const override;
-	uint32_t max_soldier_capacity() const override;
-	uint32_t soldier_capacity() const override;
-	void set_soldier_capacity(uint32_t capacity) override;
+	Quantity min_soldier_capacity() const override;
+	Quantity max_soldier_capacity() const override;
+	Quantity soldier_capacity() const override;
+	void set_soldier_capacity(Quantity capacity) override;
 	void drop_soldier(Soldier &) override;
 	int incorporate_soldier(EditorGameBase & game, Soldier & s) override;
 
@@ -158,7 +158,7 @@
 	std::unique_ptr<Request> normal_soldier_request_;  // filling the site
 	std::unique_ptr<Request> upgrade_soldier_request_; // seeking for better soldiers
 	bool didconquer_;
-	uint32_t capacity_;
+	Quantity capacity_;
 
 	/**
 	 * Next gametime where we should heal something.

=== modified file 'src/logic/map_objects/tribes/production_program.cc'
--- src/logic/map_objects/tribes/production_program.cc	2016-04-05 07:51:48 +0000
+++ src/logic/map_objects/tribes/production_program.cc	2016-04-11 06:48:15 +0000
@@ -1243,9 +1243,9 @@
 		MapRegion<Area<FCoords> > mr
 			(map, Area<FCoords> (map.get_fcoords(ps.get_position()), distance_));
 		do {
-			uint8_t  fres   = mr.location().field->get_resources();
-			uint32_t amount = mr.location().field->get_resources_amount();
-			uint32_t start_amount =
+			DescriptionIndex fres = mr.location().field->get_resources();
+			ResourceAmount amount = mr.location().field->get_resources_amount();
+			ResourceAmount start_amount =
 				mr.location().field->get_initial_res_amount();
 
 			if (fres != resource_) {
@@ -1291,8 +1291,8 @@
 				(map,
 				 Area<FCoords>(map.get_fcoords(ps.get_position()), distance_));
 			do {
-				uint8_t  fres   = mr.location().field->get_resources();
-				uint32_t amount = mr.location().field->get_resources_amount();
+				DescriptionIndex fres = mr.location().field->get_resources();
+				ResourceAmount amount = mr.location().field->get_resources_amount();
 
 				if (fres != resource_)
 					amount = 0;

=== modified file 'src/logic/map_objects/tribes/ship.h'
--- src/logic/map_objects/tribes/ship.h	2016-03-19 12:51:22 +0000
+++ src/logic/map_objects/tribes/ship.h	2016-04-11 06:48:15 +0000
@@ -67,11 +67,11 @@
 	uint32_t movecaps() const override;
 	const DirAnimations & get_sail_anims() const {return sail_anims_;}
 
-	uint32_t get_capacity() const {return capacity_;}
+	Quantity get_capacity() const {return capacity_;}
 
 private:
 	DirAnimations sail_anims_;
-	uint32_t capacity_;
+	Quantity capacity_;
 	DISALLOW_COPY_AND_ASSIGN(ShipDescr);
 };
 

=== modified file 'src/logic/map_objects/tribes/soldiercontrol.h'
--- src/logic/map_objects/tribes/soldiercontrol.h	2015-11-28 22:29:26 +0000
+++ src/logic/map_objects/tribes/soldiercontrol.h	2016-04-11 06:48:15 +0000
@@ -22,6 +22,8 @@
 
 #include <vector>
 
+#include "logic/widelands.h"
+
 namespace Widelands {
 
 class EditorGameBase;
@@ -54,19 +56,19 @@
 	 * \return the minimum number of soldiers that this building can be
 	 * configured to hold.
 	 */
-	virtual uint32_t min_soldier_capacity() const = 0;
+	virtual Quantity min_soldier_capacity() const = 0;
 
 	/**
 	 * \return the maximum number of soldiers that this building can be
 	 * configured to hold.
 	 */
-	virtual uint32_t max_soldier_capacity() const = 0;
+	virtual Quantity max_soldier_capacity() const = 0;
 
 	/**
 	 * \return the number of soldiers this building is configured to hold
 	 * right now.
 	 */
-	virtual uint32_t soldier_capacity() const = 0;
+	virtual Quantity soldier_capacity() const = 0;
 
 	/**
 	 * Sets the capacity for soldiers of this building.
@@ -74,13 +76,13 @@
 	 * New soldiers will be requested and old soldiers will be evicted
 	 * as necessary.
 	 */
-	virtual void set_soldier_capacity(uint32_t capacity) = 0;
+	virtual void set_soldier_capacity(Quantity capacity) = 0;
 
 	void changeSoldierCapacity(int32_t const difference) {
-		uint32_t const old_capacity = soldier_capacity();
-		uint32_t const new_capacity =
+		Widelands::Quantity const old_capacity = soldier_capacity();
+		Widelands::Quantity const new_capacity =
 			std::min
-				(static_cast<uint32_t>
+				(static_cast<Widelands::Quantity>
 				 	(std::max
 				 	 	(static_cast<int32_t>(old_capacity) + difference,
 				 	 	 static_cast<int32_t>(min_soldier_capacity()))),

=== modified file 'src/logic/map_objects/tribes/trainingsite.cc'
--- src/logic/map_objects/tribes/trainingsite.cc	2016-04-01 07:43:42 +0000
+++ src/logic/map_objects/tribes/trainingsite.cc	2016-04-11 06:48:15 +0000
@@ -419,18 +419,18 @@
 	return soldiers_;
 }
 
-uint32_t TrainingSite::min_soldier_capacity() const {
+Quantity TrainingSite::min_soldier_capacity() const {
 	return 0;
 }
-uint32_t TrainingSite::max_soldier_capacity() const {
+Quantity TrainingSite::max_soldier_capacity() const {
 	return descr().get_max_number_of_soldiers();
 }
-uint32_t TrainingSite::soldier_capacity() const
+Quantity TrainingSite::soldier_capacity() const
 {
 	return capacity_;
 }
 
-void TrainingSite::set_soldier_capacity(uint32_t const capacity) {
+void TrainingSite::set_soldier_capacity(Quantity const capacity) {
 	assert(min_soldier_capacity() <= capacity);
 	assert                        (capacity <= max_soldier_capacity());
 	assert(capacity_ != capacity);

=== modified file 'src/logic/map_objects/tribes/trainingsite.h'
--- src/logic/map_objects/tribes/trainingsite.h	2016-02-17 22:13:21 +0000
+++ src/logic/map_objects/tribes/trainingsite.h	2016-04-11 06:48:15 +0000
@@ -38,7 +38,7 @@
 
 	Building & create_object() const override;
 
-	uint32_t get_max_number_of_soldiers() const {
+	Quantity get_max_number_of_soldiers() const {
 		return num_soldiers_;
 	}
 	bool get_train_health () const {return train_health_;}
@@ -85,7 +85,7 @@
 	//  struct and there should be a vector, indexed by Soldier_Index,
 	//  with that struct structs as element type.
 	/** Maximum number of soldiers for a training site*/
-	uint32_t num_soldiers_;
+	Quantity num_soldiers_;
 	/** Number of rounds w/o successful training, after which a soldier is kicked out.**/
 	uint32_t max_stall_;
 	/** Whether this site can train health*/
@@ -180,10 +180,10 @@
 	// Begin implementation of SoldierControl
 	std::vector<Soldier *> present_soldiers() const override;
 	std::vector<Soldier *> stationed_soldiers() const override;
-	uint32_t min_soldier_capacity() const override;
-	uint32_t max_soldier_capacity() const override;
-	uint32_t soldier_capacity() const override;
-	void set_soldier_capacity(uint32_t capacity) override;
+	Quantity min_soldier_capacity() const override;
+	Quantity max_soldier_capacity() const override;
+	Quantity soldier_capacity() const override;
+	void set_soldier_capacity(Quantity capacity) override;
 	void drop_soldier(Soldier &) override;
 	int incorporate_soldier(EditorGameBase &, Soldier &) override;
 	// End implementation of SoldierControl
@@ -226,7 +226,7 @@
 	 * There is no guarantee there really are capacity_ soldiers in the
 	 * building - some of them might still be under way or even not yet
 	 * available*/
-	uint32_t capacity_;
+	Quantity capacity_;
 
 	/** True, \b always upgrade already experienced soldiers first, when possible
 	 * False, \b always upgrade inexperienced soldiers first, when possible */

=== modified file 'src/logic/map_objects/tribes/tribe_descr.cc'
--- src/logic/map_objects/tribes/tribe_descr.cc	2016-03-08 21:14:48 +0000
+++ src/logic/map_objects/tribes/tribe_descr.cc	2016-04-11 06:48:15 +0000
@@ -339,7 +339,7 @@
 ==============
 */
 DescriptionIndex TribeDescr::get_resource_indicator
-	(ResourceDescription const * const res, uint32_t const amount) const {
+	(ResourceDescription const * const res, const ResourceAmount amount) const {
 	if (!res || !amount) {
 		DescriptionIndex idx = immovable_index("resi_none");
 		if (!has_immovable(idx)) {
@@ -363,8 +363,8 @@
 		throw GameDataError("There is no resource indicator for resource %s", res->name().c_str());
 	}
 
-	int32_t bestmatch =
-		static_cast<int32_t>
+	ResourceAmount bestmatch =
+		static_cast<ResourceAmount>
 			((static_cast<float>(amount) / res->max_amount())
 			 *
 			 num_indicators);
@@ -372,10 +372,10 @@
 		throw GameDataError
 			("Amount of %s is %i but max amount is %i",
 			 res->name().c_str(),
-			 amount,
-			 res->max_amount());
+			 static_cast<unsigned int>(amount),
+			 static_cast<unsigned int>(res->max_amount()));
 	}
-	if (static_cast<int32_t>(amount) < res->max_amount()) {
+	if (amount < res->max_amount()) {
 		bestmatch += 1; // Resi start with 1, not 0
 	}
 

=== modified file 'src/logic/map_objects/tribes/tribe_descr.h'
--- src/logic/map_objects/tribes/tribe_descr.h	2016-02-09 07:42:38 +0000
+++ src/logic/map_objects/tribes/tribe_descr.h	2016-04-11 06:48:15 +0000
@@ -122,7 +122,7 @@
 	const RoadTextures& road_textures() const;
 
 	DescriptionIndex get_resource_indicator
-		(const ResourceDescription * const res, const uint32_t amount) const;
+		(const ResourceDescription * const res, const ResourceAmount amount) const;
 
 	// Returns the initalization at 'index' (which must not be out of bounds).
 	const TribeBasicInfo::Initialization& initialization(const uint8_t index) const {

=== modified file 'src/logic/map_objects/tribes/warehouse.cc'
--- src/logic/map_objects/tribes/warehouse.cc	2016-03-12 07:07:12 +0000
+++ src/logic/map_objects/tribes/warehouse.cc	2016-04-11 06:48:15 +0000
@@ -128,7 +128,7 @@
 
 
 /// Add wares and update the economy.
-void WarehouseSupply::add_wares(DescriptionIndex const id, uint32_t const count)
+void WarehouseSupply::add_wares(DescriptionIndex const id, Quantity const count)
 {
 	if (!count)
 		return;
@@ -779,14 +779,14 @@
 
 
 /// Magically create wares in this warehouse. Updates the economy accordingly.
-void Warehouse::insert_wares(DescriptionIndex const id, uint32_t const count)
+void Warehouse::insert_wares(DescriptionIndex const id, Quantity const count)
 {
 	supply_->add_wares(id, count);
 }
 
 
 /// Magically destroy wares.
-void Warehouse::remove_wares(DescriptionIndex const id, uint32_t const count)
+void Warehouse::remove_wares(DescriptionIndex const id, Quantity const count)
 {
 	supply_->remove_wares(id, count);
 }
@@ -832,10 +832,9 @@
  * \return the number of workers that we can launch satisfying the given
  * requirements.
  */
-uint32_t Warehouse::count_workers
-	(const Game & /* game */, DescriptionIndex ware, const Requirements & req)
+Quantity Warehouse::count_workers(const Game & /* game */, DescriptionIndex ware, const Requirements & req)
 {
-	uint32_t sum = 0;
+	Quantity sum = 0;
 
 	do {
 		sum += supply_->stock_workers(ware);
@@ -1116,7 +1115,7 @@
  * Return the number of workers of the given type that we plan to
  * create in this warehouse.
  */
-uint32_t Warehouse::get_planned_workers(Game & /* game */, DescriptionIndex index) const
+Quantity Warehouse::get_planned_workers(Game & /* game */, DescriptionIndex index) const
 {
 	for (const PlannedWorkers& pw : planned_workers_) {
 		if (pw.index == index)
@@ -1131,8 +1130,7 @@
  *
  * This is the current stock plus any incoming transfers.
  */
-std::vector<uint32_t> Warehouse::calc_available_for_worker
-	(Game & /* game */, DescriptionIndex index) const
+std::vector<Quantity> Warehouse::calc_available_for_worker(Game & /* game */, DescriptionIndex index) const
 {
 	const WorkerDescr & w_desc = *owner().tribe().get_worker_descr(index);
 	std::vector<uint32_t> available;
@@ -1171,7 +1169,7 @@
  * Set the amount of workers we plan to create
  * of the given \p index to \p amount.
  */
-void Warehouse::plan_workers(Game & game, DescriptionIndex index, uint32_t amount)
+void Warehouse::plan_workers(Game & game, DescriptionIndex index, Quantity amount)
 {
 	PlannedWorkers * pw = nullptr;
 
@@ -1234,7 +1232,7 @@
 	for (const auto& buildcost : w_desc.buildcost()) {
 
 		const std::string & input_name = buildcost.first;
-		uint32_t supply;
+		Quantity supply;
 
 		DescriptionIndex id_w = owner().tribe().ware_index(input_name);
 		if (owner().tribe().has_ware(id_w)) {

=== modified file 'src/logic/map_objects/tribes/warehouse.h'
--- src/logic/map_objects/tribes/warehouse.h	2016-02-18 18:27:52 +0000
+++ src/logic/map_objects/tribes/warehouse.h	2016-04-11 06:48:15 +0000
@@ -148,20 +148,20 @@
 	 */
 	Workers get_incorporated_workers();
 
-	void insert_wares  (DescriptionIndex, uint32_t count);
-	void remove_wares  (DescriptionIndex, uint32_t count);
-	void insert_workers(DescriptionIndex, uint32_t count);
-	void remove_workers(DescriptionIndex, uint32_t count);
+	void insert_wares  (DescriptionIndex, Quantity count);
+	void remove_wares  (DescriptionIndex, Quantity count);
+	void insert_workers(DescriptionIndex, Quantity count);
+	void remove_workers(DescriptionIndex, Quantity count);
 
 	/* SoldierControl implementation */
 	std::vector<Soldier *> present_soldiers() const override;
 	std::vector<Soldier *> stationed_soldiers() const override {
 		return present_soldiers();
 	}
-	uint32_t min_soldier_capacity() const override {return 0;}
-	uint32_t max_soldier_capacity() const override {return 4294967295U;}
-	uint32_t soldier_capacity() const override {return max_soldier_capacity();}
-	void set_soldier_capacity(uint32_t /* capacity */) override {
+	Quantity min_soldier_capacity() const override {return 0;}
+	Quantity max_soldier_capacity() const override {return 4294967295U;}
+	Quantity soldier_capacity() const override {return max_soldier_capacity();}
+	void set_soldier_capacity(Quantity /* capacity */) override {
 		throw wexception("Not implemented for a Warehouse!");
 	}
 	void drop_soldier(Soldier &) override {
@@ -172,7 +172,7 @@
 
 	bool fetch_from_flag(Game &) override;
 
-	uint32_t count_workers(const Game &, DescriptionIndex, const Requirements &);
+	Quantity count_workers(const Game &, DescriptionIndex, const Requirements &);
 	Worker & launch_worker(Game &, DescriptionIndex worker, const Requirements &);
 
 	// Adds the worker to the inventory. Takes ownership and might delete
@@ -188,9 +188,9 @@
 	bool can_create_worker(Game &, DescriptionIndex) const;
 	void     create_worker(Game &, DescriptionIndex);
 
-	uint32_t get_planned_workers(Game &, DescriptionIndex index) const;
-	void plan_workers(Game &, DescriptionIndex index, uint32_t amount);
-	std::vector<uint32_t> calc_available_for_worker
+	Quantity get_planned_workers(Game &, DescriptionIndex index) const;
+	void plan_workers(Game &, DescriptionIndex index, Quantity amount);
+	std::vector<Quantity> calc_available_for_worker
 		(Game &, DescriptionIndex index) const;
 
 	void enable_spawn(Game &, uint8_t worker_types_without_cost_index);
@@ -240,7 +240,7 @@
 		DescriptionIndex index;
 
 		/// How many workers of this type are we supposed to create?
-		uint32_t amount;
+		Quantity amount;
 
 		/// Requests to obtain the required build costs
 		std::vector<Request *> requests;

=== modified file 'src/logic/map_objects/tribes/warelist.cc'
--- src/logic/map_objects/tribes/warelist.cc	2016-02-09 07:42:38 +0000
+++ src/logic/map_objects/tribes/warelist.cc	2016-04-11 06:48:15 +0000
@@ -42,7 +42,7 @@
 /**
  * Add the given number of items (default = 1) to the storage.
  */
-void WareList::add(DescriptionIndex const i, const WareCount count) {
+void WareList::add(DescriptionIndex const i, const Quantity count) {
 	if (!count)
 		return;
 
@@ -69,7 +69,7 @@
 /**
  * Remove the given number of items (default = 1) from the storage.
  */
-void WareList::remove(DescriptionIndex const i, const WareCount count) {
+void WareList::remove(DescriptionIndex const i, const Quantity count) {
 	if (!count)
 		return;
 
@@ -92,7 +92,7 @@
 /**
  * Return the number of wares of a given type stored in this storage.
  */
-WareList::WareCount WareList::stock(DescriptionIndex const id) const {
+Quantity WareList::stock(DescriptionIndex const id) const {
 	return id < wares_.size() ? wares_[id] : 0;
 }
 
@@ -106,7 +106,7 @@
 	uint32_t i = 0;
 
 	while (i < wl.wares_.size()) {
-		const WareCount count = wl.wares_[i];
+		const Quantity count = wl.wares_[i];
 		if (i < wares_.size()) {
 			if (count != wares_[i])
 				return false;

=== modified file 'src/logic/map_objects/tribes/warelist.h'
--- src/logic/map_objects/tribes/warelist.h	2016-02-09 07:42:38 +0000
+++ src/logic/map_objects/tribes/warelist.h	2016-04-11 06:48:15 +0000
@@ -40,17 +40,14 @@
 
 	void clear() {wares_.clear();} /// Clear the storage
 
-	using WareCount = uint32_t;
-	using WareCountVector = std::vector<WareCount>;
-
 	/// \return Highest possible ware id
 	DescriptionIndex get_nrwareids() const {return DescriptionIndex(wares_.size());}
 
-	void add   (DescriptionIndex, WareCount = 1);
+	void add   (DescriptionIndex, Quantity = 1);
 	void add(const WareList &);
-	void remove(DescriptionIndex, WareCount = 1);
+	void remove(DescriptionIndex, Quantity = 1);
 	void remove(const WareList & wl);
-	WareCount stock(DescriptionIndex) const;
+	Quantity stock(DescriptionIndex) const;
 
 	void set_nrwares(DescriptionIndex const i) {
 		assert(wares_.empty());
@@ -63,7 +60,7 @@
 	mutable boost::signals2::signal<void ()> changed;
 
 private:
-	WareCountVector wares_;
+	std::vector<Quantity> wares_;
 };
 
 }

=== modified file 'src/logic/map_objects/tribes/worker.cc'
--- src/logic/map_objects/tribes/worker.cc	2016-04-10 16:53:41 +0000
+++ src/logic/map_objects/tribes/worker.cc	2016-04-11 06:48:15 +0000
@@ -128,8 +128,8 @@
 	MapRegion<Area<FCoords> > mr
 		(map, Area<FCoords>(map.get_fcoords(get_position()), action.iparam1));
 	do {
-		uint8_t fres  = mr.location().field->get_resources();
-		uint32_t amount = mr.location().field->get_resources_amount();
+		DescriptionIndex fres = mr.location().field->get_resources();
+		ResourceAmount amount = mr.location().field->get_resources_amount();
 
 		// In the future, we might want to support amount = 0 for
 		// fields that can produce an infinite amount of resources.
@@ -164,12 +164,12 @@
 	mr = MapRegion<Area<FCoords> >
 		(map, Area<FCoords>(map.get_fcoords(get_position()), action.iparam1));
 	do {
-		uint8_t fres  = mr.location().field->get_resources();
+		DescriptionIndex fres = mr.location().field->get_resources();
 		if (fres != res) {
 			continue;
 		}
 
-		uint32_t amount = mr.location().field->get_resources_amount();
+		ResourceAmount amount = mr.location().field->get_resources_amount();
 
 		pick -= 8 * amount;
 		if (pick < 0) {
@@ -233,8 +233,8 @@
 	MapRegion<Area<FCoords> > mr
 		(map, Area<FCoords>(map.get_fcoords(get_position()), action.iparam1));
 	do {
-		uint8_t fres  = mr.location().field->get_resources();
-		uint32_t amount =
+		DescriptionIndex fres = mr.location().field->get_resources();
+		ResourceAmount amount =
 			mr.location().field->get_initial_res_amount() -
 			mr.location().field->get_resources_amount   ();
 
@@ -273,11 +273,11 @@
 		(map, Area<FCoords>(map.get_fcoords(get_position()), action.iparam1));
 
 	do {
-		uint8_t fres  = mr.location().field->get_resources();
+		DescriptionIndex fres = mr.location().field->get_resources();
 		if (fres != res)
 			continue;
 
-		uint32_t amount =
+		ResourceAmount amount =
 			mr.location().field->get_initial_res_amount() -
 			mr.location().field->get_resources_amount   ();
 

=== modified file 'src/logic/map_objects/tribes/worker_descr.h'
--- src/logic/map_objects/tribes/worker_descr.h	2016-02-27 08:43:39 +0000
+++ src/logic/map_objects/tribes/worker_descr.h	2016-04-11 06:48:15 +0000
@@ -45,7 +45,7 @@
 	friend struct WorkerProgram;
 
 public:
-	using Buildcost = std::map<std::string, uint8_t>;
+	using Buildcost = std::map<std::string, Quantity>;
 
 	WorkerDescr(const std::string& init_descname,
 					MapObjectType type, const LuaTable& table, const EditorGameBase& egbase);
@@ -67,7 +67,7 @@
 	/// The special value std::numeric_limits<uint32_t>::max() means that the
 	/// the target quantity of this ware type will never be checked and should
 	/// not be configurable.
-	uint32_t default_target_quantity() const {return default_target_quantity_;}
+	Quantity default_target_quantity() const {return default_target_quantity_;}
 
 	bool has_demand_check() const {
 		return default_target_quantity() != std::numeric_limits<uint32_t>::max();
@@ -111,7 +111,7 @@
 
 protected:
 	Point             ware_hotspot_;
-	uint32_t          default_target_quantity_;
+	Quantity          default_target_quantity_;
 	std::string       helptext_script_;  // The path and filename to the worker's helptext script
 	DirAnimations     walk_anims_;
 	DirAnimations     walkload_anims_;

=== modified file 'src/logic/map_objects/world/resource_description.cc'
--- src/logic/map_objects/world/resource_description.cc	2016-01-25 18:16:48 +0000
+++ src/logic/map_objects/world/resource_description.cc	2016-04-11 06:48:15 +0000
@@ -77,7 +77,7 @@
 	return detectable_;
 }
 
-int32_t ResourceDescription::max_amount() const {
+ResourceAmount ResourceDescription::max_amount() const {
 	return max_amount_;
 }
 

=== modified file 'src/logic/map_objects/world/resource_description.h'
--- src/logic/map_objects/world/resource_description.h	2016-01-25 18:16:48 +0000
+++ src/logic/map_objects/world/resource_description.h	2016-04-11 06:48:15 +0000
@@ -49,7 +49,7 @@
 	bool detectable() const;
 
 	/// Returns the maximum amount that can be in a field for this resource.
-	int32_t max_amount() const;
+	ResourceAmount max_amount() const;
 
 	/// Returns the path to the image that should be used in the editor to
 	/// represent an 'amount' of this resource.
@@ -62,7 +62,7 @@
 	const std::string name_;
 	const std::string descname_;
 	const bool detectable_;
-	const int32_t max_amount_;
+	const ResourceAmount max_amount_;
 	const std::string representative_image_;
 	std::vector<EditorPicture> editor_pictures_;
 

=== modified file 'src/logic/map_objects/world/terrain_description.cc'
--- src/logic/map_objects/world/terrain_description.cc	2016-02-14 14:09:29 +0000
+++ src/logic/map_objects/world/terrain_description.cc	2016-04-11 06:48:15 +0000
@@ -214,20 +214,20 @@
 	return editor_category_;
 }
 
-DescriptionIndex TerrainDescription::get_valid_resource(uint8_t index) const {
+DescriptionIndex TerrainDescription::get_valid_resource(DescriptionIndex index) const {
 	return valid_resources_[index];
 }
 
-int TerrainDescription::get_num_valid_resources() const {
+size_t TerrainDescription::get_num_valid_resources() const {
 	return valid_resources_.size();
 }
 
-std::vector<uint8_t> TerrainDescription::valid_resources() const {
+std::vector<DescriptionIndex> TerrainDescription::valid_resources() const {
 	return valid_resources_;
 }
 
-bool TerrainDescription::is_resource_valid(const int res) const {
-	for (const uint8_t resource_index : valid_resources_) {
+bool TerrainDescription::is_resource_valid(const DescriptionIndex res) const {
+	for (const DescriptionIndex resource_index : valid_resources_) {
 		if (resource_index == res) {
 			return true;
 		}
@@ -235,11 +235,11 @@
 	return false;
 }
 
-int TerrainDescription::get_default_resource() const {
+DescriptionIndex TerrainDescription::get_default_resource() const {
 	return default_resource_index_;
 }
 
-int TerrainDescription::get_default_resource_amount() const {
+ResourceAmount TerrainDescription::get_default_resource_amount() const {
 	return default_resource_amount_;
 }
 

=== modified file 'src/logic/map_objects/world/terrain_description.h'
--- src/logic/map_objects/world/terrain_description.h	2016-02-14 14:09:29 +0000
+++ src/logic/map_objects/world/terrain_description.h	2016-04-11 06:48:15 +0000
@@ -89,23 +89,23 @@
 	const std::vector<TerrainDescription::Type> get_types() const;
 
 	/// Returns the valid resource with the given index.
-	DescriptionIndex get_valid_resource(uint8_t index) const;
+	DescriptionIndex get_valid_resource(DescriptionIndex index) const;
 
 	/// Returns the number of valid resources.
-	int get_num_valid_resources() const;
+	size_t get_num_valid_resources() const;
 
 	/// Returns the the valid resources.
-	std::vector<uint8_t> valid_resources() const;
+	std::vector<DescriptionIndex> valid_resources() const;
 
 	/// Returns true if this resource can be found in this terrain type.
-	bool is_resource_valid(int32_t res) const;
+	bool is_resource_valid(DescriptionIndex res) const;
 
 	/// Returns the resource index that can by default always be found in this
 	/// terrain.
-	int get_default_resource() const;
+	DescriptionIndex get_default_resource() const;
 
 	/// Returns the default amount of resources you can find in this terrain.
-	int32_t get_default_resource_amount() const;
+	ResourceAmount get_default_resource_amount() const;
 
 	/// Returns the dither layer, i.e. the information in which zlayer this
 	/// texture should be drawn.
@@ -134,8 +134,8 @@
 	const EditorCategory* editor_category_;  ///< not owned.
 	Is is_;
 	std::vector<std::string> custom_tooltips_;
-	std::vector<uint8_t> valid_resources_;
-	int default_resource_index_;
+	std::vector<DescriptionIndex> valid_resources_;
+	DescriptionIndex default_resource_index_;
 	int default_resource_amount_;
 	int dither_layer_;
 	int frame_length_;

=== modified file 'src/logic/widelands.h'
--- src/logic/widelands.h	2016-04-03 12:35:43 +0000
+++ src/logic/widelands.h	2016-04-11 06:48:15 +0000
@@ -64,6 +64,8 @@
 
 using ResourceAmount = uint8_t; /// 4 bits used, so 0 .. 15.
 
+using Quantity = uint32_t; // e.g. the number of a type of ware in a warehouse.
+
 using Vision = uint16_t;
 
 using Time = int32_t; // TODO(unknown): should be unsigned

=== modified file 'src/map_io/map_buildingdata_packet.cc'
--- src/map_io/map_buildingdata_packet.cc	2016-04-01 07:43:42 +0000
+++ src/map_io/map_buildingdata_packet.cc	2016-04-11 06:48:15 +0000
@@ -344,7 +344,7 @@
 
 			while (fr.unsigned_8()) {
 				const DescriptionIndex& id = tribe.ware_index(fr.c_string());
-				uint32_t amount = fr.unsigned_32();
+				Quantity amount = fr.unsigned_32();
 				Warehouse::StockPolicy policy =
 					static_cast<Warehouse::StockPolicy>(fr.unsigned_8());
 

=== modified file 'src/map_io/map_resources_packet.cc'
--- src/map_io/map_resources_packet.cc	2016-01-16 12:55:14 +0000
+++ src/map_io/map_resources_packet.cc	2016-04-11 06:48:15 +0000
@@ -66,12 +66,13 @@
 
 			for (uint16_t y = 0; y < map.get_height(); ++y) {
 				for (uint16_t x = 0; x < map.get_width(); ++x) {
-					uint8_t const id           = fr.unsigned_8();
-					uint8_t const found_amount = fr.unsigned_8();
-					uint8_t const amount       = found_amount;
-					uint8_t const start_amount = fr.unsigned_8();
+					DescriptionIndex const id         = fr.unsigned_8();
+					ResourceAmount const found_amount = fr.unsigned_8();
+					ResourceAmount const amount       = found_amount;
+					ResourceAmount const start_amount = fr.unsigned_8();
 
-					uint8_t set_id, set_amount, set_start_amount;
+					DescriptionIndex set_id;
+					ResourceAmount set_amount, set_start_amount;
 					//  if amount is zero, theres nothing here
 					if (!amount) {
 						set_id           = 0;
@@ -135,9 +136,9 @@
 	for (uint16_t y = 0; y < map.get_height(); ++y) {
 		for (uint16_t x = 0; x < map.get_width(); ++x) {
 			const Field & f = map[Coords(x, y)];
-			int32_t       res          = f.get_resources          ();
-			int32_t const       amount = f.get_resources_amount   ();
-			int32_t const start_amount = f.get_initial_res_amount();
+			DescriptionIndex              res = f.get_resources          ();
+			ResourceAmount const       amount = f.get_resources_amount   ();
+			ResourceAmount const start_amount = f.get_initial_res_amount();
 			if (!amount)
 				res = 0;
 			fw.unsigned_8(res);

=== modified file 'src/map_io/s2map.cc'
--- src/map_io/s2map.cc	2016-04-03 12:35:43 +0000
+++ src/map_io/s2map.cc	2016-04-11 06:48:15 +0000
@@ -635,7 +635,7 @@
 			default:   res = "";        amount = 0; break;
 			};
 
-			int32_t nres = 0;
+			Widelands::DescriptionIndex nres = 0;
 			if (*res) {
 				nres = world.get_resource(res);
 				if (nres == Widelands::INVALID_INDEX)
@@ -644,8 +644,7 @@
 						 "play settler maps here",
 						 res);
 			}
-			const int32_t real_amount = static_cast<int32_t>
-				(2.86f * static_cast<float>(amount));
+			const Widelands::ResourceAmount real_amount = static_cast<Widelands::ResourceAmount>(2.86f * amount);
 			map_.initialize_resources(c, nres, real_amount);
 		}
 	}

=== modified file 'src/scripting/lua_game.h'
--- src/scripting/lua_game.h	2016-03-14 19:56:14 +0000
+++ src/scripting/lua_game.h	2016-04-11 06:48:15 +0000
@@ -144,7 +144,7 @@
 };
 
 class LuaMessage : public LuaGameModuleClass {
-	uint32_t             player_number_; // TODO(Hasi50): in CTor this is uint8_t, well
+	Widelands::PlayerNumber player_number_;
 	Widelands::MessageId message_id_;
 
 public:

=== modified file 'src/scripting/lua_map.cc'
--- src/scripting/lua_map.cc	2016-04-10 08:50:50 +0000
+++ src/scripting/lua_map.cc	2016-04-11 06:48:15 +0000
@@ -142,12 +142,12 @@
 	}
 };
 
-using SoldiersMap = std::map<SoldierMapDescr, uint32_t>;
-using WaresMap = std::map<Widelands::DescriptionIndex, uint32_t>;
-using WorkersMap = std::map<Widelands::DescriptionIndex, uint32_t>;
-using SoldierAmount = std::pair<SoldierMapDescr, uint32_t>;
-using WorkerAmount = std::pair<Widelands::DescriptionIndex, uint32_t>;
-using PlrInfluence = std::pair<uint8_t, uint32_t>;
+using SoldiersMap = std::map<SoldierMapDescr, Widelands::Quantity>;
+using WaresMap = std::map<Widelands::DescriptionIndex, Widelands::Quantity>;
+using WorkersMap = std::map<Widelands::DescriptionIndex, Widelands::Quantity>;
+using SoldierAmount = std::pair<SoldierMapDescr, Widelands::Quantity>;
+using WorkerAmount = std::pair<Widelands::DescriptionIndex, Widelands::Quantity>;
+using PlrInfluence = std::pair<Widelands::PlayerNumber, Widelands::MilitaryInfluence>;
 using WaresSet = std::set<Widelands::DescriptionIndex>;
 using WorkersSet = std::set<Widelands::DescriptionIndex>;
 using SoldiersList = std::vector<Widelands::Soldier *>;
@@ -309,7 +309,7 @@
 		lua_newtable(L);
 
 	for (const DescriptionIndex& i : set) {
-		uint32_t cnt = 0;
+		Widelands::Quantity cnt = 0;
 		if (c_workers.count(i))
 			cnt = c_workers[i];
 
@@ -350,7 +350,7 @@
 		if (!valid_workers.count(sp.first))
 			report_error(L, "<%s> can't be employed here!", wdes->name().c_str());
 
-		uint32_t cur = 0;
+		Widelands::Quantity cur = 0;
 		WorkersMap::iterator i = c_workers.find(sp.first);
 		if (i != c_workers.end())
 			cur = i->second;
@@ -422,14 +422,14 @@
 	SoldiersMap rv;
 	if (lua_gettop(L) > 2) {
 		// STACK: cls, descr, count
-		const uint32_t count = luaL_checkuint32(L, 3);
+		const Widelands::Quantity count = luaL_checkuint32(L, 3);
 		const SoldierMapDescr d = unbox_lua_soldier_description(L, 2, soldier_descr);
 		rv.insert(SoldierAmount(d, count));
 	} else {
 		lua_pushnil(L);
 		while (lua_next(L, 2) != 0) {
 			const SoldierMapDescr d = unbox_lua_soldier_description(L, 3, soldier_descr);
-			const uint32_t count = luaL_checkuint32(L, -1);
+			const Widelands::Quantity count = luaL_checkuint32(L, -1);
 			rv.insert(SoldierAmount(d, count));
 			lua_pop(L, 1);
 		}
@@ -484,7 +484,7 @@
 
 		// Only return the number of those requested
 		const SoldierMapDescr wanted = unbox_lua_soldier_description(L, 2, soldier_descr);
-		uint32_t rv = 0;
+		Widelands::Quantity rv = 0;
 		for (const Soldier* s : soldiers) {
 			SoldierMapDescr sd
 				(s->get_health_level(), s->get_attack_level(), s->get_defense_level(), s->get_evade_level());
@@ -529,7 +529,7 @@
 	// Now adjust them
 	EditorGameBase& egbase = get_egbase(L);
 	for (const SoldiersMap::value_type& sp : setpoints) {
-		uint32_t cur = 0;
+		Widelands::Quantity cur = 0;
 		SoldiersMap::iterator i = hist.find(sp.first);
 		if (i != hist.end())
 			cur = i->second;
@@ -952,7 +952,7 @@
 	Map & m = get_egbase(L).map();
 
 	lua_createtable(L, m.get_nrplayers(), 0);
-	for (uint32_t i = 0; i < m.get_nrplayers(); i++) {
+	for (Widelands::PlayerNumber i = 0; i < m.get_nrplayers(); i++) {
 		lua_pushuint32(L, i + 1);
 		to_lua<LuaMaps::LuaPlayerSlot>(L, new LuaMaps::LuaPlayerSlot(i + 1));
 		lua_settable(L, -3);
@@ -3077,7 +3077,7 @@
 */
 
 int LuaTerrainDescription::get_default_resource(lua_State * L) {
-	int res_index = get()->get_default_resource();
+	DescriptionIndex res_index = get()->get_default_resource();
 	const World& world = get_egbase(L).world();
 	if (res_index != Widelands::kNoResource && res_index < world.get_nr_resources()) {
 		to_lua<LuaMaps::LuaResourceDescription>
@@ -3176,7 +3176,7 @@
 	const World& world = get_egbase(L).world();
 	lua_newtable(L);
 	int index = 1;
-	for (uint8_t res_index : get()->valid_resources()) {
+	for (DescriptionIndex res_index : get()->valid_resources()) {
 		if (res_index != Widelands::kNoResource && res_index < world.get_nr_resources()) {
 			lua_pushint32(L, index++);
 			to_lua<LuaMaps::LuaResourceDescription>
@@ -3621,7 +3621,7 @@
 	WaresMap setpoints = parse_set_wares_arguments(L, f->owner().tribe());
 	WaresMap c_wares = count_wares_on_flag_(*f, tribes);
 
-	uint32_t nwares = 0;
+	Widelands::Quantity nwares = 0;
 
 	for (const auto& ware : c_wares) {
 		// all wares currently on the flag without a setpoint should be removed
@@ -3690,7 +3690,7 @@
 		lua_newtable(L);
 
 	for (const Widelands::DescriptionIndex& ware : wares_set) {
-		uint32_t count = 0;
+		Widelands::Quantity count = 0;
 		if (wares.count(ware))
 			count = wares[ware];
 
@@ -5173,7 +5173,7 @@
 }
 int LuaField::set_resource(lua_State * L) {
 	auto& egbase = get_egbase(L);
-	int32_t res = egbase.world().get_resource
+	DescriptionIndex res = egbase.world().get_resource
 		(luaL_checkstring(L, -1));
 
 	if (res == Widelands::INVALID_INDEX)
@@ -5201,13 +5201,15 @@
 int LuaField::set_resource_amount(lua_State * L) {
 	EditorGameBase& egbase = get_egbase(L);
 	auto c  = fcoords(L);
-	int32_t res = c.field->get_resources();
-	int32_t amount = luaL_checkint32(L, -1);
+	DescriptionIndex res = c.field->get_resources();
+	auto amount = luaL_checkint32(L, -1);
 	const ResourceDescription * resDesc = egbase.world().get_resource(res);
-	int32_t max_amount = resDesc ? resDesc->max_amount() : 0;
+	ResourceAmount max_amount = resDesc ? resDesc->max_amount() : 0;
 
 	if (amount < 0 || amount > max_amount)
-		report_error(L, "Illegal amount: %i, must be >= 0 and <= %i", amount, max_amount);
+		report_error(L, "Illegal amount: %i, must be >= 0 and <= %i",
+						 amount,
+						 static_cast<unsigned int>(max_amount));
 
 	auto& map = egbase.map();
 	if (is_a(Game, &egbase)) {

=== modified file 'src/wui/game_debug_ui.cc'
--- src/wui/game_debug_ui.cc	2016-03-19 09:50:23 +0000
+++ src/wui/game_debug_ui.cc	2016-04-11 06:48:15 +0000
@@ -362,13 +362,15 @@
 		if (ridx == Widelands::kNoResource) {
 			str += "Resource: None\n";
 		} else {
-			const int ramount = coords_.field->get_resources_amount();
-			const int initial_amount = coords_.field->get_initial_res_amount();
+			const Widelands::ResourceAmount ramount = coords_.field->get_resources_amount();
+			const Widelands::ResourceAmount initial_amount = coords_.field->get_initial_res_amount();
 
 			str += (boost::format("Resource: %s\n")
 					  % ibase().egbase().world().get_resource(ridx)->name().c_str()).str();
 
-			str += (boost::format("  Amount: %i/%i\n") % ramount % initial_amount).str();
+			str += (boost::format("  Amount: %i/%i\n")
+					  % static_cast<unsigned int>(ramount)
+					  % static_cast<unsigned int>(initial_amount)).str();
 		}
 	}
 

=== modified file 'src/wui/soldierlist.cc'
--- src/wui/soldierlist.cc	2016-03-16 09:16:58 +0000
+++ src/wui/soldierlist.cc	2016-04-11 06:48:15 +0000
@@ -120,7 +120,7 @@
 	icon_width_ += 2 * kIconBorder;
 	icon_height_ += 2 * kIconBorder;
 
-	uint32_t maxcapacity = soldiers_.max_soldier_capacity();
+	Widelands::Quantity maxcapacity = soldiers_.max_soldier_capacity();
 	if (maxcapacity <= kMaxColumns) {
 		cols_ = maxcapacity;
 		rows_ = 1;


Follow ups