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)); }
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); }
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); }
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); }
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)); }
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); }
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); } }
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); }
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); // }
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); } }
public override Reward Copy() { MissionReward r = new MissionReward(missionKey, flagkey); return(r); }