public FieldStateData stateToStateData(FieldState state) { FieldStateData stateData = new FieldStateData(); stateData.explorationRate = state.explorationRate; stateData.damageReceived = state.damageReceived; stateData.damageDealt = state.damageDealt; stateData.killed = state.killed; stateData.lowDurability = state.lowDurability; stateData.touchingWall = state.touchingWall; stateData.enemiesKilled = state.enemiesKilled; stateData.enemiesLowDurability = state.enemiesLowDurability; stateData.canSeeEnemies = state.canSeeEnemies; stateData.touchingObstacles = state.touchingObstacles; stateData.enemiesCanHit = state.enemiesCanHit; stateData.attachmentsCharging = state.attachmentsCharging; stateData.attachmentsCooling = state.attachmentsCooling; stateData.numberOfEnemies = state.numberOfEnemies; stateData.timeSinceLastAction = state.timeSinceLastAction; List <PlayerPartData> attachmentsData = new List <PlayerPartData>(); foreach (Attachment attachment in state.attachments) { PlayerPartData partData = new PlayerPartData(); partData.id = attachment.getID(); partData.remainingDurability = attachment.getRemainingDurability(); attachmentsData.Add(partData); } stateData.attachments = attachmentsData.ToArray(); stateData.enemiesPosition = state.enemiesPosition; stateData.enemiesTouchingObstacles = state.enemiesTouchingObstacles; stateData.actions = actionsToActionsData(state.actions); return(stateData); }
public FieldState stateDataToState(FieldStateData stateData, List <Part> parts) { FieldState state = new FieldState(); state.explorationRate = stateData.explorationRate; state.damageReceived = stateData.damageReceived; state.damageDealt = stateData.damageDealt; state.killed = stateData.killed; state.lowDurability = stateData.lowDurability; state.touchingWall = stateData.touchingWall; state.enemiesKilled = stateData.enemiesKilled; state.enemiesLowDurability = stateData.enemiesLowDurability; state.canSeeEnemies = stateData.canSeeEnemies; state.touchingObstacles = stateData.touchingObstacles; state.enemiesCanHit = stateData.enemiesCanHit; state.attachmentsCharging = stateData.attachmentsCharging; state.attachmentsCooling = stateData.attachmentsCooling; state.numberOfEnemies = stateData.numberOfEnemies; state.timeSinceLastAction = stateData.timeSinceLastAction; List <Attachment> attachments = new List <Attachment>(); foreach (PlayerPartData partData in stateData.attachments) { Part part = parts.Find(p => p.getID() == partData.id).clone(true); part.damage(part.getDurability() - partData.remainingDurability); attachments.Add((Attachment)part); } state.attachments = attachments.ToArray(); state.enemiesPosition = stateData.enemiesPosition; state.enemiesTouchingObstacles = stateData.enemiesTouchingObstacles; state.actions = actionsDataToActions(stateData.actions, attachments); return(state); }