public virtual IEnumerator preloadCo()
    {
        yield return(new WaitForEndOfFrame());

        GamePreset preset = GamePresets.Instance.GetCurrentPresetDataCharacter();

        if (preset == null)
        {
            yield break;
        }

        List <GamePresetItem> presetItems = preset.data.items;

        foreach (GamePresetItem item in presetItems)
        {
            for (int i = 0; i < item.limit / 3; i++)
            {
                yield return(new WaitForEndOfFrame());

                GameAIController.Load(item.code);
            }
        }

        yield return(new WaitForSeconds(1f));

        // remove all characters

        GameController.ResetLevelActors();

        yield return(new WaitForEndOfFrame());
    }
    // UPDATE/TICK

    public virtual void handlePeriodic()
    {
        if (lastPeriodicSeconds > UnityEngine.Random.Range(3, 10))
        {
            lastPeriodicSeconds = 0f;
            GameAIController.DirectAI();
        }

        lastPeriodicSeconds += Time.deltaTime;
    }
    public virtual GamePlayerSpawn getSpawn(string code)
    {
        GameAIController.CheckSpawns();

        foreach (KeyValuePair <string, GamePlayerSpawn> pair in spawns)
        {
            if (pair.Key == code)
            {
                return(pair.Value);
            }
        }
        return(null);
    }
    public virtual void load(string code, string type = "enemy")
    {
        // Load by character code

        float speed  = .3f;
        float attack = .3f;
        float scale  = 1f;

        speed  = UnityEngine.Random.Range(.8f, 1.6f);
        attack = UnityEngine.Random.Range(.3f, .4f);
        scale  = UnityEngine.Random.Range(.8f, 1.6f);

        GameAIController.Load(code, type, speed, attack, scale);
    }
    public virtual void Update()
    {
        if (!GameConfigs.isGameRunning)
        {
            return;
        }

        if (Input.GetKey(KeyCode.RightControl))
        {
            if (Input.GetKey(KeyCode.G))
            {
                runDirector = false;
            }
            else if (Input.GetKey(KeyCode.H))
            {
                runDirector = true;
            }
            else if (Input.GetKey(KeyCode.J))
            {
                // kill all enemies

                GameController.Instance.levelActorsContainerObject.DestroyChildren();
            }
        }

        if (stopDirector)
        {
            return;
        }

        if (!runDirector || stopDirector ||
            GameDraggableEditor.isEditing)
        {
            return;
        }

        if (GameController.IsGameRunning)
        {
            // if game running spawn and direct characters and events

            GameAIController.HandlePeriodic();

            GameAIController.HandleUpdate();
        }
    }
示例#6
0
    // Use this for initialization
    void Start()
    {
        //safety
        Debug.Assert(spaces != null);
        Debug.Assert(gameOverPanelObj != null);
        Debug.Assert(gameOverText != null);

        pGameAIController = GameObject.Find("GameController").GetComponent <GameAIController>();
        Debug.Assert(pGameAIController != null); //safety

        //set game over panel to not show at start
        gameOverPanelObj.SetActive(false);

        isMoveMade = false;
        isGameOver = false;

        Debug.Log("Initial moves: " + numMoves);
    }
    public virtual void load(
        string code,
        string type,
        float speed,
        float attack,
        float scale)
    {
        // Load by character code

        GameAIDirectorData itemData = new GameAIDirectorData();

        itemData.code   = code;
        itemData.type   = type;
        itemData.speed  = speed;
        itemData.attack = attack;
        itemData.scale  = scale;

        GameAIController.LoadCharacter(itemData);
    }
    public virtual void load(string code)
    {
        // Load by character code

        float speed  = .3f;
        float attack = .3f;
        float scale  = 1f;

        speed  = UnityEngine.Random.Range(.8f, 1.6f);
        attack = UnityEngine.Random.Range(.3f, .4f);
        scale  = UnityEngine.Random.Range(.8f, 1.6f);

        GameAIDirectorData itemData = new GameAIDirectorData();

        itemData.code   = code;
        itemData.type   = GameActorType.enemy;
        itemData.speed  = speed;
        itemData.attack = attack;
        itemData.scale  = scale;

        GameAIController.LoadCharacter(itemData);
    }
 public virtual void init()
 {
     GameAIController.CheckSpawns();
 }
示例#10
0
 public virtual void loadCharacter(GameAIDirectorData actor)
 {
     GameAIController.BroadcastCharacterMessage(actor);
 }
