Ejemplo n.º 1
0
    public void TestAttacksAllOtherArmies()
    {
        var manager   = new ArmyManager();
        var attacking = new Player(manager, new Color(0, 0, 0));

        attacking.AddArmy(new Army(HEALTH), new Pos(0, 0));
        var defending = new Player(manager, new Color(1, 1, 1));

        defending.AddArmy(new Army(HEALTH), new Pos(1, 1));
        defending.AddArmy(new Army(HEALTH), new Pos(2, 2));
        var defending2 = new Player(manager, new Color(2, 2, 2));

        defending2.AddArmy(new Army(HEALTH), new Pos(1, 3));
        var players = new List <Player>();

        players.Add(attacking);
        players.Add(defending);
        players.Add(defending2);
        var combat = new CombatResolver(manager, 0);

        combat.Engage(attacking, players);

        Assert.AreEqual(1, attacking.ArmyList.Count);
        Assert.AreEqual(2, defending.ArmyList.Count); // NOTE: The maximum damage inflicted < defender's health, so it should always survive.
        Assert.AreEqual(1, defending2.ArmyList.Count);
        Assert.AreEqual(HEALTH, attacking.ArmyList[0].Health);
        Assert.IsTrue(defending.ArmyList[0].Health < HEALTH); // Not strictly true, but true for this random seed.
        Assert.IsTrue(defending.ArmyList[1].Health < HEALTH);
        Assert.IsTrue(defending2.ArmyList[0].Health < HEALTH);
    }
Ejemplo n.º 2
0
    public void Die()
    {
        // play death noise
        SoundManager.Get().PlaySoundEffect(SoundManager.SoundEffect.Death);

        // play death poof animation

        // If it's a castle, check to see they win
        if (TroopType == ArmyManager.Troop.Castle)
        {
            ArmyManager.Get().CastleDeath(this);
        }
        // if this is an enemy
        else if (!isFriendly)
        {
            Player.Get().AddCharisma(1, TroopType);
        }

        if (this is Player)
        {
            // TODO: Game over
            SceneManager.LoadScene("Loss", LoadSceneMode.Single);
        }

        // Inform the spawner we came from that we perished!
        if (gSpawner != null)
        {
            this.gSpawner.OnEntityDeath(this);
        }

        Destroy(this.gameObject);
    }
Ejemplo n.º 3
0
 public void Start()
 {
     currentSpacing = tightSpacing;
     m_instance     = this;
     cursorSprite   = cursor.GetComponent <SpriteRenderer>();
     StartTime      = (int)Time.time;
 }
Ejemplo n.º 4
0
    public void TestUndoCycle() // Tests a particularly insidious case of UndoMove wherein one Undo forces another in a cycle.
    {
        const int NumArmies = 5;
        var       manager   = new ArmyManager();
        var       player    = new Player(manager, new Color(0, 0, 0));
        var       armies    = new List <Army>();

        for (int i = 0; i < NumArmies; i++)
        {
            var army = new Army(100);
            armies.Add(army);
            player.AddArmy(army, new Pos(i, i));
        }

        for (int i = NumArmies - 1; i >= 0; i--)
        {
            manager.MoveArmy(armies[i], new Pos(i + 1, i + 1));
        }

        manager.MoveArmy(armies[NumArmies - 1], new Pos(0, 0));
        manager.UndoMove(armies[NumArmies - 1]);
        for (int i = 0; i < NumArmies; i++)
        {
            Assert.AreEqual(new Pos(i, i), manager.ArmyPosition(armies[i]));
        }
    }
Ejemplo n.º 5
0
 public Player(ArmyManager man, Color c)
 {
     ArmyList  = new List <Army>();
     Color     = c;
     Resources = new ResourceBag();
     manager   = man;
 }
