/
RedResistance
/
wonders
Обзор
Документация
Войти
/
RedResistance
/
wonders
Код
Запросы
2
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
player.cpp
115 строк
3 KB
Domovoi-Kuzma
рефактор
12 июл 2026, 12:44
12 июл 2026, 12:44
8d5786d
Код
Авторство
О чём код?
#include <iostream> #include "player.h" #include "card.h" void player::append_tradable_variant(const CostVariants& new_variants) { tradable = tradable.cross_product(new_variants); total = total.cross_product(new_variants); } void player::append_untradable_variant(const CostVariants& new_variants) { tradable = tradable.cross_product(new_variants); } void player::modify_money(Money delta) { available_money += delta; } Money player::get_money() const { return available_money; } void player::set_discount(Direction direction_, Resource good_, Money new_price) { if (direction_ == Direction::Left) { resourses_cost_left[good_] = new_price; } else { resourses_cost_right[good_] = new_price; } } Money player::get_neighbor_price(Direction direction_, Resource good_) const { if (direction_ == Direction::Left) { return resourses_cost_left[good_]; } else { return resourses_cost_right[good_]; } } int player::count_color(Color target_color) const { int count = 0; for (const auto& card : buildings) { if (card->get_color() == target_color) { count++; } } return count; } void player::select_building(std::unique_ptr<Card> card) { selected_building = std::move(card); } CardViewData player::get_selected_building_view_data() const { return selected_building->get_view_data(); } bool player::is_selected_bonus_buildable() const { if (!selected_building) return false; for (auto& pb : buildings) { if (pb->is_bonus_of(*selected_building)) return true; } return false; } bool player::is_selected_duplicated() const { if (!selected_building) return false; for (auto& pb : buildings) { if (pb->is_same(*selected_building)) return true; } return false; } const CostVariants& player::get_tradable_variants() const { return tradable; } const CostVariants& player::get_total_variants() const { return total; } void player::build_building(manager& mngr) { auto& card = *selected_building; buildings.push_back(std::move(selected_building)); card.onBuild(*this, mngr); } PlayerStateView player::get_state_view() const { PlayerStateView all_view_data; all_view_data.name = name; all_view_data.money = get_money(); for (auto& bld : buildings) { all_view_data.buildings.emplace_back(bld->get_view_data()); } return all_view_data; } void player::createConflict(int epoch, const player* opponent) { military_conflict conflict; conflict.epoch = epoch; conflict.opponent = opponent; conflict.my_cards = opponent->getMilitaryPower(); conflict.his_cards = opponent->getMilitaryPower(); this->conflicts.push_back(conflict); } std::vector<military_power> player::getMilitaryPower() const { std::vector<military_power> retval; for (auto& bld : buildings) { //non military buildings always zero //so are not included in detailizaation if (bld->getMilitaryUnits()) { retval.push_back({ bld->getMilitaryUnits(), bld.get() }); } } return retval; }