示例#11
0
    public virtual void directAI()
    {
        currentFPS = FPSDisplay.GetCurrentFPS();

        if ((currentActorCount < currentCharacterLimit &&
             currentFPS > 20f) || currentActorCount < currentCharacterMin)
        {
            // do some spawning

            if (currentActorCount < currentCharacterMin * 2)
            {
                currentSpawnAmount = 1;
            }

            GamePreset preset = GamePresets.Instance.GetCurrentPresetDataCharacter();

            if (preset == null)
            {
                return;
            }

            List <GamePresetItem> presetItems = preset.data.items;

            List <float> probs = new List <float>();
            foreach (GamePresetItem item in presetItems)
            {
                probs.Add((float)item.probability);
            }

            //string characterCode = "";

            /*
             * if (!IsPlayerControlled) {
             *  // apply team
             *
             *  GameTeam team = GameTeams.Current;
             *
             *  // TODO randomize
             *
             *  if (team != null) {
             *      if (team.data != null) {
             *
             *          GameDataModel item = team.data.GetModel();
             *
             *          if (item != null) {
             *              characterCode = item.code;
             *              controllerData.lastCharacterCode = item.code;
             *          }
             *      }
             *  }
             * }
             */

            GamePresetItem selectByProbabilityItem =
                MathUtil.ChooseProbability <GamePresetItem>(presetItems, probs);

            if (selectByProbabilityItem == null)
            {
                return;
            }

            string code = selectByProbabilityItem.code;

            GameAIController.Load(code);
        }
    }
示例#12
0
    public virtual void directAICharacters(
        string actorType,
        double spawnCount,
        double spawnMin,
        double spawnLimit,
        bool limitFps = true)
    {
        currentFPS = FPSDisplay.GetCurrentFPS();

        // DIRECT ENEMIES

        if ((spawnCount < spawnLimit &&
             (currentFPS > 20f || !limitFps)) ||
            spawnCount < spawnMin)
        {
            // do some spawning

            if (spawnCount < spawnMin * 2)
            {
                //spawnAmount = 1;
            }

            if (characters == null)
            {
                characters = new List <GameDataCharacterPreset>();
            }
            else
            {
                characters.Clear();
            }

            if (GameLevels.Current.data != null &&
                GameLevels.Current.data.HasCharacterPresets())
            {
                foreach (GameDataCharacterPreset characterPreset
                         in GameLevels.Current.data.character_presets)
                {
                    if (characterPreset.type == actorType)
                    {
                        characters.Add(characterPreset);
                    }
                }
            }
            else if (GameWorlds.Current.data != null &&
                     GameWorlds.Current.data.HasCharacterPresets())
            {
                foreach (GameDataCharacterPreset characterPreset
                         in GameWorlds.Current.data.character_presets)
                {
                    if (characterPreset.type == actorType)
                    {
                        characters.Add(characterPreset);
                    }
                }
            }

            // IF SIDEKICKS, SELECT FROM SIDEKICKS NOT ENEMIES


            if (presetItemsAppend == null)
            {
                presetItemsAppend = new List <GamePresetItem>();
            }
            else
            {
                presetItemsAppend.Clear();
            }

            if (probs == null)
            {
                probs = new List <float>();
            }
            else
            {
                probs.Clear();
            }

            foreach (GameDataCharacterPreset characterPreset in characters)
            {
                GamePreset preset = GamePresets.Get(characterPreset.code);
                //GamePresets.Instance.GetCurrentPresetDataCharacter();

                if (preset == null)
                {
                    return;
                }

                List <GamePresetItem> presetItems = preset.data.items;

                foreach (GamePresetItem item in presetItems)
                {
                    if (item.type == actorType)
                    {
                        probs.Add((float)item.probability);
                        presetItemsAppend.Add(item);
                    }
                }
            }

            //string characterCode = "";

            /*
             * if (!IsPlayerControlled) {
             *  // apply team
             *
             *  GameTeam team = GameTeams.Current;
             *
             *  // TODO randomize
             *
             *  if (team != null) {
             *      if (team.data != null) {
             *
             *          GameDataModel item = team.data.GetModel();
             *
             *          if (item != null) {
             *              characterCode = item.code;
             *              controllerData.lastCharacterCode = item.code;
             *          }
             *      }
             *  }
             * }
             */

            if (presetItemsAppend == null ||
                probs == null)
            {
                return;
            }

            if (presetItemsAppend.Count == 0 ||
                probs.Count == 0)
            {
                return;
            }

            GamePresetItem selectByProbabilityItem =
                MathUtil.ChooseProbability <GamePresetItem>(presetItemsAppend, probs);

            if (selectByProbabilityItem == null)
            {
                return;
            }

            string code = selectByProbabilityItem.code;

            GameAIController.Load(code, actorType);
        }
    }