Example #1
0
    public int CompareTo(Mission missionB)
    {
        Mission missionA = this;

        int timeA = missionA.missionEndTime;
        int timeB = missionB.missionEndTime;

        int endTime = Math.Max(timeA, timeB);

        MissionReward rewardA = missionA.reward;
        MissionReward rewardB = missionB.reward;

        //Console.Error.WriteLine(missionA.factory.id + "-" + missionB.factory.id + ": " +
        //    rewardA.combinedReward + "-" + rewardB.combinedReward);

        /*foreach (var mission in missionA.prereqs)
         * {
         *  if (missionB == mission)
         *  {
         *      return rewardA.combinedReward.CompareTo(
         *          rewardA.combinedReward + rewardB.combinedReward);
         *  }
         * }
         *
         * foreach (var mission in missionB.prereqs)
         * {
         *  if (missionA == mission)
         *  {
         *      return (rewardA.combinedReward + rewardB.combinedReward).CompareTo(rewardB);
         *  }
         * }*/

        return(rewardA.combinedRewardWeighted.CompareTo(rewardB.combinedRewardWeighted));
    }
Example #2
0
        public MissionRewardViewModel(MissionReward missionReward, IItemStore itemStore)
        {
            this.missionReward = missionReward;

            if (missionReward.CountedItems != null)
            {
                var countedItem = missionReward.CountedItems[0];
                if (countedItem.ItemCount >= 2)
                {
                    ItemCount = countedItem.ItemCount;
                }
                Item       = itemStore.GetItemById(countedItem.ItemType);
                Visibility = Visibility.Visible;
            }
            else if (missionReward.Items != null)
            {
                Item       = itemStore.GetItemById(missionReward.Items[0]);
                ItemCount  = 1;
                Visibility = Visibility.Visible;
            }
            else
            {
                Visibility = Visibility.Collapsed;
            }

            CreditVisibility = (Credits > 0) ? Visibility.Visible : Visibility.Collapsed;
        }
            public void AddReward(string name, int amount)
            {
                MissionReward reward;

                if (!Rewards.TryGetValue(name, out reward))
                {
                    reward = new MissionReward(name);
                    Rewards.Add(name, reward);
                }
                reward.Add(amount);
            }
Example #4
0
    public MissionReward CaculateAllMissionReward()
    {
        MissionReward reward = new MissionReward();

        foreach (var missions in m_MissionRewardMap)
        {
            foreach (var missionReward in missions.Value)
            {
                reward.EXP   += missionReward.EXP;
                reward.Money += missionReward.Money;
            }
        }

        return(reward);
    }
Example #5
0
    public void SetMissionReward(eMissionType type, MissionReward reward)
    {
        List <MissionReward> pList;

        if (m_MissionRewardMap.ContainsKey(type))
        {
            pList = m_MissionRewardMap[type];
        }
        else
        {
            pList = new List <MissionReward>();
            m_MissionRewardMap.Add(type, pList);
        }

        pList.Add(reward);
    }
Example #6
0
    public int CompareTo(Mission missionB)
    {
        Mission missionA = this;

        int timeA = missionA.missionEndTime;
        int timeB = missionB.missionEndTime;

        if (missionA.factory.nearestEnemy != null)
        {
            timeA += missionA.factory.nearestEnemyDistance;
        }

        if (missionB.factory.nearestEnemy != null)
        {
            timeB += missionB.factory.nearestEnemyDistance;
        }

        int endTime = Math.Max(timeA, timeB);

        MissionReward rewardA = MissionReward.CalculateReward(missionA, endTime);
        MissionReward rewardB = MissionReward.CalculateReward(missionB, endTime);

        //Console.Error.WriteLine(missionA.factory.id + "-" + missionB.factory.id + ": " +
        //    rewardA.combinedReward + "-" + rewardB.combinedReward);

        foreach (var mission in missionA.prereqs)
        {
            if (missionB == mission)
            {
                return(rewardA.combinedReward.CompareTo(
                           rewardA.combinedReward + rewardB.combinedReward));
            }
        }

        foreach (var mission in missionB.prereqs)
        {
            if (missionA == mission)
            {
                return((rewardA.combinedReward + rewardB.combinedReward).CompareTo(rewardB));
            }
        }

        return(rewardA.combinedReward.CompareTo(rewardB.combinedReward));
    }
Example #7
0
    public void ApplyRewardToPlayers()
    {
        foreach (var player in PlayerManager.Instance.Players)
        {
            PlayerInfo   info   = player.Value.info;
            PlayerRecord record = m_RecordMap[player.Key];

            info.AddExp(record.Exp);
            info.AddMoney(record.Money);

            MissionReward missionReward = CaculateAllMissionReward();
            info.AddExp(missionReward.EXP);
            info.AddMoney(missionReward.Money);

            PlayerManager.Instance.SavePlayerInfo(player.Key);
        }

        Destroy(this.gameObject);
    }
