// LoadCharacter in place public void ApplyCharacterDataToObject(GameObject character, CharacterData data) { CharacterBehaviour behaviour = character.GetComponent <CharacterBehaviour>(); CharacterLoadout loadout = character.GetComponent <CharacterLoadout>(); // Update Character behaviour.Name = data.CharacterName; behaviour.Id = data.CharacterId; behaviour.SetProgress(data.CharacterLevel, data.CharacterExp); // Update common stats loadout.AvailablePoints = data.AvailablePoints; loadout.moveSpeedStat = (MoveSpeedStat)data.MoveSpeedStat.Deserialize(); loadout.moveSpeedStat.Apply(character); // Add abilities to loadout loadout.Ability1 = Ability.Deserialize(character, data.Abilities[data.Ability1Index]); loadout.Ability2 = Ability.Deserialize(character, data.Abilities[data.Ability2Index]); loadout.Init(); }
// --- End Singleton Pattern public void ApplyNewCharacterStats(GameObject character, string name, CharacterTypes type) { CharacterBehaviour behaviour = character.GetComponent <CharacterBehaviour>(); CharacterLoadout loadout = character.GetComponent <CharacterLoadout>(); if (type == CharacterTypes.Munch) { behaviour.Name = name; behaviour.Level = 1; behaviour.Experience = 0; behaviour.Id = System.Guid.NewGuid().ToString(); loadout.moveSpeedStat = new MoveSpeedStat(1); BlinkDistanceStat blinkDistanceStat = new BlinkDistanceStat(1); BlinkChargesStat blinkChargesStat = new BlinkChargesStat(1); loadout.Ability1 = new BlinkAbility(character, new Stat[] { blinkDistanceStat, blinkChargesStat }); loadout.Ability2 = new ReviveProjectileAbility(character, new Stat[] { }); } else { throw new UnityException($"Unknown type of character {type}"); } loadout.Init(); }