Exemplo n.º 1
0
    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--;
    }
Exemplo n.º 2
0
    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);
    }
Exemplo n.º 3
0
    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();
        }
    }