Skip to content
Snippets Groups Projects
Select Git revision
  • c85e6168aba78adec1a92b20ef5a64511630228f
  • master default protected
  • feature/refactor
  • 4.24
  • develop
  • Rendering
  • temp-optix-6
7 results

OptiX.uplugin

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;
    
            default:
                break;
            }
        }
    
        m_money += 1000 * underControl;
    
        m_activeTurn = true;
    }
    
    void Player::endTurn(std::unordered_map<int, std::unique_ptr<Unit>>& lvUnits)
    {
        std::cout << "Ending turn for player with faction: " << static_cast<int>(m_faction) << "\n";
        for (auto& [id, unit] : lvUnits)
        {
            Unit& unitRef = *unit;
            if (unitRef.getFaction() == m_faction)
            {
                unitRef.setState(UnitState::UNAVAILABLE);
                unitRef.setMoved(true);
            }
        }
        m_activeTurn = false;
    }
    
    Faction Player::getFaction()
    {
        return m_faction;
    }
    
    int Player::getMoney()
    {
        return m_money;
    }
    
    void Player::spendMoney(int toSpend)
    {
        m_money -= toSpend;
    }
    } // namespace advanced_wars