Skip to content

Commit

Permalink
Single unit instances work with whiteboard.
Browse files Browse the repository at this point in the history
Here the changes to get whiteboard to work are mostly cosmetic, the
right cost for each unit is displayed on the unit in question.  This
is mostly for peace of mind as the user looks at the screen they don't
get confused.  The proper gold is also taken for each recall and
replaced for each canceled/undone recall while in whiteboard.
  • Loading branch information
Aishiko committed Mar 17, 2014
1 parent d4896db commit 1469c39
Showing 1 changed file with 17 additions and 3 deletions.
20 changes: 17 additions & 3 deletions src/whiteboard/recall.cpp
Expand Up @@ -116,6 +116,9 @@ void recall::execute(bool& success, bool& complete)
temporary_unit_hider const raii(*fake_unit_);
//Give back the spent gold so we don't get "not enough gold" message
int cost = current_team.recall_cost();
if (temp_unit_->recall_cost() > -1) {
cost=temp_unit_->recall_cost();
}
current_team.get_side_actions()->change_gold_spent_by(-cost);
bool const result = actions::recall_unit(temp_unit_->id(), current_team, recall_hex_, map_location::null_location);
if (!result) {
Expand All @@ -137,15 +140,18 @@ void recall::apply_temp_modifier(unit_map& unit_map)
std::vector<unit>::iterator it = find_if_matches_id(recalls, temp_unit_->id());
assert(it != recalls.end());
recalls.erase(it);

// Temporarily insert unit into unit_map
//unit map takes ownership of temp_unit
unit_map.insert(temp_unit_.release());

//Add cost to money spent on recruits.
int cost = resources::teams->at(team_index()).recall_cost();
resources::teams->at(team_index()).get_side_actions()->change_gold_spent_by(cost);
if (it->recall_cost() > -1) {
cost = it->recall_cost();
}

resources::teams->at(team_index()).get_side_actions()->change_gold_spent_by(cost);
// Update gold in top bar
resources::screen->invalidate_game_status();
}
Expand All @@ -167,7 +173,15 @@ void recall::draw_hex(map_location const& hex)
const double y_offset = 0.7;
//position 0,0 in the hex is the upper left corner
std::stringstream number_text;
number_text << utils::unicode_minus << resources::teams->at(team_index()).recall_cost();
// number_text << utils::unicode_minus << resources::teams->at(team_index()).recall_cost();
unit &it = *get_unit();
int cost = statistics::un_recall_unit_cost(it);
if (cost < 0) {
number_text << utils::unicode_minus << resources::teams->at(team_index()).recall_cost();
}
else {
number_text << utils::unicode_minus << cost;
}
size_t font_size = 16;
SDL_Color color; color.r = 255; color.g = 0; color.b = 0; //red
resources::screen->draw_text_in_hex(hex, display::LAYER_ACTIONS_NUMBERING,
Expand Down

0 comments on commit 1469c39

Please sign in to comment.