Ejemplo n.º 6
0
    // Start is called before the first frame update
    void Start()
    {
        UpdateMode();
        PoliticalCoordsMenuBackground = GameObject.Find("PoliticalCoordsMenuBackground");
        PoliticalCoordsMenuBackground.SetActive(false);
        PauseMenu = GameObject.Find("PauseMenu");
        PauseMenu.SetActive(false);
        ConsoleInput = GameObject.Find("Console");
        ConsoleInput.SetActive(false);
        GameModeMenu = GameObject.Find("GameModeMenu");
        EconomicMenu = GameObject.Find("Economic Menu");
        EconomicMenu.SetActive(false);
        ConstructionMenu = GameObject.Find("ConstructionMenu");
        ConstructionMenu.SetActive(false);
        ArmyMenu = GameObject.Find("ArmyMenu");
        ArmyMenu.SetActive(false);
        DiplomacyMenu = GameObject.Find("DiplomacyMenu");
        DiplomacyMenu.SetActive(false);
        SeparatismMenu = GameObject.Find("SeparatismMenu");
        SeparatismMenu.SetActive(false);
        EndGameMenu = GameObject.Find("EndGameMenu");
        EndGameMenu.SetActive(false);


        Armymanager      = ArmyMenu.GetComponent <ArmyManager>();
        diplomacyManager = DiplomacyMenu.GetComponent <DiplomacyManager>();

        scene_name = SceneManager.GetActiveScene().name;

        EconomicModeMinColor          = new Color(95, 20, 198);
        EconomicModeMaxColor          = new Color(0, 255, 211);
        ArmyModeMinColor              = new Color(22, 104, 122);
        ArmyModeMaxColor              = new Color(83, 98, 20);
        ConstructionModeMinColor      = new Color(37, 201, 195);
        ConstructionModeMaxColor      = new Color(201, 37, 181);
        DiplomacyModeWorstColor       = new Color(114, 63, 0);
        DiplomacyModeBestColor        = new Color(59, 114, 0);
        DiplomacyModeEnemyColor       = new Color(114, 0, 0);
        DiplomacyModeAllyColor        = new Color(0, 114, 101);
        DiplomacyModeProtagonistColor = new Color(12, 0, 146);
        SeparatismModeMinColor        = new Color(0, 0, 208);
        SeparatismModeMaxColor        = new Color(208, 0, 0);
        NatresModeMinColor            = new Color(185, 255, 113);
        NatresModeMaxColor            = new Color(255, 173, 113);
        EduModeMinColor     = new Color(251, 243, 146);
        EduModeMaxColor     = new Color(127, 162, 255);
        ClimateModeMinColor = new Color(50, 200, 250);
        ClimateModeMaxColor = new Color(50, 250, 63);

        Consequentor = GameObject.Find("Consequentor").GetComponent <consequentor>();

        UpdateStep(); UpdateBalance(); UpdateActions();
        foreach (GameObject province in list_of_provinces)
        {
            province.GetComponent <Renderer>().material.SetColor("_EmissionColor", province.GetComponent <provincegen>().state.GetComponent <stategen>().state_color);
            province.GetComponent <Renderer>().material.EnableKeyword("__EMISSION");
        }
    }
Ejemplo n.º 7
0
 public Game()
 {
     GameWorld          = new World("maps.csv");
     Manager            = new ArmyManager();
     scorer             = new Scorer();
     combat             = new CombatResolver(Manager);
     Players            = new List <Player>();
     CurrentPlayerIndex = 0;
 }
Ejemplo n.º 8
0
    public void Attack()
    {
        canAttack      = false;
        lastAttackTime = Time.time;
        Attack attack = GameObject.Instantiate(this.AttackPrefab, transform).GetComponent <Attack>();

        attack.FriendlyAttack = this.isFriendly;
        attack.direction      = this.isFriendly ? ArmyManager.Get().cursorDirection: direction;
        attack.facing         = this.isFriendly ? ArmyManager.Get().cursorDirection : facing;
    }
Ejemplo n.º 9
0
    public void TestInitialAdd()
    {
        var manager = new ArmyManager();
        var player  = new Player(manager, new Color(0, 0, 0));

        player.AddArmy(new Army(100), new Pos(1, 1));

        Assert.AreEqual(1, player.ArmyList.Count);
        Assert.AreEqual(new Pos(1, 1), manager.ArmyPosition(player.ArmyList[0]));
        Assert.AreEqual(player.ArmyList[0], manager.ArmyAt(new Pos(1, 1)));
    }
Ejemplo n.º 10
0
 public void AddCharisma(int amount, ArmyManager.Troop type)
 {
     gCharisma += amount;
     if (gCharisma >= Charisma)
     {
         // we have enough to recruit!
         gCharisma -= Charisma;
         ArmyManager.Get().AddUnit(type);
         Speak(RecruitMessages[Random.Range(0, RecruitMessages.Length)], 1.5f);
     }
     BarCharisma.SetPercent(gCharisma / Charisma);
 }
