Skip to content
Snippets Groups Projects
Select Git revision
  • b29d12113fa6eee283590c05f28100882627dc8e
  • main default protected
  • leveleditor
  • david-author
  • clang-tidy-cleanup
  • architecture-refactoring
  • cleanUpMenus
  • doxygen-cleanup
  • project-structure-refactoring
  • interpolation
  • buildingFeatures
  • win_end_screen
  • helpMenu
  • leveleditor-placement
  • text-rendering
  • updated_unit_contextmenu
  • level-from-commandline
  • unit_contextmenu
  • player
  • engine-scaling
  • clang-tidy
21 results

Player.cpp

Blame
  • Player.cpp 2.31 KiB
    /**
     * Player.cpp
     *
     * @author Frederik Keens
     */
    
    #include "Player.hpp"
    #include <iostream>
    
    namespace advanced_wars
    {
    
    Player::Player(int money, Faction faction)
        : m_money(money), m_alive(true), m_activeTurn(false), m_faction(faction)
    {
    }
    
    Player::~Player() {}
    
    void Player::startTurn(
        std::unordered_map<int, std::unique_ptr<Unit>>& lvUnits,
        std::unordered_map<int, Building>&              lvBuildings)
    {
        for (auto& [id, unit] : lvUnits)
        {
            Unit& unitRef = *unit;
            if (unitRef.getFaction() == m_faction)
            {
                unitRef.setState(UnitState::IDLE);
                unitRef.setMoved(false);
            }
        }
    
        int underControl = 0;
    
        for (auto& [id, building] : lvBuildings)
        {
            switch (m_faction)
            {
            case Faction::URED:
                if (building.getFaction() == Faction::URED)
                {
                    underControl++;
                }
                break;
            case Faction::UBLUE:
                if (building.getFaction() == Faction::UBLUE)
                {
                    underControl++;
                }
                break;
            case Faction::UYELLOW:
                if (building.getFaction() == Faction::UYELLOW)
                {
                    underControl++;
                }
                break;
            case Faction::UGREEN:
                if (building.getFaction() == Faction::UGREEN)
                {
                    underControl++;
                }
                break;
            case Faction::UPURPLE:
                if (building.getFaction() == Faction::UPURPLE)
                {
                    underControl++;
                }
                break;