コード例 #1
0
    private TurnData MakeTurnData(WTurnData turn)
    {
        List <StatsUpdateData> stDataList = new List <StatsUpdateData>();

        for (int i = 0; i < turn.status_update_data.Length; i++)
        {
            StatsUpdateData stData = new StatsUpdateData();

            stData.ownerID           = turn.status_update_data[i].owner_id;
            stData.finalStats        = MakeBattleObject(turn.status_update_data[i].final_stats);
            stData.singleStatChanges = MakeSingleStatChangeList(turn.status_update_data[i].single_stat_changes);

            stDataList.Add(stData);
        }

        var turnData = new TurnData(
            turn.turn_id,
            new List <int>(turn.eligible_spells),
            new List <int>(turn.eligible_secrets),
            new List <CoolDownData>(), //Spells
            new List <CoolDownData>(), //Secret
            turn.ap[0],
            turn.ap[1],
            stDataList);

        return(turnData);
    }
コード例 #2
0
    public void UpdateCharacterStats(StatsUpdateData statsUpdateData)
    {
        Character ch = _charsDic[statsUpdateData.ownerID];

        SpellEffectInfo spellEffectInf = new SpellEffectInfo(statsUpdateData.singleStatChanges
                                                             , statsUpdateData.ownerID, SpellEffectOnChar.None, statsUpdateData.finalStats);

        ch.UpdateStats(spellEffectInf, true);
    }
コード例 #3
0
    public List <StatsUpdateData> ChangeTurn(IEnumerable <Divine.StatUpdateData> updatesData)
    {
        var statUpdates = new List <StatsUpdateData>();

        foreach (var updateData in updatesData)
        {
            var statUpdate = new StatsUpdateData();
            statUpdate.ownerID           = updateData.Id;
            statUpdate.singleStatChanges = new List <SpellSingleStatChangeInfo>();

            var stat         = _curStats[updateData.Id];
            int hpChange     = 0;
            int shieldChange = 0;

            foreach (var change in updateData.Change)
            {
                switch (change.Type)
                {
                case Divine.StatType.Health:
                    hpChange += change.Value;
                    stat.SetHP(stat.hp + change.Value);
                    break;

                case Divine.StatType.Shield:
                    shieldChange += change.Value;
                    stat.SetShield(stat.shield + change.Value);
                    break;

                case Divine.StatType.Attack:
                    statUpdate.singleStatChanges.Add(new SpellSingleStatChangeInfo(
                                                         SpellSingleStatChangeType.curDamageValChange,
                                                         change.Value));
                    stat.damage += change.Value;
                    break;

                case Divine.StatType.Flag:
                    statUpdate.singleStatChanges.Add(new SpellSingleStatChangeInfo(
                                                         SpellSingleStatChangeType.curFlagValChange,
                                                         change.Value));
                    stat.flags = (BattleFlags)change.Value;
                    break;
                }
            }

            if (hpChange != 0)
            {
                statUpdate.singleStatChanges.Add(new SpellSingleStatChangeInfo(
                                                     SpellSingleStatChangeType.curHPValChange,
                                                     hpChange));
            }

            if (shieldChange != 0)
            {
                statUpdate.singleStatChanges.Add(new SpellSingleStatChangeInfo(
                                                     SpellSingleStatChangeType.curShieldValChange,
                                                     shieldChange));
            }

            statUpdate.finalStats = (BattleObjStats)stat.Clone();
            statUpdates.Add(statUpdate);
        }

        return(statUpdates);
    }