Beispiel #1
0
        //renew the detail of the allies
        private void setPlayersData()
        {
            allies            = new Allies();
            playersHeroName   = new Dictionary <String, String>();
            playersHeroHPInfo = new Dictionary <String, String>();
            int index = 0;

            foreach (var client in clients)
            {
                String name = client.Key;
                int    heroID;
                String heroName   = "Selecting Hero...";
                String heroHPInfo = "";
                if (players.Keys.Contains(client.Key))
                {
                    heroID     = playerSelectedHero[name];
                    heroName   = heroInfo.Heroes[heroID].heroName;
                    heroHPInfo = selectedHeroHP[name] + " / " + heroInfo.Heroes[heroID].healthPoints;
                }
                Ally ally = new Ally(name, heroName, heroHPInfo);
                allies.alliesList.Insert(index, ally);
                playersHeroName.Add(name, heroName);
                playersHeroHPInfo.Add(name, heroHPInfo);
                index++;
            }
        }
        //calculate player round
        public Boolean calPlayerRound(HeroInfo heroInfo, Allies allies, Boss boss)
        {
            int playersTotalDamage = 0;

            foreach (var player in playerSelectedHero)
            {
                String name           = player.Key;
                int    heroID         = playerSelectedHero[name];
                int    heroMaxHP      = heroInfo.Heroes[heroID].healthPoints;
                int    abilityID      = playerSelectedAbility[name];
                int    selectTargetID = playerSelectedTarget[name];
                if (abilityID != -1)
                {
                    int abilityValue       = heroInfo.Heroes[heroID].abilityList[abilityID].value;
                    int abilityActualValue = calHeroActualValue(abilityValue);

                    String abilityType   = heroInfo.Heroes[heroID].abilityList[abilityID].type;
                    String abilityTarget = heroInfo.Heroes[heroID].abilityList[abilityID].target;

                    //if Damage boss
                    if (abilityType == "D")
                    {
                        playersTotalDamage += abilityActualValue;
                        playersDamage.Add(player.Key, abilityActualValue);
                    }
                    else
                    {
                        //if Heal a single ally
                        if (abilityTarget == "S")
                        {
                            if (selectTargetID != -1)
                            {
                                String target = allies.alliesList[selectTargetID].name;
                                if (alivesList.Contains(target))
                                {
                                    heal(target, heroInfo, abilityActualValue);
                                }
                            }
                        }
                        else//if  heal all allies
                        {
                            foreach (var alive in alivesList)
                            {
                                heal(alive, heroInfo, abilityActualValue);
                            }
                        }
                    }
                }
            }
            //calculate current HP of boss
            if (playersTotalDamage > boss.defence)
            {
                bossCurrentHP -= (playersTotalDamage - boss.defence);
            }

            //if boss is died
            if (bossCurrentHP <= 0)
            {
                return(true);
            }

            return(false);
        }