Review: Approve Couple of nits. I suggest to prefer dynamic_cast<> wherever possible (i.e. when you know the type of the object you have) instead of upcast() which is made for if(upcast()) { situations. dynamic_cast<> can also cast references which will make for easier to read code.
Diff comments: > === modified file 'src/ai/defaultai.cc' > --- src/ai/defaultai.cc 2014-11-03 06:45:32 +0000 > +++ src/ai/defaultai.cc 2014-11-29 08:14:12 +0000 > @@ -330,13 +330,12 @@ > > // Read all interesting data from ware producing buildings > if (typeid(bld) == typeid(ProductionSiteDescr)) { > - const ProductionSiteDescr& prod = > - ref_cast<ProductionSiteDescr const, BuildingDescr > const>(bld); > + upcast(ProductionSiteDescr const, prod, &bld); instead of checking the typeid, you can use if (upcast(...)) { } which reads a tad bit nicer. That also applies to many other places in the change. I did not point it out all the time. of course having dynamic type checking in the first place is already code smell. > bo.type = bld.get_ismine() ? BuildingObserver::MINE : > BuildingObserver::PRODUCTIONSITE; > - for (const WareAmount& temp_input : prod.inputs()) { > + for (const WareAmount& temp_input : prod->inputs()) { > bo.inputs_.push_back(temp_input.first); > } > - for (const WareIndex& temp_output : > prod.output_ware_types()) { > + for (const WareIndex& temp_output : > prod->output_ware_types()) { > bo.outputs_.push_back(temp_output); > } > > @@ -370,9 +369,8 @@ > // non critical are excluded (see below) > if (typeid(bld) == typeid(MilitarySiteDescr)) { > bo.type = BuildingObserver::MILITARYSITE; > - const MilitarySiteDescr& milit = > - ref_cast<MilitarySiteDescr const, BuildingDescr > const>(bld); > - for (const std::pair<unsigned char, unsigned char>& > temp_buildcosts : milit.buildcost()) { > + upcast(MilitarySiteDescr const, milit, &bld); > + for (const std::pair<unsigned char, unsigned char>& > temp_buildcosts : milit->buildcost()) { > // bellow are non-critical wares > if (tribe_->ware_index("log") == > temp_buildcosts.first || > tribe_->ware_index("blackwood") == > temp_buildcosts.first || > @@ -3007,8 +3005,9 @@ > BuildingObserver& bo = get_building_observer(b.descr().name().c_str()); > > if (bo.type == BuildingObserver::CONSTRUCTIONSITE) { > + upcast(ConstructionSite const, constructionsite, &b); > BuildingObserver& target_bo = > - get_building_observer(ref_cast<ConstructionSite, > Building>(b).building().name().c_str()); > + > get_building_observer(constructionsite->building().name().c_str()); > ++target_bo.cnt_under_construction_; > ++num_constructionsites_; > if (target_bo.type == BuildingObserver::PRODUCTIONSITE) { > @@ -3024,8 +3023,9 @@ > ++bo.cnt_built_; > > if (bo.type == BuildingObserver::PRODUCTIONSITE) { > + upcast(ProductionSite, productionsite, &b); > productionsites.push_back(ProductionSiteObserver()); > - productionsites.back().site = &ref_cast<ProductionSite, > Building>(b); > + productionsites.back().site = productionsite; > productionsites.back().bo = &bo; > productionsites.back().built_time_ = > game().get_gametime(); > productionsites.back().unoccupied_till_ = > game().get_gametime(); > @@ -3038,8 +3038,9 @@ > for (uint32_t i = 0; i < bo.inputs_.size(); ++i) > ++wares.at(bo.inputs_.at(i)).consumers_; > } else if (bo.type == BuildingObserver::MINE) { > + upcast(ProductionSite, productionsite, &b); > mines_.push_back(ProductionSiteObserver()); > - mines_.back().site = &ref_cast<ProductionSite, > Building>(b); > + mines_.back().site = productionsite; > mines_.back().bo = &bo; > mines_.back().built_time_ = game().get_gametime(); > > @@ -3049,8 +3050,9 @@ > for (uint32_t i = 0; i < bo.inputs_.size(); ++i) > ++wares.at(bo.inputs_.at(i)).consumers_; > } else if (bo.type == BuildingObserver::MILITARYSITE) { > + upcast(MilitarySite, militarysite, &b); > militarysites.push_back(MilitarySiteObserver()); > - militarysites.back().site = &ref_cast<MilitarySite, > Building>(b); > + militarysites.back().site = militarysite; > militarysites.back().bo = &bo; > militarysites.back().checks = bo.desc->get_size(); > militarysites.back().enemies_nearby_ = true; > @@ -3066,8 +3068,9 @@ > BuildingObserver& bo = get_building_observer(b.descr().name().c_str()); > > if (bo.type == BuildingObserver::CONSTRUCTIONSITE) { > - BuildingObserver& target_bo = get_building_observer( > - ref_cast<ConstructionSite const, Building > const>(b).building().name().c_str()); > + upcast(ConstructionSite const, constructionsite, &b); > + BuildingObserver& target_bo = > + > get_building_observer(constructionsite->building().name().c_str()); > --target_bo.cnt_under_construction_; > --num_constructionsites_; > if (target_bo.type == BuildingObserver::PRODUCTIONSITE) { > > === modified file 'src/base/CMakeLists.txt' > --- src/base/CMakeLists.txt 2014-11-26 09:36:46 +0000 > +++ src/base/CMakeLists.txt 2014-11-29 08:14:12 +0000 > @@ -45,13 +45,6 @@ > base_macros > ) > > -# TODO(sirver): this library should be deleted. > -wl_library(base_deprecated > - SRCS > - deprecated.h > - deprecated.cc > - DEPENDS > -) > > wl_library(base_scoped_timer > SRCS > > === removed file 'src/base/deprecated.cc' > --- src/base/deprecated.cc 2014-07-05 12:17:03 +0000 > +++ src/base/deprecated.cc 1970-01-01 00:00:00 +0000 > @@ -1,20 +0,0 @@ > -/* > - * Copyright (C) 2006-2014 by the Widelands Development Team > - * > - * This program is free software; you can redistribute it and/or > - * modify it under the terms of the GNU General Public License > - * as published by the Free Software Foundation; either version 2 > - * of the License, or (at your option) any later version. > - * > - * This program is distributed in the hope that it will be useful, > - * but WITHOUT ANY WARRANTY; without even the implied warranty of > - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > - * GNU General Public License for more details. > - * > - * You should have received a copy of the GNU General Public License > - * along with this program; if not, write to the Free Software > - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. > - * > - */ > - > -// Dummy file as cmake cannot handle header only libraries :(. > > === removed file 'src/base/deprecated.h' > --- src/base/deprecated.h 2014-07-25 19:15:23 +0000 > +++ src/base/deprecated.h 1970-01-01 00:00:00 +0000 > @@ -1,35 +0,0 @@ > -/* > - * Copyright (C) 2006-2014 by the Widelands Development Team > - * > - * This program is free software; you can redistribute it and/or > - * modify it under the terms of the GNU General Public License > - * as published by the Free Software Foundation; either version 2 > - * of the License, or (at your option) any later version. > - * > - * This program is distributed in the hope that it will be useful, > - * but WITHOUT ANY WARRANTY; without even the implied warranty of > - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > - * GNU General Public License for more details. > - * > - * You should have received a copy of the GNU General Public License > - * along with this program; if not, write to the Free Software > - * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. > - * > - */ > - > -#ifndef WL_BASE_DEPRECATED_H > -#define WL_BASE_DEPRECATED_H > - > -// Code that is still used all over the place, but should not be used > anymore. > - > -#include <cassert> > - > -// DEPRECATED: leads to unsafe code. Instead use upcast() or is_a() to check > at > -// runtime for the type you are expecting. > -template<typename Derived, typename Base> Derived & ref_cast(Base & base) { > - assert(dynamic_cast<Derived *>(&base) == static_cast<Derived *>(&base)); > - return static_cast<Derived &>(base); > -} > - > - > -#endif // end of include guard: WL_BASE_DEPRECATED_H > > === modified file 'src/economy/CMakeLists.txt' > --- src/economy/CMakeLists.txt 2014-07-05 12:17:03 +0000 > +++ src/economy/CMakeLists.txt 2014-11-29 08:14:12 +0000 > @@ -41,7 +41,6 @@ > wares_queue.cc > wares_queue.h > DEPENDS > - base_deprecated > base_exceptions > base_log > base_macros > > === modified file 'src/economy/economy.cc' > --- src/economy/economy.cc 2014-09-20 09:37:47 +0000 > +++ src/economy/economy.cc 2014-11-29 08:14:12 +0000 > @@ -1034,19 +1034,17 @@ > */ > void Economy::balance(uint32_t const timerid) > { > - if (m_request_timerid != timerid) > + if (m_request_timerid != timerid) { > return; > + } > ++m_request_timerid; > > - Game & game = ref_cast<Game, EditorGameBase>(owner().egbase()); > + upcast(Game, game, &owner().egbase()); When you are already sure about yuor object as in this case, just use a dynamic_cast<Game&>(egbase) directly. > > _check_splits(); > - > - _create_requested_workers (game); > - > - _balance_requestsupply(game); > - > - _handle_active_supplies(game); > + _create_requested_workers(*game); > + _balance_requestsupply(*game); > + _handle_active_supplies(*game); > } > > } > > === modified file 'src/economy/flag.cc' > --- src/economy/flag.cc 2014-09-10 10:18:46 +0000 > +++ src/economy/flag.cc 2014-11-29 08:14:12 +0000 > @@ -19,7 +19,6 @@ > > #include "economy/flag.h" > > -#include "base/deprecated.h" > #include "base/macros.h" > #include "base/wexception.h" > #include "economy/economy.h" > @@ -640,15 +639,16 @@ > } > > // Deal with the normal (flag) case > - ref_cast<Flag const, PlayerImmovable const>(*nextstep); > + upcast(Flag const, nextflag, nextstep); > > for (int32_t dir = 1; dir <= 6; ++dir) { > Road * const road = get_road(dir); > Flag * other; > Road::FlagId flagid; > > - if (!road) > + if (!road) { > continue; > + } > > if (&road->get_flag(Road::FlagStart) == this) { > flagid = Road::FlagStart; > @@ -658,12 +658,14 @@ > other = &road->get_flag(Road::FlagStart); > } > > - if (other != nextstep) > + if (other != nextflag) { > continue; > + } > > // Yes, this is the road we want; inform it > - if (road->notify_ware(game, flagid)) > + if (road->notify_ware(game, flagid)) { > return; > + } > > // If the road doesn't react to the ware immediately, we try > other roads: > // They might lead to the same flag! > @@ -791,24 +793,24 @@ > Worker * const w, > PlayerImmovable & target) > { > - Flag & flag = ref_cast<Flag, PlayerImmovable>(target); > + upcast(Flag, flag, &target); > > assert(w); > > - for (FlagJobs::iterator flag_iter = flag.m_flag_jobs.begin(); > - flag_iter != flag.m_flag_jobs.end(); > + for (FlagJobs::iterator flag_iter = flag->m_flag_jobs.begin(); > + flag_iter != flag->m_flag_jobs.end(); > ++flag_iter) { > if (flag_iter->request == &rq) { > delete &rq; > > w->start_task_program(game, flag_iter->program); > > - flag.m_flag_jobs.erase(flag_iter); > + flag->m_flag_jobs.erase(flag_iter); > return; > } > } > > - flag.molog("BUG: flag_job_request_callback: worker not found in > list\n"); > + flag->molog("BUG: flag_job_request_callback: worker not found in > list\n"); > } > > void Flag::log_general_info(const Widelands::EditorGameBase & egbase) > > === modified file 'src/economy/fleet.cc' > --- src/economy/fleet.cc 2014-09-20 09:37:47 +0000 > +++ src/economy/fleet.cc 2014-11-29 08:14:12 +0000 > @@ -21,7 +21,6 @@ > > #include <memory> > > -#include "base/deprecated.h" > #include "base/macros.h" > #include "economy/economy.h" > #include "economy/flag.h" > > === modified file 'src/economy/portdock.cc' > --- src/economy/portdock.cc 2014-09-20 09:37:47 +0000 > +++ src/economy/portdock.cc 2014-11-29 08:14:12 +0000 > @@ -21,8 +21,8 @@ > > #include <memory> > > -#include "base/deprecated.h" > #include "base/log.h" > +#include "base/macros.h" > #include "economy/fleet.h" > #include "economy/ware_instance.h" > #include "economy/wares_queue.h" > > === modified file 'src/economy/road.cc' > --- src/economy/road.cc 2014-09-19 12:54:54 +0000 > +++ src/economy/road.cc 2014-11-29 08:14:12 +0000 > @@ -382,15 +382,14 @@ > { > assert(w); > > - Road & road = ref_cast<Road, PlayerImmovable>(target); > + upcast(Road, road, &target); > + upcast(Carrier, carrier, w); > > - for (CarrierSlot& slot : road.m_carrier_slots) { > + for (CarrierSlot& slot : road->m_carrier_slots) { > if (slot.carrier_request == &rq) { > - Carrier & carrier = ref_cast<Carrier, Worker> (*w); > slot.carrier_request = nullptr; > - slot.carrier = &carrier; > - > - carrier.start_task_road(game); > + slot.carrier = carrier; > + carrier->start_task_road(game); > delete &rq; > return; > } > @@ -402,7 +401,7 @@ > */ > log > ("Road(%u): got a request_callback but do not have the > request\n", > - road.serial()); > + road->serial()); > delete &rq; > w->start_task_gowarehouse(game); > } > > === modified file 'src/economy/routeastar.h' > --- src/economy/routeastar.h 2014-09-14 11:31:58 +0000 > +++ src/economy/routeastar.h 2014-11-29 08:14:12 +0000 > @@ -20,7 +20,6 @@ > #ifndef WL_ECONOMY_ROUTEASTAR_H > #define WL_ECONOMY_ROUTEASTAR_H > > -#include "base/deprecated.h" > #include "economy/itransport_cost_calculator.h" > #include "economy/routing_node.h" > > > === modified file 'src/economy/supply_list.cc' > --- src/economy/supply_list.cc 2014-07-25 16:37:06 +0000 > +++ src/economy/supply_list.cc 2014-11-29 08:14:12 +0000 > @@ -19,7 +19,6 @@ > > #include "economy/supply_list.h" > > -#include "base/deprecated.h" > #include "base/wexception.h" > #include "economy/request.h" > #include "economy/supply.h" > > === modified file 'src/economy/test/CMakeLists.txt' > --- src/economy/test/CMakeLists.txt 2014-10-28 21:14:24 +0000 > +++ src/economy/test/CMakeLists.txt 2014-11-29 08:14:12 +0000 > @@ -4,7 +4,6 @@ > test_road.cc > test_routing.cc > DEPENDS > - base_deprecated > economy > io_filesystem > logic > > === modified file 'src/economy/test/test_routing.cc' > --- src/economy/test/test_routing.cc 2014-10-28 21:14:24 +0000 > +++ src/economy/test/test_routing.cc 2014-11-29 08:14:12 +0000 > @@ -22,7 +22,6 @@ > #include <boost/bind.hpp> > #include <boost/test/unit_test.hpp> > > -#include "base/deprecated.h" > #include "economy/flag.h" > #include "economy/iroute.h" > #include "economy/itransport_cost_calculator.h" > > === modified file 'src/economy/ware_instance.cc' > --- src/economy/ware_instance.cc 2014-09-20 09:37:47 +0000 > +++ src/economy/ware_instance.cc 2014-11-29 08:14:12 +0000 > @@ -560,8 +560,8 @@ > m_location = fr.unsigned_32(); > m_transfer_nextstep = fr.unsigned_32(); > if (fr.unsigned_8()) { > - ware.m_transfer = > - new Transfer(ref_cast<Game, EditorGameBase>(egbase()), > ware); > + upcast(Game, game, &egbase()); > + ware.m_transfer = new Transfer(*game, ware); > ware.m_transfer->read(fr, m_transfer); > } > } > > === modified file 'src/economy/wares_queue.cc' > --- src/economy/wares_queue.cc 2014-09-20 09:37:47 +0000 > +++ src/economy/wares_queue.cc 2014-11-29 08:14:12 +0000 > @@ -130,8 +130,8 @@ > #endif > PlayerImmovable & target) > { > - WaresQueue & wq = > - ref_cast<Building, PlayerImmovable>(target).waresqueue(ware); > + upcast(Building, building, &target); > + WaresQueue & wq = building->waresqueue(ware); > > assert(!w); // WaresQueue can't hold workers > assert(wq.m_filled < wq.m_max_size); > > === modified file 'src/editor/editorinteractive.cc' > --- src/editor/editorinteractive.cc 2014-11-23 14:34:38 +0000 > +++ src/editor/editorinteractive.cc 2014-11-29 08:14:12 +0000 > @@ -336,12 +336,15 @@ > } > > void EditorInteractive::set_sel_radius_and_update_menu(uint32_t const val) { > - if (tools.current().has_size_one()) > + if (tools.current().has_size_one()) { > return; > - if (UI::UniqueWindow * const w = m_toolsizemenu.window) > - ref_cast<EditorToolsizeMenu, UI::UniqueWindow>(*w).update(val); > - else > + } > + if (UI::UniqueWindow * const w = m_toolsizemenu.window) { > + upcast(EditorToolsizeMenu, tool_size_menu, w); > + tool_size_menu->update(val); > + } else { > set_sel_radius(val); > + } > } > > > > === modified file 'src/editor/ui_menus/editor_main_menu.cc' > --- src/editor/ui_menus/editor_main_menu.cc 2014-09-10 14:08:25 +0000 > +++ src/editor/ui_menus/editor_main_menu.cc 2014-11-29 08:14:12 +0000 > @@ -37,7 +37,8 @@ > #define vspacing 15 > > inline EditorInteractive & EditorMainMenu::eia() { > - return ref_cast<EditorInteractive, UI::Panel>(*get_parent()); > + upcast(EditorInteractive, result, get_parent()); > + return *result; > } > > /** > > === modified file 'src/editor/ui_menus/editor_main_menu_load_map.cc' > --- src/editor/ui_menus/editor_main_menu_load_map.cc 2014-10-28 14:57:52 > +0000 > +++ src/editor/ui_menus/editor_main_menu_load_map.cc 2014-11-29 08:14:12 > +0000 > @@ -146,7 +146,8 @@ > m_mapfiles.clear(); > fill_list(); > } else { > - ref_cast<EditorInteractive, > UI::Panel>(*get_parent()).load(filename); > + upcast(EditorInteractive, eia, get_parent()); > + eia->load(filename); > die(); > } > } > > === modified file 'src/editor/ui_menus/editor_main_menu_map_options.cc' > --- src/editor/ui_menus/editor_main_menu_map_options.cc 2014-10-28 > 08:16:53 +0000 > +++ src/editor/ui_menus/editor_main_menu_map_options.cc 2014-11-29 > 08:14:12 +0000 > @@ -36,7 +36,8 @@ > > > inline EditorInteractive & MainMenuMapOptions::eia() { > - return ref_cast<EditorInteractive, UI::Panel>(*get_parent()); > + upcast(EditorInteractive, result, get_parent()); > + return *result; > } > > > > === modified file 'src/editor/ui_menus/editor_main_menu_new_map.cc' > --- src/editor/ui_menus/editor_main_menu_new_map.cc 2014-11-13 08:25:45 > +0000 > +++ src/editor/ui_menus/editor_main_menu_new_map.cc 2014-11-29 08:14:12 > +0000 > @@ -133,9 +133,8 @@ > } > > void MainMenuNewMap::clicked_create_map() { > - EditorInteractive & eia = > - ref_cast<EditorInteractive, UI::Panel>(*get_parent()); > - Widelands::EditorGameBase & egbase = eia.egbase(); > + upcast(EditorInteractive, eia, get_parent()); > + Widelands::EditorGameBase & egbase = eia->egbase(); > Widelands::Map & map = egbase.map(); > UI::ProgressWindow loader; > > @@ -152,7 +151,7 @@ > > map.recalc_whole_map(egbase.world()); > > - eia.set_need_save(true); > + eia->set_need_save(true); > > die(); > } > > === modified file 'src/editor/ui_menus/editor_main_menu_random_map.cc' > --- src/editor/ui_menus/editor_main_menu_random_map.cc 2014-11-13 > 08:25:45 +0000 > +++ src/editor/ui_menus/editor_main_menu_random_map.cc 2014-11-29 > 08:14:12 +0000 > @@ -483,9 +483,8 @@ > } > > void MainMenuNewRandomMap::clicked_create_map() { > - EditorInteractive & eia = > - ref_cast<EditorInteractive, UI::Panel>(*get_parent()); > - Widelands::EditorGameBase & egbase = eia.egbase(); > + upcast(EditorInteractive, eia, get_parent()); > + Widelands::EditorGameBase & egbase = eia->egbase(); > Widelands::Map & map = egbase.map(); > UI::ProgressWindow loader; > > @@ -518,8 +517,8 @@ > > map.recalc_whole_map(egbase.world()); > > - eia.set_need_save(true); > - eia.register_overlays(); > + eia->set_need_save(true); > + eia->register_overlays(); > > die(); > } > > === modified file 'src/editor/ui_menus/editor_main_menu_save_map.cc' > --- src/editor/ui_menus/editor_main_menu_save_map.cc 2014-10-28 14:57:52 > +0000 > +++ src/editor/ui_menus/editor_main_menu_save_map.cc 2014-11-29 08:14:12 > +0000 > @@ -46,7 +46,8 @@ > #include "ui_basic/textarea.h" > > inline EditorInteractive & MainMenuSaveMap::eia() { > - return ref_cast<EditorInteractive, UI::Panel>(*get_parent()); > + upcast(EditorInteractive, result, get_parent()); > + return *result; > } > > > > === modified file 'src/editor/ui_menus/editor_player_menu.cc' > --- src/editor/ui_menus/editor_player_menu.cc 2014-11-22 10:18:20 +0000 > +++ src/editor/ui_menus/editor_player_menu.cc 2014-11-29 08:14:12 +0000 > @@ -38,6 +38,11 @@ > > #define UNDEFINED_TRIBE_NAME "<undefined>" > > +inline EditorInteractive & EditorPlayerMenu::eia() { > + upcast(EditorInteractive, result, get_parent()); > + return *result; > +} > + > EditorPlayerMenu::EditorPlayerMenu > (EditorInteractive & parent, UI::UniqueWindow::Registry & registry) > : > @@ -108,9 +113,7 @@ > if (is_minimal()) > return; > > - Widelands::Map & map = > - ref_cast<EditorInteractive const, UI::Panel > const>(*get_parent()) > - .egbase().map(); > + Widelands::Map & map = eia().egbase().map(); > Widelands::PlayerNumber const nr_players = map.get_nrplayers(); > { > assert(nr_players <= 99); // 2 decimal digits > @@ -194,9 +197,7 @@ > } > > void EditorPlayerMenu::clicked_add_player() { > - EditorInteractive & menu = > - ref_cast<EditorInteractive, UI::Panel>(*get_parent()); > - Widelands::Map & map = menu.egbase().map(); > + Widelands::Map & map = eia().egbase().map(); > Widelands::PlayerNumber const nr_players = map.get_nrplayers() + 1; > assert(nr_players <= MAX_PLAYERS); > map.set_nrplayers(nr_players); > @@ -211,7 +212,7 @@ > map.set_scenario_player_name(nr_players, name); > } > map.set_scenario_player_tribe(nr_players, m_tribes[0]); > - menu.set_need_save(true); > + eia().set_need_save(true); > m_add_player .set_enabled(nr_players < MAX_PLAYERS); > m_remove_last_player.set_enabled(true); > update(); > @@ -219,14 +220,12 @@ > > > void EditorPlayerMenu::clicked_remove_last_player() { > - EditorInteractive & menu = > - ref_cast<EditorInteractive, UI::Panel>(*get_parent()); > - Widelands::Map & map = menu.egbase().map(); > + Widelands::Map & map = eia().egbase().map(); > Widelands::PlayerNumber const old_nr_players = map.get_nrplayers(); > Widelands::PlayerNumber const nr_players = old_nr_players - 1; > assert(1 <= nr_players); > > - if (!menu.is_player_tribe_referenced(old_nr_players)) { > + if (!eia().is_player_tribe_referenced(old_nr_players)) { > if (const Widelands::Coords sp = > map.get_starting_pos(old_nr_players)) { > // Remove starting position marker. > char picsname[] = > "pics/editor_player_00_starting_pos.png"; > @@ -306,9 +305,8 @@ > * Player Tribe Button clicked > */ > void EditorPlayerMenu::player_tribe_clicked(uint8_t n) { > - EditorInteractive & menu = > - ref_cast<EditorInteractive, UI::Panel>(*get_parent()); > - if (!menu.is_player_tribe_referenced(n + 1)) { > + EditorInteractive& menu = eia(); > + if (!menu.is_player_tribe_referenced(n + 1)) { > std::string t = m_plr_set_tribes_buts[n]->get_title(); > if (!Widelands::TribeDescr::exists_tribe(t)) > throw wexception > @@ -338,8 +336,7 @@ > * Set Current Start Position button selected > */ > void EditorPlayerMenu::set_starting_pos_clicked(uint8_t n) { > - EditorInteractive & menu = > - ref_cast<EditorInteractive, UI::Panel>(*get_parent()); > + EditorInteractive& menu = eia(); > // jump to the current node > Widelands::Map & map = menu.egbase().map(); > if (Widelands::Coords const sp = map.get_starting_pos(n)) > @@ -366,8 +363,7 @@ > void EditorPlayerMenu::name_changed(int32_t m) { > // Player name has been changed. > std::string text = m_plr_names[m]->text(); > - EditorInteractive & menu = > - ref_cast<EditorInteractive, UI::Panel>(*get_parent()); > + EditorInteractive& menu = eia(); > Widelands::Map & map = menu.egbase().map(); > if (text == "") { > text = map.get_scenario_player_name(m + 1); > > === modified file 'src/editor/ui_menus/editor_player_menu.h' > --- src/editor/ui_menus/editor_player_menu.h 2014-09-10 14:08:25 +0000 > +++ src/editor/ui_menus/editor_player_menu.h 2014-11-29 08:14:12 +0000 > @@ -44,6 +44,7 @@ > virtual ~EditorPlayerMenu() {} > > private: > + EditorInteractive & eia(); > UI::UniqueWindow::Registry m_allow_buildings_menu; > UI::Textarea * m_nr_of_players_ta; > UI::EditBox * m_plr_names[MAX_PLAYERS]; > > === modified file > 'src/editor/ui_menus/editor_tool_change_resources_options_menu.cc' > --- src/editor/ui_menus/editor_tool_change_resources_options_menu.cc > 2014-09-30 05:41:55 +0000 > +++ src/editor/ui_menus/editor_tool_change_resources_options_menu.cc > 2014-11-29 08:14:12 +0000 > @@ -37,6 +37,12 @@ > const static int BUTTON_WIDTH = 20; > const static int BUTTON_HEIGHT = 20; > > +inline EditorInteractive & EditorToolChangeResourcesOptionsMenu::eia() { > + upcast(EditorInteractive, result, get_parent()); > + return *result; > +} > + > + > EditorToolChangeResourcesOptionsMenu:: > EditorToolChangeResourcesOptionsMenu > (EditorInteractive & parent, > @@ -213,7 +219,7 @@ > m_increase_tool.set_cur_res(n); > m_increase_tool.decrease_tool().set_cur_res(n); > > - Widelands::EditorGameBase& egbase = ref_cast<EditorInteractive, > UI::Panel>(*get_parent()).egbase(); > + Widelands::EditorGameBase& egbase = eia().egbase(); > Widelands::Map & map = egbase.map(); > map.overlay_manager().register_overlay_callback_function( > boost::bind(&editor_change_resource_tool_callback, _1, > boost::ref(map), boost::ref(egbase.world()), n)); > @@ -234,8 +240,7 @@ > > static_cast<unsigned int>(m_increase_tool.set_tool().get_set_to()))); > > m_cur_selection.set_text > - (ref_cast<EditorInteractive, UI::Panel>(*get_parent()).egbase() > - > .world().get_resource(m_increase_tool.set_tool().get_cur_res())->descname()); > + > (eia().egbase().world().get_resource(m_increase_tool.set_tool().get_cur_res())->descname()); > m_cur_selection.set_pos > (Point > ((get_inner_w() - m_cur_selection.get_w()) / 2, > get_inner_h() - 20)); > > === modified file > 'src/editor/ui_menus/editor_tool_change_resources_options_menu.h' > --- src/editor/ui_menus/editor_tool_change_resources_options_menu.h > 2014-09-10 14:08:25 +0000 > +++ src/editor/ui_menus/editor_tool_change_resources_options_menu.h > 2014-11-29 08:14:12 +0000 > @@ -37,6 +37,7 @@ > UI::UniqueWindow::Registry &); > > private: > + EditorInteractive & eia(); > void selected(); > enum Button { > Change_By_Increase, Change_By_Decrease, > > === modified file 'src/editor/ui_menus/editor_tool_menu.cc' > --- src/editor/ui_menus/editor_tool_menu.cc 2014-09-20 09:37:47 +0000 > +++ src/editor/ui_menus/editor_tool_menu.cc 2014-11-29 08:14:12 +0000 > @@ -98,38 +98,37 @@ > void EditorToolMenu::changed_to() { > const int32_t n = m_radioselect.get_state(); > > - EditorInteractive & parent = > - ref_cast<EditorInteractive, UI::Panel>(*get_parent()); > + upcast(EditorInteractive, eia, get_parent()); > > EditorTool * current_tool_pointer = nullptr; > UI::UniqueWindow::Registry * current_registry_pointer = nullptr; > switch (n) { > case 0: > - current_tool_pointer = &parent.tools.increase_height; > - current_registry_pointer = &parent.m_heightmenu; > + current_tool_pointer = &eia->tools.increase_height; > + current_registry_pointer = &eia->m_heightmenu; > break; > case 1: > - current_tool_pointer = &parent.tools.noise_height; > - current_registry_pointer = &parent.m_noise_heightmenu; > + current_tool_pointer = &eia->tools.noise_height; > + current_registry_pointer = &eia->m_noise_heightmenu; > break; > case 2: > - current_tool_pointer = &parent.tools.set_terrain; > - current_registry_pointer = &parent.m_terrainmenu; > + current_tool_pointer = &eia->tools.set_terrain; > + current_registry_pointer = &eia->m_terrainmenu; > break; > case 3: > - current_tool_pointer = &parent.tools.place_immovable; > - current_registry_pointer = &parent.m_immovablemenu; > + current_tool_pointer = &eia->tools.place_immovable; > + current_registry_pointer = &eia->m_immovablemenu; > break; > case 4: > - current_tool_pointer = &parent.tools.place_bob; > - current_registry_pointer = &parent.m_bobmenu; > + current_tool_pointer = &eia->tools.place_bob; > + current_registry_pointer = &eia->m_bobmenu; > break; > case 5: > - current_tool_pointer = &parent.tools.increase_resources; > - current_registry_pointer = &parent.m_resourcesmenu; > + current_tool_pointer = &eia->tools.increase_resources; > + current_registry_pointer = &eia->m_resourcesmenu; > break; > case 6: > - current_tool_pointer = &parent.tools.set_port_space; > + current_tool_pointer = &eia->tools.set_port_space; > current_registry_pointer = nullptr; // no need for a window > break; > default: > @@ -137,13 +136,13 @@ > break; > } > > - parent.select_tool(*current_tool_pointer, EditorTool::First); > - if (current_tool_pointer == &parent.tools.set_port_space) { > + eia->select_tool(*current_tool_pointer, EditorTool::First); > + if (current_tool_pointer == &eia->tools.set_port_space) { > // Set correct overlay > - Widelands::Map & map = parent.egbase().map(); > + Widelands::Map & map = eia->egbase().map(); > map.overlay_manager().register_overlay_callback_function( > > boost::bind(&editor_Tool_set_port_space_callback, _1, boost::ref(map))); > - map.recalc_whole_map(parent.egbase().world()); > + map.recalc_whole_map(eia->egbase().world()); > update(); > } > > @@ -158,38 +157,38 @@ > switch (n) { // create window > case 0: > new EditorToolChangeHeightOptionsMenu > - (parent, > - parent.tools.increase_height, > + (*eia, > + eia->tools.increase_height, > *current_registry_pointer); > break; > case 1: > new EditorToolNoiseHeightOptionsMenu > - (parent, > - parent.tools.noise_height, > + (*eia, > + eia->tools.noise_height, > *current_registry_pointer); > break; > case 2: > new EditorToolSetTerrainOptionsMenu > - (parent, > - parent.tools.set_terrain, > + (*eia, > + eia->tools.set_terrain, > *current_registry_pointer); > break; > case 3: > new EditorToolPlaceImmovableOptionsMenu > - (parent, > - parent.tools.place_immovable, > + (*eia, > + eia->tools.place_immovable, > *current_registry_pointer); > break; > case 4: > new EditorToolPlaceBobOptionsMenu > - (parent, > - parent.tools.place_bob, > + (*eia, > + eia->tools.place_bob, > *current_registry_pointer); > break; > case 5: > new EditorToolChangeResourcesOptionsMenu > - (parent, > - parent.tools.increase_resources, > + (*eia, > + eia->tools.increase_resources, > *current_registry_pointer); > break; > default: > > === modified file 'src/editor/ui_menus/editor_tool_options_menu.cc' > --- src/editor/ui_menus/editor_tool_options_menu.cc 2014-09-10 14:08:25 > +0000 > +++ src/editor/ui_menus/editor_tool_options_menu.cc 2014-11-29 08:14:12 > +0000 > @@ -35,6 +35,6 @@ > > > void EditorToolOptionsMenu::select_correct_tool() { > - ref_cast<EditorInteractive, UI::Panel>(*get_parent()) > - .select_tool(*m_current_pointer, EditorTool::First); > + upcast(EditorInteractive, eia, get_parent()); > + eia->select_tool(*m_current_pointer, EditorTool::First); > } > > === modified file 'src/editor/ui_menus/editor_toolsize_menu.cc' > --- src/editor/ui_menus/editor_toolsize_menu.cc 2014-09-18 18:52:34 > +0000 > +++ src/editor/ui_menus/editor_toolsize_menu.cc 2014-11-29 08:14:12 > +0000 > @@ -29,10 +29,10 @@ > #include "graphic/graphic.h" > > inline EditorInteractive & EditorToolsizeMenu::eia() { > - return ref_cast<EditorInteractive, UI::Panel>(*get_parent()); > + upcast(EditorInteractive, result, get_parent()); > + return *result; > } > > - > /** > * Create all the buttons etc... > */ > > === modified file 'src/graphic/CMakeLists.txt' > --- src/graphic/CMakeLists.txt 2014-11-24 07:25:21 +0000 > +++ src/graphic/CMakeLists.txt 2014-11-29 08:14:12 +0000 > @@ -128,7 +128,6 @@ > USES_SDL2_IMAGE > USES_SDL2_TTF > DEPENDS > - base_deprecated > base_exceptions > base_geometry > base_i18n > > === modified file 'src/graphic/animation.cc' > --- src/graphic/animation.cc 2014-11-24 07:10:03 +0000 > +++ src/graphic/animation.cc 2014-11-29 08:14:12 +0000 > @@ -30,7 +30,6 @@ > #include <boost/format.hpp> > #include <boost/lexical_cast.hpp> > > -#include "base/deprecated.h" > #include "base/i18n.h" > #include "base/log.h" > #include "base/macros.h" > > === modified file 'src/graphic/graphic.cc' > --- src/graphic/graphic.cc 2014-11-24 07:10:03 +0000 > +++ src/graphic/graphic.cc 2014-11-29 08:14:12 +0000 > @@ -25,7 +25,6 @@ > > #include <SDL_image.h> > > -#include "base/deprecated.h" > #include "base/i18n.h" > #include "base/log.h" > #include "base/macros.h" > > === modified file 'src/graphic/terrain_texture.cc' > --- src/graphic/terrain_texture.cc 2014-11-24 07:10:03 +0000 > +++ src/graphic/terrain_texture.cc 2014-11-29 08:14:12 +0000 > @@ -21,7 +21,6 @@ > > #include <SDL_image.h> > > -#include "base/deprecated.h" > #include "base/log.h" > #include "base/wexception.h" > #include "graphic/image_io.h" > > === modified file 'src/graphic/text_parser.cc' > --- src/graphic/text_parser.cc 2014-09-10 14:48:40 +0000 > +++ src/graphic/text_parser.cc 2014-11-29 08:14:12 +0000 > @@ -24,7 +24,6 @@ > #include <string> > #include <vector> > > -#include "base/deprecated.h" > #include "base/log.h" > #include "helper.h" > > > === modified file 'src/io/CMakeLists.txt' > --- src/io/CMakeLists.txt 2014-10-13 15:04:50 +0000 > +++ src/io/CMakeLists.txt 2014-11-29 08:14:12 +0000 > @@ -37,7 +37,6 @@ > filesystem/zip_filesystem.cc > filesystem/zip_filesystem.h > DEPENDS > - base_deprecated > base_exceptions > base_log > base_macros > > === modified file 'src/io/filesystem/layered_filesystem.cc' > --- src/io/filesystem/layered_filesystem.cc 2014-09-29 13:30:46 +0000 > +++ src/io/filesystem/layered_filesystem.cc 2014-11-29 08:14:12 +0000 > @@ -22,7 +22,6 @@ > #include <cstdio> > #include <memory> > > -#include "base/deprecated.h" > #include "base/log.h" > #include "base/wexception.h" > #include "io/fileread.h" > > === modified file 'src/logic/CMakeLists.txt' > --- src/logic/CMakeLists.txt 2014-10-13 15:04:50 +0000 > +++ src/logic/CMakeLists.txt 2014-11-29 08:14:12 +0000 > @@ -215,7 +215,6 @@ > USES_SDL2 > DEPENDS > ai > - base_deprecated > base_exceptions > base_geometry > base_i18n > > === modified file 'src/logic/battle.cc' > --- src/logic/battle.cc 2014-09-20 09:37:47 +0000 > +++ src/logic/battle.cc 2014-11-29 08:14:12 +0000 > @@ -83,23 +83,29 @@ > > m_creationtime = egbase.get_gametime(); > > - if (Battle* battle = m_first ->get_battle()) > - battle->cancel(ref_cast<Game, EditorGameBase>(egbase), > *m_first); > - m_first->set_battle(ref_cast<Game, EditorGameBase>(egbase), this); > - if (Battle* battle = m_second->get_battle()) > - battle->cancel(ref_cast<Game, EditorGameBase>(egbase), > *m_second); > - m_second->set_battle(ref_cast<Game, EditorGameBase>(egbase), this); > + upcast(Game, game, &egbase); > + > + if (Battle* battle = m_first ->get_battle()) { > + battle->cancel(*game, *m_first); > + } > + m_first->set_battle(*game, this); > + if (Battle* battle = m_second->get_battle()) { > + battle->cancel(*game, *m_second); > + } > + m_second->set_battle(*game, this); > } > > > void Battle::cleanup (EditorGameBase & egbase) > { > if (m_first) { > - m_first ->set_battle(ref_cast<Game, EditorGameBase>(egbase), > nullptr); > + upcast(Game, game, &egbase); > + m_first ->set_battle(*game, nullptr); > m_first = nullptr; > } > if (m_second) { > - m_second->set_battle(ref_cast<Game, EditorGameBase>(egbase), > nullptr); > + upcast(Game, game, &egbase); > + m_second->set_battle(*game, nullptr); > m_second = nullptr; > } > > > === modified file 'src/logic/bob.cc' > --- src/logic/bob.cc 2014-09-20 09:37:47 +0000 > +++ src/logic/bob.cc 2014-11-29 08:14:12 +0000 > @@ -149,8 +149,10 @@ > */ > void Bob::cleanup(EditorGameBase & egbase) > { > - while (!m_stack.empty()) // bobs in the editor do not have tasks > - do_pop_task(ref_cast<Game, EditorGameBase>(egbase)); > + while (!m_stack.empty()) { // bobs in the editor do not have tasks > + upcast(Game, game, &egbase); > + do_pop_task(*game); > + } > > set_owner(nullptr); // implicitly remove ourselves from owner's map > > > === modified file 'src/logic/building.cc' > --- src/logic/building.cc 2014-11-24 07:25:21 +0000 > +++ src/logic/building.cc 2014-11-29 08:14:12 +0000 > @@ -244,11 +244,11 @@ > BuildingDescr const * const descr = > m_tribe.get_building_descr > (m_tribe.safe_building_index("constructionsite")); > - ConstructionSite & csite = > - ref_cast<ConstructionSite, MapObject>(descr->create_object()); > - csite.set_building(*this); > - > - return csite; > + > + upcast(ConstructionSite, csite, &descr->create_object()); > + csite->set_building(*this); > + > + return *csite; > } > > > @@ -724,25 +724,24 @@ > void Building::draw_help > (const EditorGameBase& game, RenderTarget& dst, const FCoords&, const > Point& pos) > { > - const InteractiveGameBase & igbase = > - ref_cast<InteractiveGameBase const, InteractiveBase const> > - (*game.get_ibase()); > - uint32_t const dpyflags = igbase.get_display_flags(); > + upcast(InteractiveGameBase const, igbase, game.get_ibase()); > + > + uint32_t const dpyflags = igbase->get_display_flags(); > > if (dpyflags & InteractiveBase::dfShowCensus) { > - const std::string info = > info_string(igbase.building_census_format()); > + const std::string info = > info_string(igbase->building_census_format()); > if (!info.empty()) { > dst.blit(pos - Point(0, 48), UI::g_fh1->render(info), > BlendMode::UseAlpha, UI::Align_Center); > } > } > > if (dpyflags & InteractiveBase::dfShowStatistics) { > - if (upcast(InteractivePlayer const, iplayer, &igbase)) > + if (upcast(InteractivePlayer const, iplayer, igbase)) > if > (!iplayer->player().see_all() && > iplayer->player().is_hostile(*get_owner())) > return; > - const std::string info = > info_string(igbase.building_statistics_format()); > + const std::string info = > info_string(igbase->building_statistics_format()); > if (!info.empty()) { > dst.blit(pos - Point(0, 35), UI::g_fh1->render(info), > BlendMode::UseAlpha, UI::Align_Center); > } > > === modified file 'src/logic/carrier.cc' > --- src/logic/carrier.cc 2014-09-20 09:37:47 +0000 > +++ src/logic/carrier.cc 2014-11-29 08:14:12 +0000 > @@ -84,8 +84,6 @@ > return pop_task(game); > } > > - Road & road = ref_cast<Road, PlayerImmovable>(*get_location(game)); > - > // Check for pending wares > if (m_promised_pickup_to == NOONE) > find_pending_ware(game); > @@ -103,12 +101,13 @@ > } > } > > + upcast(Road, road, get_location(game)); > + > // Move into idle position if necessary > - if > - (start_task_movepath > + if (start_task_movepath > (game, > - road.get_path(), > - road.get_idle_index(), > + road->get_path(), > + road->get_idle_index(), > descr().get_right_walk_anims(does_carry_ware()))) > return; > > @@ -127,9 +126,9 @@ > void Carrier::road_pop(Game & game, State & /* state */) > { > if (m_promised_pickup_to != NOONE && get_location(game)) { > - Road & road = ref_cast<Road, > PlayerImmovable>(*get_location(game)); > - Flag & flag = > road.get_flag(static_cast<Road::FlagId>(m_promised_pickup_to)); > - Flag & otherflag = > road.get_flag(static_cast<Road::FlagId>(m_promised_pickup_to ^ 1)); > + upcast(Road, road, get_location(game)); > + Flag & flag = > road->get_flag(static_cast<Road::FlagId>(m_promised_pickup_to)); > + Flag & otherflag = > road->get_flag(static_cast<Road::FlagId>(m_promised_pickup_to ^ 1)); > > flag.cancel_pickup(game, otherflag); > } > @@ -176,8 +175,6 @@ > return pop_task(game); > } > > - Road & road = ref_cast<Road, PlayerImmovable>(*get_location(game)); > - > if (state.ivar1 == -1) > // If we're "in" the target building, special code applies > deliver_to_building(game, state); > @@ -187,9 +184,10 @@ > pickup_from_flag(game, state); > > else { > + upcast(Road, road, get_location(game)); > // If the ware should go to the building attached to our flag, > walk > // directly into said building > - Flag & flag = > road.get_flag(static_cast<Road::FlagId>(state.ivar1 ^ 1)); > + Flag & flag = > road->get_flag(static_cast<Road::FlagId>(state.ivar1 ^ 1)); > > WareInstance & ware = *get_carried_ware(game); > assert(ware.get_location(game) == this); > @@ -240,10 +238,11 @@ > molog > ("[Carrier]: Building switch from under > us, return to road.\n"); > > + upcast(Road, road, get_location(game)); > state.ivar1 = > &building->base_flag() > == > - &ref_cast<Road, > PlayerImmovable>(*get_location(game)).get_flag > + &road->get_flag > (static_cast<Road::FlagId>(0)); > break; > } > @@ -277,9 +276,9 @@ > > m_promised_pickup_to = NOONE; > > - Road & road = ref_cast<Road, > PlayerImmovable>(*get_location(game)); > - Flag & flag = > road.get_flag(static_cast<Road::FlagId>(ivar1)); > - Flag & otherflag = > road.get_flag(static_cast<Road::FlagId>(ivar1 ^ 1)); > + upcast(Road, road, get_location(game)); > + Flag & flag = > road->get_flag(static_cast<Road::FlagId>(ivar1)); > + Flag & otherflag = > road->get_flag(static_cast<Road::FlagId>(ivar1 ^ 1)); > > // Are there wares to move between our flags? > if (WareInstance * const ware = flag.fetch_pending_ware(game, > otherflag)) > @@ -305,15 +304,15 @@ > void Carrier::drop_ware(Game & game, State & state) > { > WareInstance * other = nullptr; > - Road & road = ref_cast<Road, PlayerImmovable>(*get_location(game)); > - Flag & flag = road.get_flag(static_cast<Road::FlagId>(state.ivar1 ^ 1)); > + upcast(Road, road, get_location(game)); > + Flag & flag = road->get_flag(static_cast<Road::FlagId>(state.ivar1 ^ > 1)); > > if (m_promised_pickup_to == (state.ivar1 ^ 1)) { > // If there's an ware we acked, we can drop ours even if the > flag is > // flooded > other = > flag.fetch_pending_ware > - (game, > road.get_flag(static_cast<Road::FlagId>(state.ivar1))); > + (game, > road->get_flag(static_cast<Road::FlagId>(state.ivar1))); > > if (!other && !flag.has_capacity()) { > molog > @@ -376,11 +375,11 @@ > bool Carrier::swap_or_wait(Game & game, State & state) > { > // Road that employs us > - Road & road = ref_cast<Road, PlayerImmovable>(*get_location(game)); > + upcast(Road, road, get_location(game)); > // Flag we are delivering to > - Flag & flag = road.get_flag(static_cast<Road::FlagId>(state.ivar1 ^ 1)); > + Flag & flag = road->get_flag(static_cast<Road::FlagId>(state.ivar1 ^ > 1)); > // The other flag of our road > - Flag & otherflag = > road.get_flag(static_cast<Road::FlagId>(state.ivar1)); > + Flag & otherflag = > road->get_flag(static_cast<Road::FlagId>(state.ivar1)); > > > if (m_promised_pickup_to == (state.ivar1 ^ 1)) { > @@ -456,32 +455,33 @@ > */ > void Carrier::find_pending_ware(Game & game) > { > - Road & road = ref_cast<Road, PlayerImmovable>(*get_location(game)); > + upcast(Road, road, get_location(game)); > uint32_t havewarebits = 0; > > assert(m_promised_pickup_to == NOONE); > > - if > - (road.get_flag(Road::FlagStart).has_pending_ware > - (game, road.get_flag(Road::FlagEnd))) > + if (road->get_flag(Road::FlagStart).has_pending_ware > + (game, road->get_flag(Road::FlagEnd))) { > havewarebits |= 1; > + } > > - if > - (road.get_flag(Road::FlagEnd).has_pending_ware > - (game, road.get_flag(Road::FlagStart))) > + if (road->get_flag(Road::FlagEnd).has_pending_ware > + (game, road->get_flag(Road::FlagStart))) { > havewarebits |= 2; > + } > > // If both flags have an ware, we pick the one closer to us. > - if (havewarebits == 3) > + if (havewarebits == 3) { > havewarebits = 1 << find_closest_flag(game); > + } > > // Ack our decision > if (havewarebits == 1) { > m_promised_pickup_to = START_FLAG; > if > (! > - road.get_flag(Road::FlagStart).ack_pickup > - (game, road.get_flag(Road::FlagEnd))) > + road->get_flag(Road::FlagStart).ack_pickup > + (game, road->get_flag(Road::FlagEnd))) > throw wexception > ("Carrier::find_pending_ware: start flag is > messed up"); > > @@ -489,8 +489,8 @@ > m_promised_pickup_to = END_FLAG; > if > (! > - road.get_flag(Road::FlagEnd).ack_pickup > - (game, road.get_flag(Road::FlagStart))) > + road->get_flag(Road::FlagEnd).ack_pickup > + (game, road->get_flag(Road::FlagStart))) > throw wexception("Carrier::find_pending_ware: end flag > is messed up"); > } > } > @@ -502,8 +502,8 @@ > int32_t Carrier::find_closest_flag(Game & game) > { > Map & map = game.map(); > - CoordPath startpath > - (map, ref_cast<Road, > PlayerImmovable>(*get_location(game)).get_path()); > + upcast(Road, road, get_location(game)); > + CoordPath startpath(map, road->get_path()); > > CoordPath endpath; > int32_t startcost, endcost; > @@ -550,8 +550,8 @@ > bool Carrier::start_task_walktoflag > (Game & game, int32_t const flag, bool const offset) > { > - const Path & path = > - ref_cast<Road, PlayerImmovable>(*get_location(game)).get_path(); > + upcast(Road, road, get_location(game)); > + const Path & path = road->get_path(); > int32_t idx; > > if (!flag) { > > === modified file 'src/logic/constructionsite.cc' > --- src/logic/constructionsite.cc 2014-09-10 17:52:49 +0000 > +++ src/logic/constructionsite.cc 2014-11-29 08:14:12 +0000 > @@ -172,16 +172,16 @@ > Building & b = > m_building->create(egbase, owner(), m_position, false, > false, m_old_buildings); > if (Worker * const builder = m_builder.get(egbase)) { > - builder->reset_tasks(ref_cast<Game, > EditorGameBase>(egbase)); > + upcast(Game, game, &egbase); > + builder->reset_tasks(*game); > builder->set_location(&b); > } > // Open the new building window if needed > if (m_optionswindow) { > Point window_position = m_optionswindow->get_pos(); > hide_options(); > - InteractiveGameBase & igbase = > - ref_cast<InteractiveGameBase, > InteractiveBase>(*egbase.get_ibase()); > - b.show_options(igbase, false, window_position); > + upcast(InteractiveGameBase, igbase, egbase.get_ibase()); > + b.show_options(*igbase, false, window_position); > } > } > } > > === modified file 'src/logic/critter.cc' > --- src/logic/critter.cc 2014-10-27 10:14:10 +0000 > +++ src/logic/critter.cc 2014-11-29 08:14:12 +0000 > @@ -301,14 +301,12 @@ > } > > for (;;) { > - const CritterProgram & program = > - ref_cast<CritterProgram const, BobProgramBase const> > - (*state.program); > + upcast(CritterProgram const, program, state.program); > > - if (state.ivar1 >= program.get_size()) > + if (state.ivar1 >= program->get_size()) > return pop_task(game); > > - const CritterAction & action = program[state.ivar1]; > + const CritterAction & action = (*program)[state.ivar1]; > > if ((this->*(action.function))(game, state, action)) > return; > > === modified file 'src/logic/findnode.cc' > --- src/logic/findnode.cc 2014-07-24 16:26:55 +0000 > +++ src/logic/findnode.cc 2014-11-29 08:14:12 +0000 > @@ -19,7 +19,6 @@ > > #include "logic/findnode.h" > > -#include "base/deprecated.h" > #include "base/wexception.h" > #include "logic/field.h" > #include "logic/immovable.h" > > === modified file 'src/logic/immovable.cc' > --- src/logic/immovable.cc 2014-11-24 07:25:21 +0000 > +++ src/logic/immovable.cc 2014-11-29 08:14:12 +0000 > @@ -25,7 +25,6 @@ > #include <boost/algorithm/string.hpp> > #include <boost/format.hpp> > > -#include "base/deprecated.h" > #include "base/macros.h" > #include "base/wexception.h" > #include "config.h" > @@ -619,7 +618,7 @@ > { > BaseImmovable::Loader::load(fr); > > - Immovable & imm = ref_cast<Immovable, MapObject>(*get_object()); > + upcast(Immovable, imm, get_object()); > > if (version >= 5) { > PlayerNumber pn = fr.unsigned_8(); > @@ -627,29 +626,29 @@ > Player * plr = egbase().get_player(pn); > if (!plr) > throw GameDataError("Immovable::load: player %u > does not exist", pn); > - imm.set_owner(plr); > + imm->set_owner(plr); > } > } > > // Position > - imm.m_position = read_coords_32(&fr, egbase().map().extent()); > - imm.set_position(egbase(), imm.m_position); > + imm->m_position = read_coords_32(&fr, egbase().map().extent()); > + imm->set_position(egbase(), imm->m_position); > > // Animation > char const * const animname = fr.c_string(); > try { > - imm.m_anim = imm.descr().get_animation(animname); > + imm->m_anim = imm->descr().get_animation(animname); > } catch (const MapObjectDescr::AnimationNonexistent &) { > - imm.m_anim = imm.descr().main_animation(); > + imm->m_anim = imm->descr().main_animation(); > log > ("Warning: (%s) Animation \"%s\" not found, using > animation %s).\n", > - imm.descr().name().c_str(), animname, > imm.descr().get_animation_name(imm.m_anim).c_str()); > + imm->descr().name().c_str(), animname, > imm->descr().get_animation_name(imm->m_anim).c_str()); > } > - imm.m_animstart = fr.signed_32(); > + imm->m_animstart = fr.signed_32(); > if (version >= 4) { > - imm.m_anim_construction_total = fr.unsigned_32(); > - if (imm.m_anim_construction_total) > - imm.m_anim_construction_done = fr.unsigned_32(); > + imm->m_anim_construction_total = fr.unsigned_32(); > + if (imm->m_anim_construction_total) > + imm->m_anim_construction_done = fr.unsigned_32(); > } > > { // program > @@ -664,14 +663,14 @@ > if (program_name.empty()) > program_name = "program"; > } > - imm.m_program = imm.descr().get_program(program_name); > + imm->m_program = imm->descr().get_program(program_name); > } > - imm.m_program_ptr = fr.unsigned_32(); > + imm->m_program_ptr = fr.unsigned_32(); > > - if (!imm.m_program) { > - imm.m_program_ptr = 0; > + if (!imm->m_program) { > + imm->m_program_ptr = 0; > } else { > - if (imm.m_program_ptr >= imm.m_program->size()) { > + if (imm->m_program_ptr >= imm->m_program->size()) { > // Try to not fail if the program of some immovable has > changed > // significantly. > // Note that in some cases, the immovable may end up > broken despite > @@ -679,20 +678,20 @@ > log > ("Warning: Immovable '%s', size of program '%s' > seems to have " > "changed.\n", > - imm.descr().name().c_str(), > imm.m_program->name().c_str()); > - imm.m_program_ptr = 0; > + imm->descr().name().c_str(), > imm->m_program->name().c_str()); > + imm->m_program_ptr = 0; > } > } > > - imm.m_program_step = fr.signed_32(); > + imm->m_program_step = fr.signed_32(); > > if (version >= 3) > - imm.m_reserved_by_worker = fr.unsigned_8(); > + imm->m_reserved_by_worker = fr.unsigned_8(); > > if (version >= 4) { > std::string dataname = fr.c_string(); > if (!dataname.empty()) { > - imm.set_action_data(ImmovableActionData::load(fr, imm, > dataname)); > + imm->set_action_data(ImmovableActionData::load(fr, > *imm, dataname)); > } > } > } > > === modified file 'src/logic/instances.cc' > --- src/logic/instances.cc 2014-09-20 09:37:47 +0000 > +++ src/logic/instances.cc 2014-11-29 08:14:12 +0000 > @@ -24,7 +24,6 @@ > #include <cstring> > #include <string> > > -#include "base/deprecated.h" > #include "base/log.h" > #include "base/wexception.h" > #include "io/fileread.h" > > === modified file 'src/logic/instances.h' > --- src/logic/instances.h 2014-09-19 12:54:54 +0000 > +++ src/logic/instances.h 2014-11-29 08:14:12 +0000 > @@ -30,7 +30,6 @@ > #include <boost/unordered_map.hpp> > #include <boost/signals2.hpp> > > -#include "base/deprecated.h" > #include "base/log.h" > #include "base/macros.h" > #include "logic/cmd_queue.h" > @@ -181,9 +180,10 @@ > > /// If you find a better way to do this that doesn't cost a virtual function > /// or additional member variable, go ahead > -#define MO_DESCR(type) \ > -public: const type & descr() const { \ > - return ref_cast<type const, MapObjectDescr const>(*m_descr); > \ > +#define MO_DESCR(type) \ > +public: const type & descr() const { \ > + upcast(type const, result, m_descr); \ > + return *result; \ > } > \ > > class MapObject { > @@ -311,7 +311,8 @@ > MapObjectLoader & mol () {return *m_mol;} > MapObject * get_object() {return m_object;} > template<typename T> T & get() { > - return ref_cast<T, MapObject>(*m_object); > + upcast(T, result, m_object); > + return *result; > } > > protected: > > === modified file 'src/logic/militarysite.cc' > --- src/logic/militarysite.cc 2014-09-30 05:41:55 +0000 > +++ src/logic/militarysite.cc 2014-11-29 08:14:12 +0000 > @@ -335,9 +335,9 @@ > // Now I know that the new guy is worthy. > if (nullptr != kickoutCandidate) > { > - Game & game = ref_cast<Game, > EditorGameBase>(owner().egbase()); > - kickoutCandidate->reset_tasks(game); > - kickoutCandidate->start_task_leavebuilding(game, true); > + upcast(Game, game, &owner().egbase()); > + kickoutCandidate->reset_tasks(*game); > + kickoutCandidate->start_task_leavebuilding(*game, true); > return true; > } > } > @@ -355,10 +355,10 @@ > // Call to drop_least routine has side effects: it tries to drop a > soldier. Order is important! > if (stationed_soldiers().size() < m_capacity || > drop_least_suited_soldier(true, &s)) > { > - Game & game = ref_cast<Game, EditorGameBase>(egbase); > + upcast(Game, game, &egbase); > s.set_location(this); > - s.reset_tasks(game); > - s.start_task_buildingwork(game); > + s.reset_tasks(*game); > + s.start_task_buildingwork(*game); > return true; > } > return false; > @@ -376,10 +376,9 @@ > Worker * const w, > PlayerImmovable & target) > { > - MilitarySite & msite = ref_cast<MilitarySite, PlayerImmovable>(target); > - Soldier & s = ref_cast<Soldier, Worker> (*w); > - > - msite.incorporate_soldier(game, s); > + upcast(MilitarySite, msite, &target); > + upcast(Soldier, s, w); > + msite->incorporate_soldier(game, *s); > } > > > @@ -409,11 +408,11 @@ > } > > if (m_capacity < present.size()) { > - Game & game = ref_cast<Game, EditorGameBase>(owner().egbase()); > + upcast(Game, game, &owner().egbase()); > for (uint32_t i = 0; i < present.size() - m_capacity; ++i) { > Soldier & soldier = *present[i]; > - soldier.reset_tasks(game); > - soldier.start_task_leavebuilding(game, true); > + soldier.reset_tasks(*game); > + soldier.start_task_leavebuilding(*game, true); > } > } > } > @@ -716,7 +715,7 @@ > > void MilitarySite::drop_soldier(Soldier & soldier) > { > - Game & game = ref_cast<Game, EditorGameBase>(owner().egbase()); > + upcast(Game, game, &owner().egbase()); > > if (!is_present(soldier)) { > // This can happen when the "drop soldier" player command is > delayed > @@ -729,8 +728,8 @@ > return; > } > > - soldier.reset_tasks(game); > - soldier.start_task_leavebuilding(game, true); > + soldier.reset_tasks(*game); > + soldier.start_task_leavebuilding(*game, true); > > update_soldier_request(); > } > @@ -754,8 +753,8 @@ > > void MilitarySite::aggressor(Soldier & enemy) > { > - Game & game = ref_cast<Game, EditorGameBase>(owner().egbase()); > - Map & map = game.map(); > + upcast(Game, game, &owner().egbase()); > + Map & map = game->map(); > if > (enemy.get_owner() == &owner() || > enemy.get_battle() || > @@ -784,7 +783,7 @@ > sj.enemy = &enemy; > sj.stayhome = false; > m_soldierjobs.push_back(sj); > - temp_soldier->update_task_buildingwork(game); > + temp_soldier->update_task_buildingwork(*game); > return; > } > } > @@ -792,12 +791,12 @@ > > // Inform the player, that we are under attack by adding a new entry to > the > // message queue - a sound will automatically be played. > - notify_player(game, true); > + notify_player(*game, true); > } > > bool MilitarySite::attack(Soldier & enemy) > { > - Game & game = ref_cast<Game, EditorGameBase>(owner().egbase()); > + upcast(Game, game, &owner().egbase()); > > std::vector<Soldier *> present = present_soldiers(); > Soldier * defender = nullptr; > @@ -832,11 +831,11 @@ > sj.stayhome = true; > m_soldierjobs.push_back(sj); > > - defender->update_task_buildingwork(game); > + defender->update_task_buildingwork(*game); > > // Inform the player, that we are under attack by adding a new > entry to > // the message queue - a sound will automatically be played. > - notify_player(game); > + notify_player(*game); > > return true; > } else { > @@ -844,7 +843,7 @@ > const Coords coords = get_position(); > { > send_message > - (game, > + (*game, > "site_lost", > _("Militarysite lost!"), > descr().m_defeated_enemy_str, > @@ -855,11 +854,11 @@ > // we still hold the bigger military presence in that area > (e.g. if there > // is a fortress one or two points away from our sentry, the > fortress has > // a higher presence and thus the enemy can just burn down the > sentry. > - if (military_presence_kept(game)) { > + if (military_presence_kept(*game)) { > // Okay we still got the higher military presence, so > the attacked > // militarysite will be destroyed. > set_defeating_player(enemy.owner().player_number()); > - schedule_destroy(game); > + schedule_destroy(*game); > return false; > } > > @@ -889,16 +888,16 @@ > > // Now we destroy the old building before we place the new one. > set_defeating_player(enemy.owner().player_number()); > - schedule_destroy(game); > + schedule_destroy(*game); > > enemyplayer->force_building(coords, former_buildings); > - BaseImmovable * const newimm = > game.map()[coords].get_immovable(); > + BaseImmovable * const newimm = > game->map()[coords].get_immovable(); > upcast(MilitarySite, newsite, newimm); > - newsite->reinit_after_conqueration(game); > + newsite->reinit_after_conqueration(*game); > > // Of course we should inform the victorious player as well > newsite->send_message > - (game, > + (*game, > "site_defeated", > _("Enemy at site defeated!"), > newsite->descr().m_defeated_you_str, > @@ -991,8 +990,8 @@ > sj.stayhome = false; > m_soldierjobs.push_back(sj); > > - soldier.update_task_buildingwork > - (ref_cast<Game, EditorGameBase>(owner().egbase())); > + upcast(Game, game, &owner().egbase()); > + soldier.update_task_buildingwork(*game); > } > > > > === modified file 'src/logic/partially_finished_building.cc' > --- src/logic/partially_finished_building.cc 2014-09-10 10:18:46 +0000 > +++ src/logic/partially_finished_building.cc 2014-11-29 08:14:12 +0000 > @@ -201,15 +201,15 @@ > { > assert(w); > > - PartiallyFinishedBuilding & b = ref_cast<PartiallyFinishedBuilding, > PlayerImmovable>(target); > + upcast(PartiallyFinishedBuilding, b, &target); > > - b.m_builder = w; > + b->m_builder = w; > > delete &rq; > - b.m_builder_request = nullptr; > + b->m_builder_request = nullptr; > > w->start_task_buildingwork(game); > - b.set_seeing(true); > + b->set_seeing(true); > } > > > > === modified file 'src/logic/pathfield.cc' > --- src/logic/pathfield.cc 2014-09-19 12:54:54 +0000 > +++ src/logic/pathfield.cc 2014-11-29 08:14:12 +0000 > @@ -19,7 +19,6 @@ > > #include "logic/pathfield.h" > > -#include "base/deprecated.h" > #include "base/wexception.h" > > namespace Widelands { > > === modified file 'src/logic/player.cc' > --- src/logic/player.cc 2014-09-20 09:37:47 +0000 > +++ src/logic/player.cc 2014-11-29 08:14:12 +0000 > @@ -201,14 +201,14 @@ > const TribeDescr::Initialization & initialization = > tribe().initialization(m_initialization_index); > > - Game & game = ref_cast<Game, EditorGameBase>(egbase()); > + upcast(Game, game, &egbase()); > > // Run the corresponding script > - std::unique_ptr<LuaTable> > table(game.lua().run_script(initialization.script)); > + std::unique_ptr<LuaTable> > table(game->lua().run_script(initialization.script)); > table->do_not_warn_about_unaccessed_keys(); > std::unique_ptr<LuaCoroutine> cr = table->get_coroutine("func"); > cr->push_arg(this); > - game.enqueue_command(new CmdLuaCoroutine(game.get_gametime(), > cr.release())); > + game->enqueue_command(new CmdLuaCoroutine(game->get_gametime(), > cr.release())); > > // Check if other starting positions are shared in and > initialize them as well > for (uint8_t n = 0; n < m_further_shared_in_player.size(); ++n) > { > @@ -216,12 +216,12 @@ > > // Run the corresponding script > std::unique_ptr<LuaCoroutine> ncr = > - game.lua() > + game->lua() > > .run_script(tribe().initialization(m_further_initializations.at(n)).script) > ->get_coroutine("func"); > ncr->push_arg(this); > ncr->push_arg(further_pos); > - game.enqueue_command(new > CmdLuaCoroutine(game.get_gametime(), ncr.release())); > + game->enqueue_command(new > CmdLuaCoroutine(game->get_gametime(), ncr.release())); > } > } else > throw WLWarning > @@ -485,7 +485,8 @@ > log("Clearing for road at (%i, %i)\n", c.x, c.y); > > // Make sure that the player owns the area around. > - ref_cast<Game, > EditorGameBase>(egbase()).conquer_area_no_building > + upcast(Game, game, &egbase()); > + game->conquer_area_no_building > (PlayerArea<Area<FCoords> >(player_number(), > Area<FCoords>(c, 1))); > > if (BaseImmovable * const immovable = c.field->get_immovable()) > { > @@ -774,11 +775,13 @@ > */ > void Player::flagaction(Flag & flag) > { > - if (&flag.owner() == this) // Additional security check. > + if (&flag.owner() == this) { // Additional security check. > + upcast(Game, game, &egbase()); > flag.add_flag_job > - (ref_cast<Game, EditorGameBase>(egbase()), > + (*game, > tribe().worker_index("geologist"), > "expedition"); > + } > } > > > > === modified file 'src/logic/production_program.h' > --- src/logic/production_program.h 2014-09-14 11:31:58 +0000 > +++ src/logic/production_program.h 2014-11-29 08:14:12 +0000 > @@ -28,7 +28,6 @@ > > #include <stdint.h> > > -#include "base/deprecated.h" > #include "base/log.h" > #include "base/macros.h" > #include "logic/bill_of_materials.h" > > === modified file 'src/logic/productionsite.cc' > --- src/logic/productionsite.cc 2014-10-27 10:14:10 +0000 > +++ src/logic/productionsite.cc 2014-11-29 08:14:12 +0000 > @@ -517,10 +517,10 @@ > Worker * const w, > PlayerImmovable & target) > { > - ProductionSite & psite = ref_cast<ProductionSite, > PlayerImmovable>(target); > + upcast(ProductionSite, psite, &target); > > assert(w); > - assert(w->get_location(game) == &psite); > + assert(w->get_location(game) == psite); > > // If there is more than one working position, it's possible, that > different level workers are > // requested and therefor possible, that a higher qualified worker > answers a request for a lower > @@ -531,7 +531,7 @@ > // placed on the slot that originally requested the arrived worker. > bool worker_placed = false; > WareIndex idx = w->descr().worker_index(); > - for (WorkingPosition * wp = psite.m_working_positions;; ++wp) { > + for (WorkingPosition * wp = psite->m_working_positions;; ++wp) { > if (wp->worker_request == &rq) { > if (wp->worker_request->get_index() == idx) { > // Place worker > @@ -542,16 +542,16 @@ > // Set new request for this slot > WareIndex workerid = > wp->worker_request->get_index(); > delete wp->worker_request; > - wp->worker_request = > &psite.request_worker(workerid); > + wp->worker_request = > &psite->request_worker(workerid); > } > break; > } > } > while (!worker_placed) { > { > - uint8_t nwp = psite.descr().nr_working_positions(); > + uint8_t nwp = psite->descr().nr_working_positions(); > uint8_t pos = 0; > - WorkingPosition * wp = psite.m_working_positions; > + WorkingPosition * wp = psite->m_working_positions; > for (; pos < nwp; ++wp, ++pos) { > // Find a fitting slot > if (!wp->worker && !worker_placed) > @@ -565,10 +565,10 @@ > } > if (!worker_placed) { > // Find the next smaller version of this worker > - WareIndex nuwo = > psite.descr().tribe().get_nrworkers(); > + WareIndex nuwo = > psite->descr().tribe().get_nrworkers(); > WareIndex current = WareIndex(static_cast<size_t>(0)); > for (; current < nuwo; ++current) { > - WorkerDescr const * worker = > psite.descr().tribe().get_worker_descr(current); > + WorkerDescr const * worker = > psite->descr().tribe().get_worker_descr(current); > if (worker->becomes() == idx) { > idx = current; > break; > @@ -578,8 +578,8 @@ > throw > wexception > ("Something went wrong! No > fitting place for worker %s in %s at (%u, %u) found!", > - w->descr().descname().c_str(), > psite.descr().descname().c_str(), > - psite.get_position().x, > psite.get_position().y); > + w->descr().descname().c_str(), > psite->descr().descname().c_str(), > + psite->get_position().x, > psite->get_position().y); > } > } > > @@ -588,8 +588,8 @@ > // primary worker if the worker that has just arrived is > // the last one we need to start working. > w->start_task_idle(game, 0, -1); > - psite.try_start_working(game); > - psite.workers_changed(); > + psite->try_start_working(game); > + psite->workers_changed(); > } > > > @@ -765,14 +765,13 @@ > const WorkerDescr & worker_descr = > > *descr().tribe().get_worker_descr(worker_type_with_count.first); > { > - Worker & recruit = > - ref_cast<Worker, > Bob>(worker_descr.create_object()); > - recruit.set_owner(&worker.owner()); > - recruit.set_position(game, > worker.get_position()); > - recruit.init(game); > - recruit.set_location(this); > - recruit.start_task_leavebuilding(game, true); > - worker.start_task_releaserecruit(game, recruit); > + upcast(Worker, recruit, > &worker_descr.create_object()); > + recruit->set_owner(&worker.owner()); > + recruit->set_position(game, > worker.get_position()); > + recruit->init(game); > + recruit->set_location(this); > + recruit->start_task_leavebuilding(game, true); > + worker.start_task_releaserecruit(game, > *recruit); > } > } > assert(worker_type_with_count.second); > > === modified file 'src/logic/requirements.cc' > --- src/logic/requirements.cc 2014-09-20 09:37:47 +0000 > +++ src/logic/requirements.cc 2014-11-29 08:14:12 +0000 > @@ -19,7 +19,6 @@ > > #include "logic/requirements.h" > > -#include "base/deprecated.h" > #include "base/i18n.h" > #include "io/fileread.h" > #include "io/filewrite.h" > > === modified file 'src/logic/ship.cc' > --- src/logic/ship.cc 2014-09-20 09:37:47 +0000 > +++ src/logic/ship.cc 2014-11-29 08:14:12 +0000 > @@ -21,7 +21,7 @@ > > #include <memory> > > -#include "base/deprecated.h" > +#include "base/macros.h" > #include "economy/economy.h" > #include "economy/flag.h" > #include "economy/fleet.h" > @@ -1031,7 +1031,8 @@ > // economy of all workers we're transporting so that they are in the > correct > // economy. Also, we might are on an expedition which means that we > just now > // created the economy of this ship and must inform all wares. > - ship.set_economy(ref_cast<Game>(egbase()), ship.m_economy); > + upcast(Game, game, &egbase()); > + ship.set_economy(*game, ship.m_economy); > } > > > > === modified file 'src/logic/soldier.cc' > --- src/logic/soldier.cc 2014-10-27 10:14:10 +0000 > +++ src/logic/soldier.cc 2014-11-29 08:14:12 +0000 > @@ -700,12 +700,8 @@ > uint32_t const time) > { > molog("[soldier] starting animation %s", animname); > - return > - start_task_idle > - (ref_cast<Game, EditorGameBase>(egbase), > - descr().get_rand_anim > - (ref_cast<Game, EditorGameBase>(egbase), > animname), > - time); > + upcast(Game, game, &egbase); > + return start_task_idle(*game, descr().get_rand_anim(*game, animname), > time); > } > > > @@ -748,14 +744,17 @@ > */ > bool Soldier::can_be_challenged() > { > - if (m_hp_current < 1) //< Soldier is dead! > - return false; > - if (!is_on_battlefield()) > - return false; > - if (!m_battle) > + if (m_hp_current < 1) { //< Soldier is dead! > + return false; > + } > + if (!is_on_battlefield()) { > + return false; > + } > + if (!m_battle) { > return true; > - return > - !m_battle->locked(ref_cast<Game, > EditorGameBase>(owner().egbase())); > + } > + upcast(Game, game, &owner().egbase()); > + return !m_battle->locked(*game); > } > > /** > @@ -1805,11 +1804,8 @@ > FindImmovableAttackable()); > > for (BaseImmovable * temp_attackable : attackables) { > - if > - (ref_cast<PlayerImmovable const, BaseImmovable > const>(*temp_attackable) > - .get_owner()->player_number() > - == > - land_owner) { > + upcast(PlayerImmovable const, imm, temp_attackable); > + if (imm->get_owner()->player_number() == land_owner) { > dynamic_cast<Attackable > &>(*temp_attackable).aggressor(*this); > } > } > > === modified file 'src/logic/trainingsite.cc' > --- src/logic/trainingsite.cc 2014-10-27 10:14:10 +0000 > +++ src/logic/trainingsite.cc 2014-11-29 08:14:12 +0000 > @@ -341,13 +341,13 @@ > Worker * const w, > PlayerImmovable & target) > { > - TrainingSite & tsite = ref_cast<TrainingSite, PlayerImmovable>(target); > - Soldier & s = ref_cast<Soldier, Worker> (*w); > - > - assert(s.get_location(game) == &tsite); > - assert(tsite.m_soldier_request == &rq); > - > - tsite.incorporate_soldier(game, s); > + upcast(TrainingSite, tsite, &target); > + upcast(Soldier, s, w); > + > + assert(s->get_location(game) == tsite); > + assert(tsite->m_soldier_request == &rq); > + > + tsite->incorporate_soldier(game, *s); > } > > /* > @@ -416,7 +416,7 @@ > */ > void TrainingSite::drop_soldier(Soldier & soldier) > { > - Game & game = ref_cast<Game, EditorGameBase>(owner().egbase()); > + upcast(Game, game, &owner().egbase()); > > std::vector<Soldier *>::iterator it = > std::find(m_soldiers.begin(), m_soldiers.end(), &soldier); > @@ -427,11 +427,11 @@ > > m_soldiers.erase(it); > > - soldier.reset_tasks(game); > - soldier.start_task_leavebuilding(game, true); > + soldier.reset_tasks(*game); > + soldier.start_task_leavebuilding(*game, true); > > // Schedule, so that we can call new soldiers on next act() > - schedule_act(game, 100); > + schedule_act(*game, 100); > } > > > > === modified file 'src/logic/warehouse.cc' > --- src/logic/warehouse.cc 2014-09-30 05:41:55 +0000 > +++ src/logic/warehouse.cc 2014-11-29 08:14:12 +0000 > @@ -23,7 +23,6 @@ > > #include <boost/format.hpp> > > -#include "base/deprecated.h" > #include "base/log.h" > #include "base/macros.h" > #include "base/wexception.h" > @@ -377,11 +376,10 @@ > (owner().is_worker_type_allowed(worker_index) && > m_next_worker_without_cost_spawn[i] == > static_cast<uint32_t>(never())) > { > - if (next_spawn == static_cast<uint32_t>(never())) > - next_spawn = > - schedule_act > - (ref_cast<Game, > EditorGameBase>(egbase), > - > WORKER_WITHOUT_COST_SPAWN_INTERVAL); > + upcast(Game, game, &egbase); > + if (next_spawn == static_cast<uint32_t>(never())) { > + next_spawn = schedule_act(*game, > WORKER_WITHOUT_COST_SPAWN_INTERVAL); > + } > m_next_worker_without_cost_spawn[i] = next_spawn; > log > ("WARNING: player %u is allowed to create > worker type %s but his " > @@ -444,17 +442,13 @@ > // m_next_military_act is not touched in the loading code. Is > only needed > // if there warehous is created in the game? I assume it's for > the > // conquer_radius thing > - m_next_military_act = > - schedule_act > - (ref_cast<Game, EditorGameBase>(egbase), 1000); > + m_next_military_act = schedule_act(*game, 1000); > > - m_next_stock_remove_act = > - schedule_act > - (ref_cast<Game, EditorGameBase>(egbase), 4000); > + m_next_stock_remove_act = schedule_act(*game, 4000); > > log("Message: adding (wh) (%s) %i \n", > to_string(descr().type()).c_str(), player.player_number()); > send_message > - (ref_cast<Game, EditorGameBase>(egbase), > + (*game, > "warehouse", > descr().descname(), > (boost::format(_("A new %s was added to your > economy.")) > @@ -911,17 +905,17 @@ > Worker * const w, > PlayerImmovable & target) > { > - Warehouse & wh = ref_cast<Warehouse, PlayerImmovable>(target); > + upcast(Warehouse, wh, &target); > > if (w) { > w->schedule_incorporate(game); > } else { > - wh.m_supply->add_wares(ware, 1); > + wh->m_supply->add_wares(ware, 1); > > // This ware may be used to build planned workers, > // so it seems like a good idea to update the associated > requests > // and use the ware before it is sent away again. > - wh._update_all_planned_workers(game); > + wh->_update_all_planned_workers(game); > } > } > > @@ -1198,8 +1192,8 @@ > if (!descr().get_conquers()) > return; > > - Game & game = ref_cast<Game, EditorGameBase>(owner().egbase()); > - Map & map = game.map(); > + upcast(Game, game, &owner().egbase()); > + Map & map = game->map(); > if > (enemy.get_owner() == &owner() || > enemy.get_battle() || > @@ -1209,7 +1203,7 @@ > return; > > if > - (game.map().find_bobs > + (game->map().find_bobs > > (Area<FCoords>(map.get_fcoords(base_flag().get_position()), 2), > nullptr, > FindBobEnemySoldier(&owner()))) > @@ -1218,30 +1212,28 @@ > WareIndex const soldier_index = descr().tribe().worker_index("soldier"); > Requirements noreq; > > - if (!count_workers(game, soldier_index, noreq)) > + if (!count_workers(*game, soldier_index, noreq)) > return; > > - Soldier & defender = > - ref_cast<Soldier, Worker>(launch_worker(game, soldier_index, > noreq)); > - defender.start_task_defense(game, false); > + upcast(Soldier, defender, &launch_worker(*game, soldier_index, noreq)); > + defender->start_task_defense(*game, false); > } > > bool Warehouse::attack(Soldier & enemy) > { > - Game & game = ref_cast<Game, EditorGameBase>(owner().egbase()); > + upcast(Game, game, &owner().egbase()); > WareIndex const soldier_index = descr().tribe().worker_index("soldier"); > Requirements noreq; > > - if (count_workers(game, soldier_index, noreq)) { > - Soldier & defender = > - ref_cast<Soldier, Worker>(launch_worker(game, > soldier_index, noreq)); > - defender.start_task_defense(game, true); > - enemy.send_signal(game, "sleep"); > + if (count_workers(*game, soldier_index, noreq)) { > + upcast(Soldier, defender, &launch_worker(*game, soldier_index, > noreq)); > + defender->start_task_defense(*game, true); > + enemy.send_signal(*game, "sleep"); > return true; > } > > set_defeating_player(enemy.owner().player_number()); > - schedule_destroy(game); > + schedule_destroy(*game); > return false; > } > > > === modified file 'src/logic/worker.cc' > --- src/logic/worker.cc 2014-10-27 10:14:10 +0000 > +++ src/logic/worker.cc 2014-11-29 08:14:12 +0000 > @@ -618,7 +618,8 @@ > int32_t max_steps = -1; > > // First of all, make sure we're outside > - if (imm == &ref_cast<Building, PlayerImmovable>(*get_location(game))) { > + upcast(Building, building, get_location(game)); > + if (imm == building) { > start_task_leavebuilding(game, false); > return true; > } > @@ -902,7 +903,8 @@ > bool Worker::run_geologist(Game & game, State & state, const Action & action) > { > // assert that location is of the right type. > - ref_cast<Flag const, PlayerImmovable const>(*get_location(game)); > + // NOCOM(#gunchleoc): What's this supposed to do? There's nothing being > asserted here. Dunno. Maybe the author thought that it would throw something like a bad cast exception, but I do not think it does in c++. Just delete it. > + //upcast(Flag const, flag, get_location(game)); > > molog > (" Start Geologist (%i attempts, %i radius -> %s)\n", > @@ -1902,13 +1904,12 @@ > } > > for (;;) { > - const WorkerProgram & program = > - ref_cast<WorkerProgram const, BobProgramBase > const>(*state.program); > + upcast(WorkerProgram const, program, state.program); > > - if (static_cast<uint32_t>(state.ivar1) >= program.get_size()) > + if (static_cast<uint32_t>(state.ivar1) >= program->get_size()) > return pop_task(game); > > - const Action & action = *program.get_action(state.ivar1); > + const Action & action = *program->get_action(state.ivar1); > > if ((this->*(action.function))(game, state, action)) > return; > @@ -2082,9 +2083,12 @@ > > WareInstance * ware = get_carried_ware(game); > BaseImmovable * const location = > game.map()[get_position()].get_immovable(); > + > #ifndef NDEBUG > - Building & ploc = ref_cast<Building, > PlayerImmovable>(*get_location(game)); > - assert(&ploc == location || &ploc.base_flag() == location); > + upcast(BaseImmovable, ploc, get_location(game)); > + upcast(Building, plbuild, get_location(game)); > + upcast(BaseImmovable, plflagloc, &plbuild->base_flag()); > + assert(ploc == location || plflagloc == location); > #endif > > // Deliver the ware > @@ -2205,11 +2209,10 @@ > > // The ware has decided that it doesn't want to go to us after > all > // In order to return to the warehouse, we're switching to > State_DropOff > - if > - (WareInstance * const ware = > - ref_cast<Flag, > PlayerImmovable>(*location).fetch_pending_ware > - (game, employer)) > + upcast(Flag, flag, location); > + if (WareInstance * const ware = flag->fetch_pending_ware(game, > employer)) { > set_carried_ware(game, ware); > + } > > set_animation(game, descr().get_animation("idle")); > return schedule_act(game, 20); > @@ -2367,14 +2370,13 @@ > */ > void Worker::start_task_leavebuilding(Game & game, bool const changelocation) > { > - Building & building = > - ref_cast<Building, PlayerImmovable>(*get_location(game)); > + upcast(Building, building, get_location(game)); > > // Set the wait task > push_task(game, taskLeavebuilding); > State & state = top_state(); > state.ivar1 = changelocation; > - state.objvar1 = &building; > + state.objvar1 = building; > } > > > @@ -2437,8 +2439,10 @@ > // The if-statement is needed because this is (unfortunately) also > called > // when the Worker is deallocated when shutting down the simulation. > Then > // the building might not exist any more. > - if (MapObject * const building = state.objvar1.get(game)) > - ref_cast<Building, MapObject>(*building).leave_skip(game, > *this); > + if (MapObject * const building = state.objvar1.get(game)) { > + upcast(Building, tmp_building, building); > + tmp_building->leave_skip(game, *this); > + } > } > > > @@ -2544,7 +2548,7 @@ > molog("[fugitive]: found a flag connected to warehouse(s)\n"); > for (const ImmovableFound& tmp_flag : flags) { > > - Flag & flag = ref_cast<Flag, > BaseImmovable>(*tmp_flag.object); > + upcast(Flag, flag, tmp_flag.object); > > if (game.logic_rand() % 2 == 0) > continue; > @@ -2553,7 +2557,7 @@ > map.calc_distance(get_position(), > tmp_flag.coords); > > if (!best || bestdist > dist) { > - best = &flag; > + best = flag; > bestdist = dist; > } > } > @@ -2649,10 +2653,8 @@ > // > Map & map = game.map(); > const World & world = game.world(); > - Area<FCoords> owner_area > - (map.get_fcoords > - (ref_cast<Flag, > PlayerImmovable>(*get_location(game)).get_position()), > - state.ivar2); > + upcast(Flag, flag, get_location(game)); > + Area<FCoords> owner_area(map.get_fcoords(flag->get_position()), > state.ivar2); > > // Check if it's not time to go home > if (state.ivar1 > 0) { > @@ -2798,12 +2800,11 @@ > state.ivar2 = game.get_gametime() + time; > > // first get out > - Building & building = > - ref_cast<Building, PlayerImmovable>(*get_location(game)); > + upcast(Building, building, get_location(game)); > push_task(game, taskLeavebuilding); > State & stateLeave = top_state(); > stateLeave.ivar1 = false; > - stateLeave.objvar1 = &building; > + stateLeave.objvar1 = building; > } > > > @@ -2958,8 +2959,8 @@ > > if (version >= 2) { > if (fr.unsigned_8()) { > - worker.m_transfer = > - new Transfer(ref_cast<Game, > EditorGameBase>(egbase()), worker); > + upcast(Game, game, &egbase()); > + worker.m_transfer = new Transfer(*game, worker); > worker.m_transfer->read(fr, m_transfer); > } > } > > === modified file 'src/logic/worker_descr.cc' > --- src/logic/worker_descr.cc 2014-09-20 09:37:47 +0000 > +++ src/logic/worker_descr.cc 2014-11-29 08:14:12 +0000 > @@ -19,8 +19,8 @@ > > #include "logic/worker_descr.h" > > -#include "base/deprecated.h" > #include "base/i18n.h" > +#include "base/macros.h" > #include "base/wexception.h" > #include "graphic/graphic.h" > #include "logic/carrier.h" > @@ -177,12 +177,12 @@ > Coords const coords) > const > { > - Worker & worker = ref_cast<Worker, MapObject>(create_object()); > - worker.set_owner(&owner); > - worker.set_location(location); > - worker.set_position(egbase, coords); > - worker.init(egbase); > - return worker; > + upcast(Worker, worker, &create_object()); > + worker->set_owner(&owner); > + worker->set_location(location); > + worker->set_position(egbase, coords); > + worker->init(egbase); > + return *worker; > } > > > > === modified file 'src/map_io/CMakeLists.txt' > --- src/map_io/CMakeLists.txt 2014-11-22 15:27:45 +0000 > +++ src/map_io/CMakeLists.txt 2014-11-29 08:14:12 +0000 > @@ -86,7 +86,6 @@ > map_version_packet.h > USES_SDL2_IMAGE > DEPENDS > - base_deprecated > base_exceptions > base_log > base_macros > > === modified file 'src/map_io/map_buildingdata_packet.cc' > --- src/map_io/map_buildingdata_packet.cc 2014-09-20 09:37:47 +0000 > +++ src/map_io/map_buildingdata_packet.cc 2014-11-29 08:14:12 +0000 > @@ -194,43 +194,21 @@ > // Set economy now, some stuff below > will count on this. > > building.set_economy(building.m_flag->get_economy()); > > + upcast(Game, game, &egbase); > + > if (upcast(ConstructionSite, > constructionsite, &building)) { > - read_constructionsite > - (*constructionsite, > - fr, > - ref_cast<Game, > EditorGameBase>(egbase), > - mol); > + read_constructionsite > (*constructionsite, fr, *game, mol); > } else if (upcast(DismantleSite, dms, > &building)) { > - read_dismantlesite > - (*dms, > - fr, > - ref_cast<Game, > EditorGameBase>(egbase), > - mol); > + read_dismantlesite(*dms, fr, > *game, mol); > } else if (upcast(Warehouse, warehouse, > &building)) { > - read_warehouse > - (*warehouse, > - fr, > - ref_cast<Game, > EditorGameBase>(egbase), > - mol); > + read_warehouse(*warehouse, fr, > *game, mol); > } else if (upcast(ProductionSite, > productionsite, &building)) { > if (upcast(MilitarySite, > militarysite, productionsite)) { > - read_militarysite > - (*militarysite, > - fr, > - ref_cast<Game, > EditorGameBase>(egbase), > - mol); > + > read_militarysite(*militarysite, fr, *game, mol); > } else if (upcast(TrainingSite, > trainingsite, productionsite)) { > - read_trainingsite > - (*trainingsite, > - fr, > - ref_cast<Game, > EditorGameBase>(egbase), > - mol); > + > read_trainingsite(*trainingsite, fr, *game, mol); > } else { > - read_productionsite > - > (*productionsite, > - fr, > - ref_cast<Game, > EditorGameBase>(egbase), > - mol); > + > read_productionsite(*productionsite, fr, *game, mol); > } > } else { > // type of building is not one > of (or derived from) > @@ -238,8 +216,7 @@ > assert(false); > } > if (packet_version < 3) { > - read_formerbuildings_v2 > - (building, fr, > ref_cast<Game, EditorGameBase>(egbase), mol); > + > read_formerbuildings_v2(building, fr, *game, mol); > } > > mol.mark_object_as_loaded(building); > @@ -1137,7 +1114,7 @@ > Map & map = egbase.map(); > const uint32_t mapwidth = map.get_width(); > MapIndex const max_index = map.max_index(); > - for (MapIndex i = 0; i < max_index; ++i) > + for (MapIndex i = 0; i < max_index; ++i) { > if (upcast(Building const, building, map[i].get_immovable())) { > assert(mos.is_object_known(*building)); > > @@ -1190,52 +1167,32 @@ > fw.unsigned_8(is_stopped); > } > > - if (upcast(ConstructionSite const, constructionsite, > building)) > - write_constructionsite > - (*constructionsite, > - fw, > - ref_cast<Game, EditorGameBase>(egbase), > - mos); > - else if (upcast(DismantleSite const, dms, building)) > - write_dismantlesite > - (*dms, > - fw, > - ref_cast<Game, EditorGameBase>(egbase), > - mos); > - else if (upcast(Warehouse const, warehouse, building)) > - write_warehouse > - (*warehouse, > - fw, > - ref_cast<Game, EditorGameBase>(egbase), > - mos); > - else if (upcast(ProductionSite const, productionsite, > building)) { > - if (upcast(MilitarySite const, militarysite, > productionsite)) > - write_militarysite > - (*militarysite, > - fw, > - ref_cast<Game, > EditorGameBase>(egbase), > - mos); > - else if (upcast(TrainingSite const, > trainingsite, productionsite)) > - write_trainingsite > - (*trainingsite, > - fw, > - ref_cast<Game, > EditorGameBase>(egbase), > - mos); > - else > - write_productionsite > - (*productionsite, > - fw, > - ref_cast<Game, > EditorGameBase>(egbase), > - mos); > + upcast(Game, game, &egbase); > + > + if (upcast(ConstructionSite const, constructionsite, > building)) { > + write_constructionsite(*constructionsite, fw, > *game, mos); > + } else if (upcast(DismantleSite const, dms, building)) { > + write_dismantlesite(*dms, fw, *game, mos); > + } else if (upcast(Warehouse const, warehouse, > building)) { > + write_warehouse (*warehouse, fw, *game, mos); > + } else if (upcast(ProductionSite const, productionsite, > building)) { > + if (upcast(MilitarySite const, militarysite, > productionsite)) { > + write_militarysite(*militarysite, fw, > *game, mos); > + } > + else if (upcast(TrainingSite const, > trainingsite, productionsite)) { > + write_trainingsite(*trainingsite, fw, > *game, mos); > + } > + else { > + write_productionsite(*productionsite, > fw, *game, mos); > + } > } else { > assert(false); > // type of building is not one of (or derived > from) > // {ConstructionSite, Warehouse, > ProductionSite} > } > - > mos.mark_object_as_saved(*building); > } > - > + } > fw.write(fs, "binary/building_data"); > } > > > === modified file 'src/map_io/map_elemental_packet.cc' > --- src/map_io/map_elemental_packet.cc 2014-10-29 06:41:10 +0000 > +++ src/map_io/map_elemental_packet.cc 2014-11-29 08:14:12 +0000 > @@ -22,7 +22,6 @@ > #include <boost/algorithm/string.hpp> > #include <boost/format.hpp> > > -#include "base/deprecated.h" > #include "logic/editor_game_base.h" > #include "logic/game_data_error.h" > #include "logic/map.h" > > === modified file 'src/map_io/map_flag_packet.cc' > --- src/map_io/map_flag_packet.cc 2014-09-20 09:37:47 +0000 > +++ src/map_io/map_flag_packet.cc 2014-11-29 08:14:12 +0000 > @@ -106,12 +106,10 @@ > // packet. We always create > this, no matter what skip is > // since we have to read the > data packets. We delete this > // object later again, if it > is not wanted. > + upcast(Game, game, &egbase); > mol.register_object<Flag> > (serial, > - *new Flag > - (ref_cast<Game, > EditorGameBase>(egbase), > - > egbase.player(owner), > - fc)); > + *new Flag(*game, > egbase.player(owner), fc)); > } catch (const WException & e) { > throw GameDataError > ("%u (at (%i, %i), > owned by player %u): %s", > > === modified file 'src/map_io/map_flagdata_packet.cc' > --- src/map_io/map_flagdata_packet.cc 2014-09-20 09:37:47 +0000 > +++ src/map_io/map_flagdata_packet.cc 2014-11-29 08:14:12 +0000 > @@ -201,8 +201,8 @@ > > 0, > > Flag::flag_job_request_callback, > > wwWORKER); > - f.request->read > - (fr, > ref_cast<Game, EditorGameBase>(egbase), mol); > + upcast(Game, > game, &egbase); > + > f.request->read(fr, *game, mol); > } else { > f.request = > nullptr; > } > @@ -301,8 +301,8 @@ > for (const Flag::FlagJob& temp_job : flag_jobs) { > if (temp_job.request) { > fw.unsigned_8(1); > - temp_job.request->write > - (fw, ref_cast<Game, > EditorGameBase>(egbase), mos); > + upcast(Game, game, &egbase); > + temp_job.request->write(fw, *game, mos); > } else > fw.unsigned_8(0); > > > === modified file 'src/map_io/map_object_saver.cc' > --- src/map_io/map_object_saver.cc 2014-09-14 11:31:58 +0000 > +++ src/map_io/map_object_saver.cc 2014-11-29 08:14:12 +0000 > @@ -19,7 +19,6 @@ > > #include "map_io/map_object_saver.h" > > -#include "base/deprecated.h" > #include "base/wexception.h" > #include "economy/flag.h" > #include "economy/fleet.h" > > === modified file 'src/map_io/map_port_spaces_packet.cc' > --- src/map_io/map_port_spaces_packet.cc 2014-09-30 05:41:55 +0000 > +++ src/map_io/map_port_spaces_packet.cc 2014-11-29 08:14:12 +0000 > @@ -23,7 +23,6 @@ > > #include <boost/algorithm/string.hpp> > > -#include "base/deprecated.h" > #include "base/log.h" > #include "logic/editor_game_base.h" > #include "logic/game_data_error.h" > > === modified file 'src/map_io/map_roaddata_packet.cc' > --- src/map_io/map_roaddata_packet.cc 2014-09-20 09:37:47 +0000 > +++ src/map_io/map_roaddata_packet.cc 2014-11-29 08:14:12 +0000 > @@ -69,6 +69,7 @@ > break; > } > try { > + upcast(Game, game, &egbase); > Road & road = mol.get<Road>(serial); > if (mol.is_object_loaded(road)) > throw GameDataError("already > loaded"); > @@ -124,7 +125,7 @@ > > // Now that all rudimentary data is > set, init this road. Then > // overwrite the initialization values. > - road._link_into_flags(ref_cast<Game, > EditorGameBase>(egbase)); > + road._link_into_flags(*game); > > road.m_idle_index = > fr.unsigned_32(); > > @@ -166,8 +167,8 @@ > (road, > 0, > > Road::_request_carrier_callback, > - > wwWORKER)) > - ->read(fr, > ref_cast<Game, EditorGameBase>(egbase), mol); > + > wwWORKER)) > + ->read(fr, *game, mol); > } else { > carrier_request = > nullptr; > //log("No request in > this slot"); > @@ -190,13 +191,8 @@ > } else { > delete carrier_request; > if (carrier) { > - > //carrier->set_location (0); > - > carrier->reset_tasks > - > (ref_cast<Game, > - > EditorGameBase>(egbase)); > - > //carrier->send_signal > - > //(ref_cast<Game, > - > //EditorGameBase>(egbase), "location"); > + upcast(Game, > game, &egbase); > + > carrier->reset_tasks(*game); > } > } > } > @@ -275,8 +271,8 @@ > > if (temp_slot.carrier_request) { > fw.unsigned_8(1); > - temp_slot.carrier_request->write > - (fw, ref_cast<Game, > EditorGameBase>(egbase), mos); > + upcast(Game, game, &egbase); > + > temp_slot.carrier_request->write(fw, *game, mos); > } else { > fw.unsigned_8(0); > } > > === modified file 'src/network/CMakeLists.txt' > --- src/network/CMakeLists.txt 2014-10-13 15:04:50 +0000 > +++ src/network/CMakeLists.txt 2014-11-29 08:14:12 +0000 > @@ -23,7 +23,6 @@ > USES_SDL2_NET > DEPENDS > ai > - base_deprecated > base_exceptions > base_i18n > base_log > > === modified file 'src/network/network_lan_promotion.cc' > --- src/network/network_lan_promotion.cc 2014-09-20 09:37:47 +0000 > +++ src/network/network_lan_promotion.cc 2014-11-29 08:14:12 +0000 > @@ -22,7 +22,6 @@ > #include <cstdio> > #include <cstring> > > -#include "base/deprecated.h" > #include "base/log.h" > #include "base/macros.h" > #include "build_info.h" > > === modified file 'src/scripting/CMakeLists.txt' > --- src/scripting/CMakeLists.txt 2014-07-25 20:16:31 +0000 > +++ src/scripting/CMakeLists.txt 2014-11-29 08:14:12 +0000 > @@ -38,7 +38,6 @@ > scripting.h > USES_BOOST_REGEX > DEPENDS > - base_deprecated > base_exceptions > base_i18n > base_log > > === modified file 'src/scripting/lua_map.cc' > --- src/scripting/lua_map.cc 2014-10-27 10:14:10 +0000 > +++ src/scripting/lua_map.cc 2014-11-29 08:14:12 +0000 > @@ -21,8 +21,8 @@ > > #include <boost/format.hpp> > > -#include "base/deprecated.h" > #include "base/log.h" > +#include "base/macros.h" > #include "economy/wares_queue.h" > #include "graphic/graphic.h" > #include "logic/carrier.h" > @@ -444,11 +444,10 @@ > lua_rawset(L, -3); > } > } else { > - const SoldierDescr& soldier_descr = ref_cast<SoldierDescr > const, WorkerDescr const> > - > (*tribe.get_worker_descr(tribe.worker_index("soldier"))); > + upcast(SoldierDescr const, soldier_descr, > tribe.get_worker_descr(tribe.worker_index("soldier"))); > > // Only return the number of those requested > - const SoldierMapDescr wanted = unbox_lua_soldier_description(L, > 2, soldier_descr); > + const SoldierMapDescr wanted = unbox_lua_soldier_description(L, > 2, *soldier_descr); > uint32_t rv = 0; > for (const Soldier* s : soldiers) { > SoldierMapDescr sd > @@ -469,10 +468,8 @@ > assert(owner != nullptr); > > const TribeDescr& tribe = owner->tribe(); > - const SoldierDescr& soldier_descr = // soldiers > - ref_cast<SoldierDescr const, WorkerDescr const> > - > (*tribe.get_worker_descr(tribe.worker_index("soldier"))); > - SoldiersMap setpoints = m_parse_set_soldiers_arguments(L, > soldier_descr); > + upcast(SoldierDescr const, soldier_descr, > tribe.get_worker_descr(tribe.worker_index("soldier"))); > + SoldiersMap setpoints = m_parse_set_soldiers_arguments(L, > *soldier_descr); > > // Get information about current soldiers > const std::vector<Soldier*> curs = sc->stationed_soldiers(); > @@ -517,12 +514,11 @@ > } > } else if (d > 0) { > for (; d; --d) { > - Soldier& soldier = ref_cast<Soldier, Worker> > - (soldier_descr.create(egbase, *owner, > nullptr, building_position)); > - soldier.set_level > + upcast(Soldier, soldier, > &soldier_descr->create(egbase, *owner, nullptr, building_position)); > + soldier->set_level > (sp.first.hp, sp.first.at, sp.first.de, > sp.first.ev); > - if (sc->incorporate_soldier(egbase, soldier)) { > - soldier.remove(egbase); > + if (sc->incorporate_soldier(egbase, *soldier)) { > + soldier->remove(egbase); > report_error(L, "No space left for > soldier!"); > } > } > @@ -2586,13 +2582,13 @@ > for (Path::StepVector::size_type i = 0; i < idle_index; ++i) > egbase.map().get_neighbour(idle_position, path[i], > &idle_position); > > - Carrier & carrier = ref_cast<Carrier, Worker> > - (wdes->create (egbase, r.owner(), &r, idle_position)); > - > - if (upcast(Game, game, &egbase)) > - carrier.start_task_road(*game); > - > - r.assign_carrier(carrier, 0); > + upcast(Carrier, carrier, &wdes->create(egbase, r.owner(), &r, > idle_position)); > + > + if (upcast(Game, game, &egbase)) { > + carrier->start_task_road(*game); > + } > + > + r.assign_carrier(*carrier, 0); > return 0; > } > > > === modified file 'src/sound/CMakeLists.txt' > --- src/sound/CMakeLists.txt 2014-10-13 15:04:50 +0000 > +++ src/sound/CMakeLists.txt 2014-11-29 08:14:12 +0000 > @@ -10,7 +10,6 @@ > USES_SDL2 > USES_SDL2_MIXER > DEPENDS > - base_deprecated > base_i18n > base_log > graphic > > === modified file 'src/sound/sound_handler.cc' > --- src/sound/sound_handler.cc 2014-10-16 16:06:37 +0000 > +++ src/sound/sound_handler.cc 2014-11-29 08:14:12 +0000 > @@ -28,7 +28,6 @@ > #include <windows.h> > #endif > > -#include "base/deprecated.h" > #include "base/i18n.h" > #include "base/log.h" > #include "graphic/graphic.h" > > === modified file 'src/ui_basic/CMakeLists.txt' > --- src/ui_basic/CMakeLists.txt 2014-11-22 11:00:04 +0000 > +++ src/ui_basic/CMakeLists.txt 2014-11-29 08:14:12 +0000 > @@ -51,7 +51,6 @@ > USES_BOOST_REGEX > USES_SDL2 > DEPENDS > - base_deprecated > base_exceptions > base_geometry > base_i18n > > === modified file 'src/ui_basic/listselect.cc' > --- src/ui_basic/listselect.cc 2014-11-22 10:18:20 +0000 > +++ src/ui_basic/listselect.cc 2014-11-29 08:14:12 +0000 > @@ -23,7 +23,6 @@ > > #include <boost/bind.hpp> > > -#include "base/deprecated.h" > #include "base/log.h" > #include "graphic/font.h" > #include "graphic/font_handler.h" > > === modified file 'src/ui_basic/progresswindow.cc' > --- src/ui_basic/progresswindow.cc 2014-10-14 06:30:20 +0000 > +++ src/ui_basic/progresswindow.cc 2014-11-29 08:14:12 +0000 > @@ -23,7 +23,6 @@ > #include <sys/time.h> > #endif > > -#include "base/deprecated.h" > #include "base/i18n.h" > #include "graphic/font.h" > #include "graphic/font_handler.h" > > === modified file 'src/ui_basic/spinbox.cc' > --- src/ui_basic/spinbox.cc 2014-09-30 05:41:55 +0000 > +++ src/ui_basic/spinbox.cc 2014-11-29 08:14:12 +0000 > @@ -23,7 +23,6 @@ > > #include <boost/format.hpp> > > -#include "base/deprecated.h" > #include "base/i18n.h" > #include "base/wexception.h" > #include "ui_basic/button.h" > > === modified file 'src/ui_basic/table.cc' > --- src/ui_basic/table.cc 2014-11-22 10:18:20 +0000 > +++ src/ui_basic/table.cc 2014-11-29 08:14:12 +0000 > @@ -21,7 +21,6 @@ > > #include <boost/bind.hpp> > > -#include "base/deprecated.h" > #include "graphic/font.h" > #include "graphic/font_handler.h" > #include "graphic/font_handler1.h" > > === modified file 'src/wui/CMakeLists.txt' > --- src/wui/CMakeLists.txt 2014-10-13 15:04:50 +0000 > +++ src/wui/CMakeLists.txt 2014-11-29 08:14:12 +0000 > @@ -129,7 +129,6 @@ > watchwindow.h > USES_SDL2 > DEPENDS > - base_deprecated > base_exceptions > base_geometry > base_i18n > > === modified file 'src/wui/actionconfirm.cc' > --- src/wui/actionconfirm.cc 2014-11-13 08:25:45 +0000 > +++ src/wui/actionconfirm.cc 2014-11-29 08:14:12 +0000 > @@ -46,7 +46,8 @@ > Widelands::Ship & ship); > > InteractivePlayer & iaplayer() const { > - return ref_cast<InteractivePlayer, UI::Panel>(*get_parent()); > + upcast(InteractivePlayer, result, get_parent()); > + return *result; > } > > virtual void think() = 0; > > === modified file 'src/wui/building_statistics_menu.cc' > --- src/wui/building_statistics_menu.cc 2014-10-28 14:57:52 +0000 > +++ src/wui/building_statistics_menu.cc 2014-11-29 08:14:12 +0000 > @@ -65,7 +65,8 @@ > namespace Columns {enum {Name, Size, Prod, Owned, Build};} > > inline InteractivePlayer & BuildingStatisticsMenu::iplayer() const { > - return ref_cast<InteractivePlayer, UI::Panel>(*get_parent()); > + upcast(InteractivePlayer, result, get_parent()); > + return *result; > } > > BuildingStatisticsMenu::BuildingStatisticsMenu > @@ -418,11 +419,10 @@ > ++nr_build; > else { > ++nr_owned; > - if (productionsite) > - total_prod += > - > ref_cast<Widelands::ProductionSite, Widelands::BaseImmovable> > - > (*map[vec[l].pos].get_immovable()) > - .get_statistics_percent(); > + if (productionsite) { > + upcast(Widelands::ProductionSite, > psite, map[vec[l].pos].get_immovable()); > + total_prod += > psite->get_statistics_percent(); > + } > } > } > > > === modified file 'src/wui/buildingwindow.cc' > --- src/wui/buildingwindow.cc 2014-11-24 07:25:21 +0000 > +++ src/wui/buildingwindow.cc 2014-11-29 08:14:12 +0000 > @@ -378,7 +378,8 @@ > igbase().game().send_player_bulldoze(m_building); > } > else { > - show_bulldoze_confirm(ref_cast<InteractivePlayer, > InteractiveGameBase>(igbase()), m_building); > + upcast(InteractivePlayer, iaplayer, &igbase()); > + show_bulldoze_confirm(*iaplayer, m_building); > } > } > > @@ -394,7 +395,8 @@ > igbase().game().send_player_dismantle(m_building); > } > else { > - show_dismantle_confirm(ref_cast<InteractivePlayer, > InteractiveGameBase>(igbase()), m_building); > + upcast(InteractivePlayer, iaplayer, &igbase()); > + show_dismantle_confirm(*iaplayer, m_building); > } > } > > @@ -437,10 +439,8 @@ > > igbase().game().send_player_enhance_building(m_building, id); > } > else { > - show_enhance_confirm > - (ref_cast<InteractivePlayer, > InteractiveGameBase>(igbase()), > - m_building, > - id); > + upcast(InteractivePlayer, iaplayer, &igbase()); > + show_enhance_confirm(*iaplayer, m_building, id); > } > } > > > === modified file 'src/wui/buildingwindow.h' > --- src/wui/buildingwindow.h 2014-09-10 14:48:40 +0000 > +++ src/wui/buildingwindow.h 2014-11-29 08:14:12 +0000 > @@ -47,7 +47,8 @@ > Widelands::Building & building() {return m_building;} > > InteractiveGameBase & igbase() const { > - return ref_cast<InteractiveGameBase, UI::Panel>(*get_parent()); > + upcast(InteractiveGameBase, result, get_parent()); > + return *result; > } > > void draw(RenderTarget &) override; > > === modified file 'src/wui/constructionsitewindow.cc' > --- src/wui/constructionsitewindow.cc 2014-09-10 14:48:40 +0000 > +++ src/wui/constructionsitewindow.cc 2014-11-29 08:14:12 +0000 > @@ -84,11 +84,8 @@ > void ConstructionSiteWindow::think() > { > BuildingWindow::think(); > - > - const Widelands::ConstructionSite & cs = > - ref_cast<Widelands::ConstructionSite, > Widelands::Building>(building()); > - > - m_progress->set_state(cs.get_built_per64k()); > + upcast(Widelands::ConstructionSite, cs, &building()); > + m_progress->set_state(cs->get_built_per64k()); > } > > > > === modified file 'src/wui/dismantlesitewindow.cc' > --- src/wui/dismantlesitewindow.cc 2014-09-10 14:48:40 +0000 > +++ src/wui/dismantlesitewindow.cc 2014-11-29 08:14:12 +0000 > @@ -78,11 +78,8 @@ > void DismantleSiteWindow::think() > { > BuildingWindow::think(); > - > - const Widelands::DismantleSite & ds = > - ref_cast<Widelands::DismantleSite, > Widelands::Building>(building()); > - > - m_progress->set_state(ds.get_built_per64k()); > + upcast(Widelands::DismantleSite, ds, &building()); > + m_progress->set_state(ds->get_built_per64k()); > } > > > > === modified file 'src/wui/encyclopedia_window.cc' > --- src/wui/encyclopedia_window.cc 2014-10-28 14:57:52 +0000 > +++ src/wui/encyclopedia_window.cc 2014-11-29 08:14:12 +0000 > @@ -51,7 +51,8 @@ > using namespace Widelands; > > inline InteractivePlayer & EncyclopediaWindow::iaplayer() const { > - return ref_cast<InteractivePlayer, UI::Panel>(*get_parent()); > + upcast(InteractivePlayer, result, get_parent()); > + return *result; > } > > > @@ -141,10 +142,8 @@ > condTable.clear(); > const TribeDescr & tribe = iaplayer().player().tribe(); > > - const ProductionSiteDescr::Programs & programs = > - ref_cast<ProductionSiteDescr const, BuildingDescr const> > - (*tribe.get_building_descr(prodSites.get_selected())) > - .programs(); > + upcast(ProductionSiteDescr const, descr, > tribe.get_building_descr(prodSites.get_selected())); > + const ProductionSiteDescr::Programs & programs = descr->programs(); > > // TODO(unknown): This needs reworking. A program can indeed produce > iron even if > // the program name is not any of produce_iron, smelt_iron, prog_iron > > === modified file 'src/wui/fieldaction.cc' > --- src/wui/fieldaction.cc 2014-11-13 08:25:45 +0000 > +++ src/wui/fieldaction.cc 2014-11-29 08:14:12 +0000 > @@ -177,7 +177,8 @@ > ~FieldActionWindow(); > > InteractiveBase & ibase() { > - return ref_cast<InteractiveBase, UI::Panel>(*get_parent()); > + upcast(InteractiveBase, result, get_parent()); > + return *result; > } > > void think() override; > @@ -656,8 +657,8 @@ > */ > void FieldActionWindow::act_watch() > { > - show_watch_window > - (ref_cast<InteractiveGameBase, InteractiveBase>(ibase()), > m_node); > + upcast(InteractiveGameBase, igbase, &ibase()); > + show_watch_window(*igbase, m_node); > okdialog(); > } > > @@ -710,9 +711,10 @@ > > if (ibase().is_building_road()) > ibase().finish_build_road(); > - else if (game) > - ref_cast<InteractivePlayer, InteractiveBase>(ibase()) > - .set_flag_to_connect(m_node); > + else if (game) { > + upcast(InteractivePlayer, iaplayer, &ibase()); > + iaplayer->set_flag_to_connect(m_node); > + } > > okdialog(); > } > @@ -734,22 +736,22 @@ > { > okdialog(); > Widelands::EditorGameBase & egbase = ibase().egbase(); > + upcast(Game, game, &egbase); > + upcast(InteractivePlayer, iaplayer, &ibase()); > + > if (upcast(Widelands::Flag, flag, m_node.field->get_immovable())) { > if (Building * const building = flag->get_building()) { > if (building->get_playercaps() & > Building::PCap_Bulldoze) { > if (get_key_state(SDL_SCANCODE_LCTRL) || > get_key_state(SDL_SCANCODE_RCTRL)) { > - ref_cast<Game, > EditorGameBase>(egbase).send_player_bulldoze > + game->send_player_bulldoze > (*flag, > get_key_state(SDL_SCANCODE_LCTRL) || get_key_state(SDL_SCANCODE_RCTRL)); > } > else { > - show_bulldoze_confirm > - (ref_cast<InteractivePlayer, > InteractiveBase>(ibase()), > - *building, > - flag); > + show_bulldoze_confirm(*iaplayer, > *building, flag); > } > } > } else { > - ref_cast<Game, > EditorGameBase>(egbase).send_player_bulldoze > + game->send_player_bulldoze > (*flag, > get_key_state(SDL_SCANCODE_LCTRL) || get_key_state(SDL_SCANCODE_RCTRL)); > } > } > @@ -792,9 +794,11 @@ > void FieldActionWindow::act_removeroad() > { > Widelands::EditorGameBase & egbase = ibase().egbase(); > - if (upcast(Widelands::Road, road, egbase.map().get_immovable(m_node))) > - ref_cast<Game, EditorGameBase>(egbase).send_player_bulldoze > + if (upcast(Widelands::Road, road, egbase.map().get_immovable(m_node))) { > + upcast(Game, game, &ibase().egbase()); > + game->send_player_bulldoze > (*road, get_key_state(SDL_SCANCODE_LCTRL) || > get_key_state(SDL_SCANCODE_RCTRL)); > + } > okdialog(); > } > > @@ -806,15 +810,12 @@ > */ > void FieldActionWindow::act_build(Widelands::BuildingIndex idx) > { > - Widelands::Game & game = ref_cast<Game, > EditorGameBase>(ibase().egbase()); > - game.send_player_build > - (ref_cast<InteractivePlayer, > InteractiveBase>(ibase()).player_number(), > - m_node, > - Widelands::BuildingIndex(idx)); > - ibase().reference_player_tribe > - (m_plr->player_number(), &m_plr->tribe()); > - ref_cast<InteractivePlayer, > InteractiveBase>(ibase()).set_flag_to_connect > - (game.map().br_n(m_node)); > + upcast(Game, game, &ibase().egbase()); > + upcast(InteractivePlayer, iaplayer, &ibase()); > + > + game->send_player_build(iaplayer->player_number(), m_node, > Widelands::BuildingIndex(idx)); > + ibase().reference_player_tribe(m_plr->player_number(), &m_plr->tribe()); > + iaplayer->set_flag_to_connect(game->map().br_n(m_node)); > okdialog(); > } > > @@ -848,10 +849,10 @@ > */ > void FieldActionWindow::act_geologist() > { > - Game & game = ref_cast<Game, EditorGameBase>(ibase().egbase()); > - if (upcast(Widelands::Flag, flag, game.map().get_immovable(m_node))) > - game.send_player_flagaction (*flag); > - > + upcast(Game, game, &ibase().egbase()); > + if (upcast(Widelands::Flag, flag, game->map().get_immovable(m_node))) { > + game->send_player_flagaction (*flag); > + } > okdialog(); > } > > @@ -863,15 +864,16 @@ > */ > void FieldActionWindow::act_attack () > { > - Game & game = ref_cast<Game, EditorGameBase>(ibase().egbase()); > - > assert(m_attack_box); > - if (upcast(Building, building, game.map().get_immovable(m_node))) > - if (m_attack_box->soldiers() > 0) > - game.send_player_enemyflagaction( > + upcast(Game, game, &ibase().egbase()); > + if (upcast(Building, building, game->map().get_immovable(m_node))) > + if (m_attack_box->soldiers() > 0) { > + upcast(InteractivePlayer const, iaplayer, &ibase()); > + game->send_player_enemyflagaction( > building->base_flag(), > - ref_cast<const InteractivePlayer, const > InteractiveBase>(ibase()).player_number(), > + iaplayer->player_number(), > m_attack_box->soldiers() /* number of soldiers */); > + } > okdialog(); > } > > @@ -933,8 +935,8 @@ > finish = true; > else if (dynamic_cast<const Widelands::Road *>(i)) > if (player->get_buildcaps(target) & > Widelands::BUILDCAPS_FLAG) { > - ref_cast<Game, EditorGameBase>(player->egbase()) > - > .send_player_build_flag(player->player_number(), target); > + upcast(Game, game, &player->egbase()); > + > game->send_player_build_flag(player->player_number(), target); > finish = true; > } > if (finish) > > === modified file 'src/wui/game_debug_ui.cc' > --- src/wui/game_debug_ui.cc 2014-10-27 10:14:10 +0000 > +++ src/wui/game_debug_ui.cc 2014-11-29 08:14:12 +0000 > @@ -133,7 +133,8 @@ > MapObjectDebugWindow(InteractiveBase & parent, Widelands::MapObject &); > > InteractiveBase & ibase() { > - return ref_cast<InteractiveBase, UI::Panel>(*get_parent()); > + upcast(InteractiveBase, result, get_parent()); > + return *result; > } > > void think() override; > @@ -212,7 +213,8 @@ > FieldDebugWindow(InteractiveBase & parent, Widelands::Coords); > > InteractiveBase & ibase() { > - return ref_cast<InteractiveBase, UI::Panel>(*get_parent()); > + upcast(InteractiveBase, result, get_parent()); > + return *result; > } > > void think() override; > @@ -273,9 +275,7 @@ > UI::Window::think(); > > // Select information about the field itself > - const Widelands::EditorGameBase & egbase = > - ref_cast<InteractiveBase const, UI::Panel const>(*get_parent()) > - .egbase(); > + const Widelands::EditorGameBase & egbase = ibase().egbase(); > { > Widelands::PlayerNumber const owner = > m_coords.field->get_owned_by(); > str += (boost::format("(%i, %i)\nheight: %u\nowner: %u\n") > > === modified file 'src/wui/game_main_menu_save_game.cc' > --- src/wui/game_main_menu_save_game.cc 2014-10-27 10:31:04 +0000 > +++ src/wui/game_main_menu_save_game.cc 2014-11-29 08:14:12 +0000 > @@ -35,7 +35,8 @@ > #include "wui/interactive_gamebase.h" > > InteractiveGameBase & GameMainMenuSaveGame::igbase() { > - return ref_cast<InteractiveGameBase, UI::Panel>(*get_parent()); > + upcast(InteractiveGameBase, result, get_parent()); > + return *result; > } > > #define WINDOW_WIDTH > 440 > @@ -262,7 +263,8 @@ > {} > > GameMainMenuSaveGame & menu_save_game() { > - return ref_cast<GameMainMenuSaveGame, UI::Panel>(*get_parent()); > + upcast(GameMainMenuSaveGame, result, get_parent()); > + return *result; > } > > > @@ -328,7 +330,8 @@ > void pressed_yes() override > { > g_fs->fs_unlink(m_filename); > - ref_cast<GameMainMenuSaveGame, > UI::Panel>(*get_parent()).fill_list(); > + upcast(GameMainMenuSaveGame, panel, get_parent()); > + panel->fill_list(); > die(); > } > > > === modified file 'src/wui/game_main_menu_save_game.h' > --- src/wui/game_main_menu_save_game.h 2014-09-10 13:03:40 +0000 > +++ src/wui/game_main_menu_save_game.h 2014-11-29 08:14:12 +0000 > @@ -20,7 +20,6 @@ > #ifndef WL_WUI_GAME_MAIN_MENU_SAVE_GAME_H > #define WL_WUI_GAME_MAIN_MENU_SAVE_GAME_H > > -#include "base/deprecated.h" > #include "base/i18n.h" > #include "ui_basic/button.h" > #include "ui_basic/editbox.h" > > === modified file 'src/wui/game_message_menu.cc' > --- src/wui/game_message_menu.cc 2014-11-22 10:18:20 +0000 > +++ src/wui/game_message_menu.cc 2014-11-29 08:14:12 +0000 > @@ -21,7 +21,7 @@ > > #include <boost/bind.hpp> > > -#include "base/deprecated.h" > +#include "base/macros.h" > #include "base/time_string.h" > #include "graphic/graphic.h" > #include "logic/instances.h" > @@ -35,7 +35,8 @@ > using Widelands::MessageQueue; > > inline InteractivePlayer & GameMessageMenu::iplayer() const { > - return ref_cast<InteractivePlayer, UI::Panel>(*get_parent()); > + upcast(InteractivePlayer, result, get_parent()); > + return *result; > } > > > > === modified file 'src/wui/game_message_menu.h' > --- src/wui/game_message_menu.h 2014-10-14 06:30:20 +0000 > +++ src/wui/game_message_menu.h 2014-11-29 08:14:12 +0000 > @@ -20,7 +20,6 @@ > #ifndef WL_WUI_GAME_MESSAGE_MENU_H > #define WL_WUI_GAME_MESSAGE_MENU_H > > -#include "base/deprecated.h" > #include "base/i18n.h" > #include "logic/message_queue.h" > #include "ui_basic/button.h" > > === modified file 'src/wui/game_objectives_menu.cc' > --- src/wui/game_objectives_menu.cc 2014-10-27 10:31:04 +0000 > +++ src/wui/game_objectives_menu.cc 2014-11-29 08:14:12 +0000 > @@ -31,7 +31,8 @@ > > > inline InteractivePlayer & GameObjectivesMenu::iplayer() const { > - return ref_cast<InteractivePlayer, UI::Panel>(*get_parent()); > + upcast(InteractivePlayer, result, get_parent()); > + return *result; > } > > > > === modified file 'src/wui/general_statistics_menu.cc' > --- src/wui/general_statistics_menu.cc 2014-11-22 11:32:06 +0000 > +++ src/wui/general_statistics_menu.cc 2014-11-29 08:14:12 +0000 > @@ -284,7 +284,8 @@ > } > > GeneralStatisticsMenu::~GeneralStatisticsMenu() { > - Game & game = ref_cast<InteractiveGameBase, > UI::Panel>(*get_parent()).game(); > + upcast(InteractiveGameBase, igbase, get_parent()); > + Game & game = igbase->game(); > if (game.is_loaded()) { > // Save informations for recreation, if window is reopened > m_my_registry->selected_information = m_selected_information; > @@ -320,9 +321,8 @@ > * The radiogroup has changed > */ > void GeneralStatisticsMenu::radiogroup_changed(int32_t const id) { > - size_t const statistics_size = > - ref_cast<InteractiveGameBase, UI::Panel>(*get_parent()).game() > - .get_general_statistics().size(); > + upcast(InteractiveGameBase, igbase, get_parent()); > + size_t const statistics_size = > igbase->game().get_general_statistics().size(); > for (uint32_t i = 0; i < statistics_size; ++i) > if (m_cbs[i]) { > m_plot.show_plot > > === modified file 'src/wui/interactive_base.cc' > --- src/wui/interactive_base.cc 2014-11-27 11:15:34 +0000 > +++ src/wui/interactive_base.cc 2014-11-29 08:14:12 +0000 > @@ -446,7 +446,8 @@ > ((fps_format % > (1000.0 / m_frametime) % (1000.0 / (m_avg_usframetime > / 1000))) > .str(), UI_FONT_SIZE_SMALL); > - dst.blit(Point(5, (is_game) ? 25 : 5), > UI::g_fh1->render(fps_text), BlendMode::UseAlpha, UI::Align_Left); > + dst.blit(Point(5, (is_game) ? 25 : 5), > + UI::g_fh1->render(fps_text), > BlendMode::UseAlpha, UI::Align_Left); > } > } > > > === modified file 'src/wui/interactive_gamebase.cc' > --- src/wui/interactive_gamebase.cc 2014-09-20 09:37:47 +0000 > +++ src/wui/interactive_gamebase.cc 2014-11-29 08:14:12 +0000 > @@ -53,7 +53,8 @@ > > Widelands::Game & InteractiveGameBase:: game() const > { > - return ref_cast<Widelands::Game, Widelands::EditorGameBase>(egbase()); > + upcast(Widelands::Game, result, &egbase()); > + return *result; > } > > void InteractiveGameBase::set_chat_provider(ChatProvider & chat) > > === modified file 'src/wui/interactive_player.cc' > --- src/wui/interactive_player.cc 2014-11-23 14:34:38 +0000 > +++ src/wui/interactive_player.cc 2014-11-29 08:14:12 +0000 > @@ -304,8 +304,8 @@ > (Widelands::MessageId const id, const Widelands::Message & message) > { > m_message_menu.create(); > - ref_cast<GameMessageMenu, UI::UniqueWindow>(*m_message_menu.window) > - .show_new_message(id, message); > + upcast(GameMessageMenu, menu, m_message_menu.window); > + menu->show_new_message(id, message); > } > > > @@ -470,10 +470,9 @@ > for (uint16_t x = 0; x < extent.w; ++x) > overlay_manager.recalc_field_overlays > (map.get_fcoords(Widelands::Coords(x, y))); > - if > - (UI::UniqueWindow * const building_statistics_window = > - m_mainm_windows.building_stats.window) > - ref_cast<BuildingStatisticsMenu, UI::UniqueWindow> > - (*building_statistics_window) > - .update(); > + if (UI::UniqueWindow * const building_statistics_window = > + m_mainm_windows.building_stats.window) { > + upcast(BuildingStatisticsMenu, menu, > building_statistics_window); > + menu->update(); > + } > } > > === modified file 'src/wui/interactive_spectator.cc' > --- src/wui/interactive_spectator.cc 2014-11-23 14:34:38 +0000 > +++ src/wui/interactive_spectator.cc 2014-11-29 08:14:12 +0000 > @@ -275,8 +275,8 @@ > if (!m_chat.window) > GameChatMenu::create_chat_console(this, m_chat, > *m_chatProvider); > > - ref_cast<GameChatMenu, UI::UniqueWindow>(*m_chat.window) > - .enter_chat_message(); > + // NOCOM(#gunchleoc): Compiler did not like upcast. Is > dynamic_cast OK? Yes, I think it is preferable in all places where you are sure about what you are casting into. dynamic_cast is a code smell in the same sense that typeid is - it shows that your design is not quite right if you have to switch on types at runtime. But this is only about getting rid of our own invented stuff. > + > dynamic_cast<GameChatMenu*>(m_chat.window)->enter_chat_message(); > return true; > > default: > > === modified file 'src/wui/militarysitewindow.cc' > --- src/wui/militarysitewindow.cc 2014-09-10 13:03:40 +0000 > +++ src/wui/militarysitewindow.cc 2014-11-29 08:14:12 +0000 > @@ -38,7 +38,8 @@ > UI::Window * & registry); > > MilitarySite & militarysite() { > - return ref_cast<MilitarySite, Widelands::Building>(building()); > + upcast(MilitarySite, result, &building()); > + return *result; > } > > protected: > > === modified file 'src/wui/minimap.cc' > --- src/wui/minimap.cc 2014-11-24 07:10:03 +0000 > +++ src/wui/minimap.cc 2014-11-29 08:14:12 +0000 > @@ -98,7 +98,8 @@ > > m_ibase.egbase().map().normalize_coords(c); > > - ref_cast<MiniMap, UI::Panel>(*get_parent()).warpview(c.x * > TRIANGLE_WIDTH, c.y * TRIANGLE_HEIGHT); > + upcast(MiniMap, minimap, get_parent()); > + minimap->warpview(c.x * TRIANGLE_WIDTH, c.y * TRIANGLE_HEIGHT); > > return true; > } > > === modified file 'src/wui/productionsitewindow.h' > --- src/wui/productionsitewindow.h 2014-09-10 13:03:40 +0000 > +++ src/wui/productionsitewindow.h 2014-11-29 08:14:12 +0000 > @@ -31,7 +31,8 @@ > UI::Window * & registry); > > Widelands::ProductionSite & productionsite() { > - return ref_cast<Widelands::ProductionSite, > Widelands::Building>(building()); > + upcast(Widelands::ProductionSite, result, &building()); > + return *result; > } > void update_worker_table(); > protected: > > === modified file 'src/wui/shipwindow.cc' > --- src/wui/shipwindow.cc 2014-11-22 10:18:20 +0000 > +++ src/wui/shipwindow.cc 2014-11-29 08:14:12 +0000 > @@ -295,7 +295,8 @@ > m_igbase.game().send_player_sink_ship(m_ship); > } > else { > - show_ship_sink_confirm(ref_cast<InteractivePlayer, > InteractiveGameBase>(m_igbase), m_ship); > + upcast(InteractivePlayer, iaplayer, &m_igbase); > + show_ship_sink_confirm(*iaplayer, m_ship); > } > } > > @@ -306,8 +307,8 @@ > m_igbase.game().send_player_cancel_expedition_ship(m_ship); > } > else { > - show_ship_cancel_expedition_confirm > - (ref_cast<InteractivePlayer, > InteractiveGameBase>(m_igbase), m_ship); > + upcast(InteractivePlayer, iaplayer, &m_igbase); > + show_ship_cancel_expedition_confirm(*iaplayer, m_ship); > } > } > > > === modified file 'src/wui/soldierlist.cc' > --- src/wui/soldierlist.cc 2014-11-22 10:18:20 +0000 > +++ src/wui/soldierlist.cc 2014-11-29 08:14:12 +0000 > @@ -22,7 +22,6 @@ > #include <boost/bind.hpp> > #include <boost/format.hpp> > > -#include "base/deprecated.h" > #include "base/macros.h" > #include "graphic/font.h" > #include "graphic/graphic.h" > > === modified file 'src/wui/trainingsitewindow.cc' > --- src/wui/trainingsitewindow.cc 2014-09-10 13:03:40 +0000 > +++ src/wui/trainingsitewindow.cc 2014-11-29 08:14:12 +0000 > @@ -37,7 +37,8 @@ > (InteractiveGameBase & parent, TrainingSite &, UI::Window * & > registry); > > TrainingSite & trainingsite() { > - return ref_cast<TrainingSite, Widelands::Building>(building()); > + upcast(TrainingSite, result, &building()); > + return *result; > } > > protected: > > === modified file 'src/wui/transport_ui.cc' > --- src/wui/transport_ui.cc 2014-11-22 11:32:06 +0000 > +++ src/wui/transport_ui.cc 2014-11-29 08:14:12 +0000 > @@ -159,10 +159,10 @@ > > m_economy.ware_target_quantity(id); > if (1 < tq.permanent) { > Widelands::Player & player = > m_economy.owner(); > - Game & game = ref_cast<Game, > EditorGameBase>(player.egbase()); > - game.send_player_command > + upcast(Game, game, > &player.egbase()); > + game->send_player_command > (*new > Widelands::CmdSetWareTargetQuantity > - > (game.get_gametime(), player.player_number(), > + > (game->get_gametime(), player.player_number(), > > player.get_economy_number(&m_economy), id, > tq.permanent - > 1)); > } > @@ -181,10 +181,10 @@ > const Economy::TargetQuantity & tq = > > m_economy.ware_target_quantity(id); > Widelands::Player & player = > m_economy.owner(); > - Game & game = ref_cast<Game, > EditorGameBase>(player.egbase()); > - game.send_player_command > + upcast(Game, game, &player.egbase()); > + game->send_player_command > (*new > Widelands::CmdSetWareTargetQuantity > - (game.get_gametime(), > player.player_number(), > + (game->get_gametime(), > player.player_number(), > > player.get_economy_number(&m_economy), id, > tq.permanent + 1)); > } > @@ -200,10 +200,10 @@ > { > if (m_display.ware_selected(id)) { > Widelands::Player & player = > m_economy.owner(); > - Game & game = ref_cast<Game, > EditorGameBase>(player.egbase()); > - game.send_player_command > + upcast(Game, game, &player.egbase()); > + game->send_player_command > (*new > Widelands::CmdResetWareTargetQuantity > - (game.get_gametime(), > player.player_number(), > + (game->get_gametime(), > player.player_number(), > > player.get_economy_number(&m_economy), id)); > } > } > @@ -256,10 +256,10 @@ > > m_economy.worker_target_quantity(id); > if (1 < tq.permanent) { > Widelands::Player & player = > m_economy.owner(); > - Game & game = ref_cast<Game, > EditorGameBase>(player.egbase()); > - game.send_player_command > + upcast(Game, game, > &player.egbase()); > + game->send_player_command > (*new > Widelands::CmdSetWorkerTargetQuantity > - > (game.get_gametime(), player.player_number(), > + > (game->get_gametime(), player.player_number(), > > player.get_economy_number(&m_economy), id, > tq.permanent - > 1)); > } > @@ -278,10 +278,10 @@ > const Economy::TargetQuantity & tq = > > m_economy.worker_target_quantity(id); > Widelands::Player & player = > m_economy.owner(); > - Game & game = ref_cast<Game, > EditorGameBase>(player.egbase()); > - game.send_player_command > + upcast(Game, game, &player.egbase()); > + game->send_player_command > (*new > Widelands::CmdSetWorkerTargetQuantity > - (game.get_gametime(), > player.player_number(), > + (game->get_gametime(), > player.player_number(), > > player.get_economy_number(&m_economy), id, > tq.permanent + 1)); > } > @@ -296,10 +296,10 @@ > { > if (m_display.ware_selected(id)) { > Widelands::Player & player = > m_economy.owner(); > - Game & game = ref_cast<Game, > EditorGameBase>(player.egbase()); > - game.send_player_command > + upcast(Game, game, &player.egbase()); > + game->send_player_command > (*new > Widelands::CmdResetWorkerTargetQuantity > - (game.get_gametime(), > player.player_number(), > + (game->get_gametime(), > player.player_number(), > > player.get_economy_number(&m_economy), id)); > } > } > @@ -313,11 +313,10 @@ > // users can register for change updates. The registry should be > // moved to InteractivePlayer or some other UI component. > void Economy::show_options_window() { > - if (m_optionswindow_registry.window) > + if (m_optionswindow_registry.window) { > m_optionswindow_registry.window->move_to_top(); > - else > - new EconomyOptionsWindow > - (ref_cast<InteractiveGameBase, InteractiveBase> > - (*owner().egbase().get_ibase()), > - *this); > + } else { > + upcast(InteractiveGameBase, igbase, > owner().egbase().get_ibase()); > + new EconomyOptionsWindow(*igbase, *this); > + } > } > > === modified file 'src/wui/warehousewindow.cc' > --- src/wui/warehousewindow.cc 2014-09-10 13:03:40 +0000 > +++ src/wui/warehousewindow.cc 2014-11-29 08:14:12 +0000 > @@ -176,7 +176,8 @@ > (InteractiveGameBase & parent, Warehouse &, UI::Window * & > registry); > > Warehouse & warehouse() { > - return ref_cast<Warehouse, Widelands::Building>(building()); > + upcast(Warehouse, result, &building()); > + return *result; > } > }; > > > === modified file 'src/wui/watchwindow.cc' > --- src/wui/watchwindow.cc 2014-11-22 11:32:06 +0000 > +++ src/wui/watchwindow.cc 2014-11-29 08:14:12 +0000 > @@ -56,7 +56,8 @@ > ~WatchWindow(); > > Widelands::Game & game() const { > - return ref_cast<InteractiveGameBase, > UI::Panel>(*get_parent()).game(); > + upcast(InteractiveGameBase, igbase, get_parent()); > + return igbase->game(); > } > > boost::signals2::signal<void (Point)> warp_mainview; > -- https://code.launchpad.net/~widelands-dev/widelands/delete_deprecated/+merge/243174 Your team Widelands Developers is subscribed to branch lp:~widelands-dev/widelands/delete_deprecated. _______________________________________________ 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