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); }
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); }
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); }