/// <summary> /// Handle expand event. /// </summary> void OnExpand() { unitLostDetail.SetupUnitLostDetailInfo(_currentInfo.attackerUnitLostInfo, _currentInfo.targetUnitLostInfo); if (!_isRead) { BattleReportMetaData data = BattleReportMetaData.Load(); data.MarkRead(_reportId); notifySprite.enabled = false; _isRead = true; } }
public static BattleReportMetaData Load() { if (!SaveLoadManager.SharedManager.IsFileExist <BattleReportMetaData>()) { BattleReportMetaData newData = new BattleReportMetaData(); newData.Save(); return(newData); } BattleReportMetaData data = SaveLoadManager.SharedManager.Load <BattleReportMetaData> (); return(data); }
/// <summary> /// Updates the info. /// </summary> void UpdateInfo() { if (table.transform.childCount > 0) { List <Transform> childs = new List <Transform>(); for (int i = 0; i < table.transform.childCount; i++) { childs.Add(table.transform.GetChild(i)); } for (int i = 0; i < childs.Count; i++) { childs[i].parent = null; NGUITools.Destroy(childs[i].gameObject); } } BattleReportMetaData data = BattleReportMetaData.Load(); BattleReportInfo[] info = data.GetAllBattleReport(); for (int i = 0; i < info.Length; i++) { GameObject newBattleInfo = NGUITools.AddChild(table.gameObject, battleReportInfoPrefab); UIBattleReportInfo display = newBattleInfo.GetComponent <UIBattleReportInfo>(); display.SetInformation(info[i]); } table.Reposition(); scrollview.ResetPosition(); }
/// <summary> /// Calculates the battle result. /// </summary> public void CalculateResult() { BattleReportMetaData reportData = BattleReportMetaData.Load(); int fAttackerSum = GetAttackerSum(); int fDefenderSum = GetDefenderSum(); if ((fAttackerSum - fDefenderSum) > 0) //attacker win, defender defeat { Debug.Log("Attacker " + GetAttackerSum() + " vs " + targetName + " " + GetDefenderSum() + " win"); float ratio = (float)fDefenderSum * 100f / (float)fAttackerSum / 100f; CombatUnitManagerMetaData data = CombatUnitManagerMetaData.Load(); //calculate unit lost for attacker List <UnitLostInfo> attackerLostInfo = new List <UnitLostInfo>(); foreach (CombatUnit unit in attackerUnit.Keys) { int lostUnit = Mathf.Clamp((int)(ratio * attackerUnit[unit]), 1, attackerUnit[unit]); UnitLostInfo info = new UnitLostInfo(unit.unitType, attackerUnit[unit], lostUnit); //return unit data.AddCombatUnit(unit.unitType, info.to); attackerLostInfo.Add(info); } //calculate unit lost for defender List <UnitLostInfo> targetLostInfo = new List <UnitLostInfo>(); foreach (CombatUnit unit in targetUnit.Keys) { float penalty = Mathf.Clamp((1 - ratio) * 10f, 1f, 10f); int lostUnit = Mathf.Clamp((int)(ratio * penalty * targetUnit[unit]), 1, targetUnit[unit]); //TODO:Decrease ai player unit targetLostInfo.Add(new UnitLostInfo(unit.unitType, targetUnit[unit], lostUnit)); } result = AttackResult.Win; reportData.AddBattleReport(result, targetName, "Player", attackerLostInfo, targetLostInfo, resourceAward); //add resource PlayerResourceStorageMetaData pData = PlayerResourceStorageMetaData.Load(); foreach (ResourceType type in resourceAward.Keys) { pData.AddResourceForType(type, resourceAward[type]); } } else if ((fAttackerSum - fDefenderSum) < 0) //attacker defeat, defender win { Debug.Log("Attacker " + GetAttackerSum() + " vs " + targetName + " " + GetDefenderSum() + " fail"); float ratio = (float)fAttackerSum * 100f / (float)fDefenderSum / 100f; CombatUnitManagerMetaData data = CombatUnitManagerMetaData.Load(); //calculate unit lost for attacker List <UnitLostInfo> attackerLostInfo = new List <UnitLostInfo>(); foreach (CombatUnit unit in attackerUnit.Keys) { float penalty = Mathf.Clamp((1 - ratio) * 10f, 1f, 10f); int lostUnit = Mathf.Clamp((int)(ratio * penalty * attackerUnit[unit]), 1, attackerUnit[unit]); UnitLostInfo info = new UnitLostInfo(unit.unitType, attackerUnit[unit], lostUnit); //return unit data.AddCombatUnit(unit.unitType, info.to); attackerLostInfo.Add(info); } //calculate unit lost for defender List <UnitLostInfo> targetLostInfo = new List <UnitLostInfo>(); foreach (CombatUnit unit in targetUnit.Keys) { int lostUnit = Mathf.Clamp((int)(ratio * targetUnit[unit]), 1, targetUnit[unit]); //TODO:Decrease ai player unit targetLostInfo.Add(new UnitLostInfo(unit.unitType, targetUnit[unit], lostUnit)); } result = AttackResult.Lost; reportData.AddBattleReport(result, targetName, "Player", attackerLostInfo, targetLostInfo); } else //draw { Debug.Log("Attacker " + GetAttackerSum() + " vs " + targetName + " " + GetDefenderSum() + " draw"); float ratio = (float)fAttackerSum * 100f / (float)fDefenderSum / 100f * 0.5f; CombatUnitManagerMetaData data = CombatUnitManagerMetaData.Load(); //calculate unit lost for attacker List <UnitLostInfo> attackerLostInfo = new List <UnitLostInfo>(); foreach (CombatUnit unit in attackerUnit.Keys) { int lostUnit = Mathf.Clamp((int)(ratio * 0.3f * attackerUnit[unit]), 1, attackerUnit[unit]); UnitLostInfo info = new UnitLostInfo(unit.unitType, attackerUnit[unit], lostUnit); //return unit data.AddCombatUnit(unit.unitType, info.to); attackerLostInfo.Add(info); } //calculate unit lost for defender List <UnitLostInfo> targetLostInfo = new List <UnitLostInfo>(); foreach (CombatUnit unit in targetUnit.Keys) { int lostUnit = Mathf.Clamp((int)(ratio * 0.3f * targetUnit[unit]), 1, targetUnit[unit]); //TODO:Decrease ai player unit targetLostInfo.Add(new UnitLostInfo(unit.unitType, targetUnit[unit], lostUnit)); } result = AttackResult.Draw; reportData.AddBattleReport(result, targetName, "Player", attackerLostInfo, targetLostInfo); } }