GameObject CreateGameObject(AICharacterData data, Faction faction) { var prefab = CombatReferences.Get().combatCharacterPrefab; var enemyGO = GameObject.Instantiate(prefab) as GameObject; enemyGO.name = data.displayName; var sr = enemyGO.GetComponent <SpriteRenderer>(); sr.sprite = data.visuals; if (faction == Faction.Enemy) { sr.flipX = true; } return(enemyGO); }
public Character CreateCharacter(AICharacterData data, Faction f) { var aiCharacter = DesertContext.StrangeNew <Character>(); aiCharacter.Setup(data.hp); aiCharacter.attackModule = CreateAttackModule(data); aiCharacter.defenseModule = CreateDefenseModule(data); aiCharacter.displayName = data.displayName; aiCharacter.myFaction = f; aiCharacter.speed = data.initiative; factionManager.Register(aiCharacter); if (data.specialEffectData != null) { data.specialEffectData.Apply(aiCharacter); } return(aiCharacter); }
public void AddAlly(AICharacterData allyData, bool getsWounded) { var teammate = new TeammateData(); teammate.data = allyData; teammate.character = aiFactory.CreateCharacter(allyData, Faction.Player); if (getsWounded) { teammate.character.health.KilledEvent += () => AllyWounded(teammate); } else { teammate.character.health.KilledEvent += () => RemoveAlly(teammate); } allies.Add(teammate); TeamUpdatedEvent(); }
public CombatController CreateCombatController(AICharacterData data, Faction faction) { var aiCharacter = CreateCharacter(data, faction); return(CreateCombatController(aiCharacter, data, faction)); }
void HookCharacterIntoController(CombatController aiController, Character character, AICharacterData data) { aiController.KilledEvent += () => factionManager.Unregister(character); aiController.character = character; aiController.combatActor = data.combatAI.Create(aiController); }