/// <summary> /// Takes a <see cref="Player"/> and converts it to a <see cref="SaveData.PlayerSaveData"/> format for serialization. /// </summary> /// <param name="player">A player instance to serialize.</param> /// <returns> Serializable player, or null if player is null. </returns> public SaveData.PlayerSaveData PlayerToSerializable(Player player) { if (player != null) { SaveData.PlayerSaveData playerToSave = new SaveData.PlayerSaveData(); // Assign attributes of player to those of player to be serialized. playerToSave.name = player.Name; playerToSave.level = player.Level; playerToSave.health = player.Health; playerToSave.attack = player.Attack; playerToSave.defence = player.Defence; playerToSave.maximumMagic = player.MaximumMagic; playerToSave.magic = player.Magic; playerToSave.luck = player.Luck; playerToSave.speed = player.Speed; playerToSave.special1 = SpecialMoveToSerializable(player.Special1); playerToSave.special2 = SpecialMoveToSerializable(player.Special2); playerToSave.image = Texture2DToSerializable(player.Image); playerToSave.exp = player.Exp; if (player.Item != null) { playerToSave.item = ItemToSerializable(player.Item); } return(playerToSave); } else { return(null); } }
/// <summary> /// Takes a <see cref="SaveData.PlayerSaveData"/> and converts it to an actual <see cref="Player"/> for use in game. /// </summary> /// <param name="serializedPlayer"> The serializable <see cref="SaveData.PlayerSaveData"/> player. </param> /// <returns> A real Player instance, or null if passed null.</returns> public Player SerializableToPLayer(SaveData.PlayerSaveData serializedPlayer) { if (serializedPlayer != null) { Player playerToLoad = new Player(serializedPlayer.name, serializedPlayer.level, serializedPlayer.health, serializedPlayer.attack, serializedPlayer.defence, serializedPlayer.maximumMagic, serializedPlayer.magic, serializedPlayer.luck, serializedPlayer.speed, serializedPlayer.exp, SerializableToItem(serializedPlayer.item), SerializableToSpecialMove(serializedPlayer.special1), SerializableToSpecialMove(serializedPlayer.special2), SerializableToTexture2D(serializedPlayer.image)); if (serializedPlayer.isGorilla) { playerToLoad.IsGorilla = true; } return(playerToLoad); } return(null); }
public void SaveLoadPlayer() { Player testPlayer = new Player("George", 1, 100, 5, 5, 5, 5, 5, 5, 0, new Hammer(), new MagicAttack("hi-jump kicked", "Kick with power 15", 3, 15), new RaiseDefence("buffed up against", "Increase your defence by 10%", 2, 0.1f), (Texture2D)Resources.Load("Character1", typeof(Texture2D))); SaveData.PlayerSaveData savedPlayer = PlayerData.instance.data.PlayerToSerializable(testPlayer); Player restoredPlayer = PlayerData.instance.data.SerializableToPLayer(savedPlayer); Assert.AreEqual(restoredPlayer.Name, testPlayer.Name); Assert.AreEqual(restoredPlayer.Level, testPlayer.Level); Assert.AreEqual(restoredPlayer.Health, testPlayer.Health); Assert.AreEqual(restoredPlayer.Attack, testPlayer.Attack); Assert.AreEqual(restoredPlayer.Defence, testPlayer.Defence); Assert.AreEqual(restoredPlayer.MaximumMagic, testPlayer.MaximumMagic); Assert.AreEqual(restoredPlayer.Magic, testPlayer.Magic); Assert.AreEqual(restoredPlayer.Luck, testPlayer.Luck); Assert.AreEqual(restoredPlayer.Speed, testPlayer.Speed); Assert.AreEqual(restoredPlayer.Exp, testPlayer.Exp); // Other non-primitive data types are tested below. }