/// <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);
    }
Esempio n. 3
0
    /// <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();
    }
Esempio n. 4
0
    /// <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);
        }
    }