/// <summary> /// コンストラクタ /// </summary> /// <param name="origin">武将データベースの武将</param> /// <param name="type">現在の兵種</param> public DeckedBusho(Busho origin, SoldierTypes type) { _originBusho = origin; _currentSoldierType = type; _rank = 0; this.UpdateDeckedInfo(); }
/// <summary> /// すでにデッキに武将が入っているかを調べる /// </summary> /// <param name="cmpBusho">調査対象武将</param> /// <returns>入っていればtrue</returns> public bool IsContain(Busho cmpBusho) { bool cond = false; foreach (var decked in DeckedBushos) { if (decked.OriginBusho.Id == cmpBusho.Id) { cond = true; break; } } return(cond); }
/// <summary> /// デッキに武将を入れる /// </summary> /// <param name="busho">追加する武将</param> public void Add(Busho busho, int index = -1) { if (DeckedBushos.Count < 4 && !this.IsContain(busho)) { var decked = new DeckedBusho(busho, _currentSoldierType); if (index >= 0) { DeckedBushos.Insert(index, decked); } else { DeckedBushos.Add(decked); } this.CalculateTotalStatus(); UpdateDeckVisibility(); OnPropertyChanged("DeckedBushos"); } }
/// <summary> /// 統率力補正と該当兵種の統率を計算 /// TODO persentageを1st,2ndから計算 /// </summary> /// <param name="busho">該当武将</param> /// <returns>統率力補正</returns> private double CalculatePercent(Busho busho) { var type = _currentSoldierType; double percentage = 1.0; if (type == SoldierTypes.Spear || type == SoldierTypes.LongSpear) { percentage = RankToPercentage(busho.Lance) + (Rank * 0.05); ActualLeadershipFirst = AddRankLeadership(busho.Lance, Rank); ActualLeadershipSecond = LeadershipRank.Nothing; } else if (type == SoldierTypes.Bow || type == SoldierTypes.LongBow) { percentage = RankToPercentage(busho.Bow) + (Rank * 0.05); ActualLeadershipFirst = AddRankLeadership(busho.Bow, Rank); ActualLeadershipSecond = LeadershipRank.Nothing; } else if (type == SoldierTypes.Horse || type == SoldierTypes.EliteHorse) { percentage = RankToPercentage(busho.Horse) + (Rank * 0.05); ActualLeadershipFirst = AddRankLeadership(busho.Horse, Rank); ActualLeadershipSecond = LeadershipRank.Nothing; } else if (type == SoldierTypes.Hammer) { percentage = RankToPercentage(busho.Weapon) + (Rank * 0.05); ActualLeadershipFirst = AddRankLeadership(busho.Weapon, Rank); ActualLeadershipSecond = LeadershipRank.Nothing; } else if (type == SoldierTypes.MountArcher) { percentage = (RankToPercentage(busho.Horse) + RankToPercentage(busho.Bow) + (Rank * 0.05)) / 2; ActualLeadershipFirst = AddRankLeadership(busho.Bow, Rank); ActualLeadershipSecond = busho.Horse; } else if (type == SoldierTypes.RedArms) { percentage = (RankToPercentage(busho.Horse) + RankToPercentage(busho.Lance) + (Rank * 0.05)) / 2; ActualLeadershipFirst = AddRankLeadership(busho.Horse, Rank); ActualLeadershipSecond = busho.Lance; } else if (type == SoldierTypes.Samurai) { percentage = (RankToPercentage(busho.Bow) + RankToPercentage(busho.Lance) + (Rank * 0.05)) / 2; ActualLeadershipFirst = AddRankLeadership(busho.Lance, Rank); ActualLeadershipSecond = busho.Bow; } else if (type == SoldierTypes.Gun) { percentage = (RankToPercentage(busho.Weapon) + RankToPercentage(busho.Lance) + (Rank * 0.05)) / 2; ActualLeadershipFirst = AddRankLeadership(busho.Weapon, Rank); ActualLeadershipSecond = busho.Lance; } else if (type == SoldierTypes.Dragoon) { percentage = (RankToPercentage(busho.Weapon) + RankToPercentage(busho.Horse) + (Rank * 0.05)) / 2; ActualLeadershipFirst = AddRankLeadership(busho.Weapon, Rank); ActualLeadershipSecond = busho.Horse; } if (percentage >= 1.20) { percentage = 1.20; } return(percentage); }