Ejemplo n.º 11
0
    public void TestUndoParam(Pos source, Pos dest)
    {
        var manager = new ArmyManager();
        var player  = new Player(manager, new Color(0, 0, 0));
        var army    = new Army(100);

        player.AddArmy(army, source);
        manager.MoveArmy(army, dest);
        manager.UndoMove(army);

        Assert.AreSame(army, manager.ArmyAt(source));
        Assert.AreEqual(source, manager.ArmyPosition(army));
    }
Ejemplo n.º 12
0
    public void TestMovementParam(Pos source, Pos dest)
    {
        var manager = new ArmyManager();
        var player  = new Player(manager, new Color(0, 0, 0));
        var army    = new Army(100);

        player.AddArmy(army, source);
        manager.MoveArmy(army, dest);

        Assert.IsTrue((manager.ArmyAt(source) != null) == source.Equals(dest)); // source != dest implies that army will no longer be at source.
        Assert.AreSame(army, manager.ArmyAt(dest));
        Assert.AreEqual(dest, manager.ArmyPosition(army));
    }
Ejemplo n.º 13
0
    public void TestTrivial()
    {
        var manager = new ArmyManager();
        var player  = new Player(manager, new Color(0, 0, 0));
        var players = new List <Player>();

        players.Add(player);
        var combat = new CombatResolver(manager);

        combat.Engage(player, players);

        // We mostly care that this test terminated without error and effectively became almost a no-op.  For the sake of argument, we'll assert no new armies were created.
        Assert.AreEqual(0, player.ArmyList.Count);
    }
Ejemplo n.º 14
0
    public void TestDoesNotAttackOwnArmies()
    {
        var manager = new ArmyManager();
        var player  = new Player(manager, new Color(0, 0, 0));

        player.AddArmy(new Army(HEALTH), new Pos(0, 0));
        player.AddArmy(new Army(HEALTH), new Pos(1, 1));
        var players = new List <Player>();

        players.Add(player);
        players.Add(new Player(manager, new Color(1, 1, 1)));
        var combat = new CombatResolver(manager, 0);

        combat.Engage(player, players);

        Assert.AreEqual(2, player.ArmyList.Count);
        Assert.AreEqual(HEALTH, player.ArmyList[0].Health);
        Assert.AreEqual(HEALTH, player.ArmyList[1].Health);
    }
Ejemplo n.º 15
0
    public void TestArmiesDie()
    {
        var manager   = new ArmyManager();
        var attacking = new Player(manager, new Color(0, 0, 0));

        attacking.AddArmy(new Army(HEALTH), new Pos(0, 0));
        var defending = new Player(manager, new Color(1, 1, 1));

        defending.AddArmy(new Army(0), new Pos(1, 1));
        var players = new List <Player>();

        players.Add(attacking);
        players.Add(defending);
        var combat = new CombatResolver(manager, 0);

        combat.Engage(attacking, players);

        Assert.AreEqual(1, attacking.ArmyList.Count);
        Assert.AreEqual(0, defending.ArmyList.Count);
        Assert.AreEqual(HEALTH, attacking.ArmyList[0].Health);
    }
Ejemplo n.º 16
0
 private void Start()
 {
     m_armyManager = FindObjectOfType <ArmyManager>();
 }
Ejemplo n.º 17
0
    /*/// <summary>
     * /// 地图点控制类集合
     * /// </summary>
     * public static List<MapPointCtrl> mapPointCtrls;*/

    void Awake()
    {
        Instance = this;
        //mapPointCtrls = new List<MapPointCtrl>();
    }
Ejemplo n.º 18
0
 void Start()
 {
     inst = this;
     MessageDispatcher.AddListener("SAVE_LoadGame", LoadArmies);
     MessageDispatcher.AddListener("SAVE_UnloadGame", UnloadArmies);
 }
Ejemplo n.º 19
0
 public CombatResolver(ArmyManager armies, int seed)
 {
     this.armies = armies;
     generator   = new Random(seed);
 }
Ejemplo n.º 20
0
 public CombatResolver(ArmyManager armies)
 {
     this.armies = armies;
     generator   = new Random();
 }
Ejemplo n.º 21
0
 private void Start()
 {
     ArmyMang = FindObjectOfType <ArmyManager>();
     BuyUnitsCanvas.SetActive(false);
 }