private void DisplayRestrictions(AIAbilityData abilityData) { int newCount = EditorGUILayout.IntField("Num Restrictions", abilityData.restrictions.Count); EditorHelper.UpdateList(ref abilityData.restrictions, newCount, () => null, (t) => GameObject.DestroyImmediate(t, true)); EditorHelper.UpdateList(ref restrictionEditors, newCount, () => null, (t) => { }); EditorGUI.indentLevel++; for (int i = 0; i < abilityData.restrictions.Count; i++) { var restriction = abilityData.restrictions[i]; var editor = restrictionEditors[i]; abilityData.restrictions[i] = EditorHelper.DisplayScriptableObjectWithEditor(abilityData, restriction, ref editor, ""); } EditorGUI.indentLevel--; }
public Combat CreateCombat(List <AICharacterData> characters, AIAbilityData ambushAbility, CombatInitiator combatInitiator, System.Action finishedCallback) { var go = GameObject.Instantiate(CombatReferences.Get().combatViewPrefab) as GameObject; //THIS IS SO HACKY! We should find a better way to pass this in here. var parent = GameObject.Find("ApplicationRoot").transform; go.transform.SetParent(parent); var combatView = go.GetComponent <CombatView>(); var enemies = CreateCombatants(characters); combatView.PlaceCharacters(enemies, Faction.Enemy); var allies = playerTeam.GetCombatAlliesControllers(); var playerFactory = DesertContext.StrangeNew <PlayerCombatCharacterFactory>(); var player = playerFactory.CreatePlayerCombatCharacter(); allies.Add(player); combatView.PlaceCharacters(allies, Faction.Player); combatView.SetupVisuals(mapViewData, mapCreator); var combat = DesertContext.StrangeNew <Combat>(); combat.Setup(enemies, allies, () => { GameObject.Destroy(go); finishedCallback(); }); combat.SetupEnemyAmbush(ambushAbility, () => combat.SetupPlayerAmbush(combat.RunCombat)); /* * if (combatInitiator == CombatInitiator.Enemy && ambushAbility != null) * combat.SetupEnemyAmbush(CreateAmbushAbility(enemies[0], ambushAbility)); * else if (combatInitiator == CombatInitiator.Player) * combat.SetupPlayerAmbush(); * else * combat.RunCombat(); */ return(combat); }
public void SetupEnemyAmbush(AIAbilityData ambushData, System.Action callback) { AIAbility ambush; if (ambushData == null) { ambush = null; } else { ambush = ambushData.Create(enemies[0]); } if (ambush != null) { ambush.PerformAction(callback); } else { callback(); } }