Example #8
0
        private void CreatePlayerRewardElement()
        {
            m_BlackCardTween.OnTweenFinished -= CreatePlayerRewardElement;
            if (InGameRewardManager.Instance == null || InGameRewardManager.Instance.PlayerRewardMap.Count <= 0)
            {
                return;
            }

            MissionReward missionReward = InGameRewardManager.Instance.CaculateAllMissionReward();

            foreach (var record in InGameRewardManager.Instance.PlayerRewardMap)
            {
                UIPlayerReward playerReward = Instantiate(m_PlayerRewardPrefab, m_PanelReward);
                playerReward.Initialize(PlayerManager.Instance.Players[record.Key].info, record.Value, missionReward, record.Key);
                playerReward.OnDrawUIFinished += RefreshCountinueBtn;
                m_DrawFinishedCount++;
                m_PlayerRewardMap.Add(record.Key, playerReward);
            }
        }
Example #9
0
        public void Initialize(PlayerInfo player, PlayerRecord record, MissionReward missionReward, int serialNumber = 1)
        {
            currentPlayer = player;
            currentRecord = record;

            Color playerColor = UIHelper.GetPlayerColor(serialNumber);

            m_Header.color   = playerColor;
            m_RankText.color = playerColor;

            m_PlayerName.text = currentPlayer.Username;
            m_RankText.text   = currentPlayer.Rank.ToString();
            RefreshRankIcon(currentPlayer.Rank);

            m_ExpBar = Instantiate(m_ExpBar, this.transform);
            m_ExpBar.Initialize(currentPlayer.Exp, currentPlayer.Exp + record.Exp + missionReward.EXP, currentPlayer.Rank);
            m_ExpBar.OnRankUpdate += RefreshRankInfo;

            CreateDetail("DEATH", currentRecord.TimesOfDeath);
            CreateDetail("KILLS", currentRecord.NumOfKills);
            CreateDetail("SHOTS", currentRecord.Shots);
            CreateDetail("MONEY", currentRecord.Money + missionReward.Money);
        }
Example #10
0
    public static int CompareTo(Mission missionA, Mission missionB)
    {
        int timeA = missionA.missionEndTime;
        int timeB = missionB.missionEndTime;

        if (missionA.factory.nearestEnemy != null)
        {
            timeA += missionA.factory.nearestEnemyDistance;
        }

        if (missionB.factory.nearestEnemy != null)
        {
            timeB += missionB.factory.nearestEnemyDistance;
        }

        int endTime = Math.Max(timeA, timeB);

        MissionReward rewardA = MissionReward.CalculateReward(missionA, endTime);
        MissionReward rewardB = MissionReward.CalculateReward(missionB, endTime);

        return(rewardA.combinedReward - rewardB.combinedReward);

        //
    }
Example #11
0
    public void CalculateReward()
    {
        Mission mission = this;

        int gained = 0;
        int lost   = 0;

        int turns      = mission.missionEndTime - Game.gameTime;
        int rewardTime = 0;

        if (mission.factory.nearestEnemy != null)
        {
            rewardTime = Math.Max(0, mission.factory.nearestEnemyDistance - turns);
        }

        int productionReward = mission.factory.production * rewardTime;

        if (mission.type == MissionType.Capture)
        {
            gained -= 1; //need at least 1 troop to capture factories

            if (mission.factory.team == Team.Enemy)
            {
                gained += productionReward;
                lost   += productionReward;
            }

            if (mission.factory.team == Team.Neutral)
            {
                gained -= mission.acceptedMission.Sum(troop => troop.count) - 1;
                gained += productionReward;
            }
        }

        if (mission.type == MissionType.Defend)
        {
            gained += productionReward;
        }

        if (mission.type == MissionType.Inc || mission.type == MissionType.IncSupport)
        {
            productionReward = 1 * rewardTime;
            gained          -= 10; //lost 10 troops to production increase;
            gained          += productionReward;
        }

        if (mission.type == MissionType.Reinforce)
        {
            gained -= mission.factory.nearestEnemyDistance;
            lost    = 0;
        }

        Factory ally = mission.factory.GetNearestAlly();

        if (ally != null)
        {
            this.reward = new MissionReward(gained, lost, ally.shortestPaths.shortestDistance[mission.factory]);
        }
        else
        {
            this.reward = new MissionReward(-999, lost, 0);
        }
    }
Example #12
0
    public override Reward Copy()
    {
        MissionReward r = new MissionReward(missionKey, flagkey);

        return(r);
    }