public void RestoreMemento(SerializableSector memento)
 {
     _owner = memento.owner;
     Owner  = Owner; // if owned, apply ownership setup
     if (memento.unit != null)
     {
         // only sectors that have an owner can have a unit
         // this means we can shorthand unit intialization
         Owner.SpawnUnitAt(this);           // spawn unit here
         Unit.RestoreMemento(memento.unit); // restore unit
     }
     _effects.RestoreMemento(memento.effectManager);
 }
 /// <summary>
 /// Restores the sector state from a memento. This also needs the list of
 /// available players in order to set up the Owner reference.
 /// </summary>
 /// <param name="memento">The memento to restore from.</param>
 /// <param name="players">The list of current players.</param>
 public void RestoreFromMemento(SerializableSector memento, Player[] players)
 {
     // restore the occupying unit
     if (memento.unit != null)
     {
         unit = Instantiate(players[memento.ownerId].unitPrefab).GetComponent <Unit>();
         unit.RestoreFromMemento(memento.unit, players, this);
     }
     landmark = gameObject.GetComponentInChildren <Landmark>();
     if (landmark != null)
     {
         landmark.RestoreFromMemento(memento.landmark);
     }
     if (memento.ownerId >= 0)
     {
         players[memento.ownerId].Capture(this);
     }
     pvc = memento.PVC;
 }
Esempio n. 3
0
 /// <summary>
 /// Saves the game state to a memento (stored as <see cref="SerializableGame"/>).
 /// This is the top level memento handler, meaning that the entire game state is
 /// stored in the result, and can be completely restored by the result.
 /// </summary>
 /// <returns>The memento of the current game state.</returns>
 public SerializableGame SaveToMemento()
 {
     SerializablePlayer[] sPlayers = new SerializablePlayer[players.Length];
     for (int i = 0; i < players.Length; i++)
     {
         sPlayers[i] = players[i].SaveToMemento();
     }
     Sector[]             sectors  = gameMap.GetComponentsInChildren <Sector>();
     SerializableSector[] sSectors = new SerializableSector[sectors.Length];
     for (int i = 0; i < sectors.Length; i++)
     {
         sSectors[i] = sectors[i].SaveToMemento();
     }
     return(new SerializableGame
     {
         turnState = turnState,
         players = sPlayers,
         sectors = sSectors,
         currentPlayerId = currentPlayer.Id,
         lastDiscovererOfPvcId = PvcDiscoveredByLast?.Id
     });
 }
Esempio n. 4
0
    void serializeSectorData(SerializableSector copyTo, WorldSector copyFrom)
    {
        // save indexes
        copyTo.x = copyFrom.x;
        copyTo.z = copyFrom.z;

        // save sector levels
        List<WorldSectorLevel> levels = copyFrom.levels.getAllLevels();
        for (int i = 0; i < levels.Count; ++i) {
            copyTo.levels.Add(new SerializableLevel());

            serializeLevelData(copyTo.levels[i], levels[i]);
        }
    }
Esempio n. 5
0
 public void restoreSectorData(SerializableSector restoreFrom)
 {
     levels.restoreLevelsData (restoreFrom.levels);
 }