Example #1
0
    private void PopulateField()
    {
        var defaultPortalFaction = Faction.Enemy;
        var sortedEnemyAgents    = new List <EnemyAgent>();    // enemy agents sorted from left to right
        var sortedFriendlyAgents = new List <FriendlyAgent>(); // friendly agents sorted from left to right

        for (int x = 0; x < Field.Width; x++)
        {
            for (int y = 0; y < Field.Height; y++)
            {
                switch (Field.GetItemAt(x, y))
                {
                case FieldModel.FieldItem.Block:
                    var block = Util.Instantiate(BlockPrefab, FieldLayer);
                    block.transform.position = new Vector2(x, y);
                    break;

                case FieldModel.FieldItem.Portal:
                    var portalModel = LinkManager.AddPortal(new Vector2(x, y), defaultPortalFaction);
                    Portals.Add(Util.Instantiate(PortalPrefab, FieldLayer).Init(portalModel));
                    break;

                case FieldModel.FieldItem.Player:
                    var player = Util.Instantiate(PlayerPrefab, AgentLayer).Init(this);
                    player.SetPosition(new Vector2(x, y));
                    break;

                case FieldModel.FieldItem.Friendly:
                    var friendly = Util.Instantiate(FriendlyAgentPrefab, AgentLayer).Init(this);
                    friendly.SetPosition(new Vector2(x, y));
                    sortedFriendlyAgents.Add(friendly);
                    break;

                case FieldModel.FieldItem.Enemy:
                    var enemy = Util.Instantiate(EnemyAgentPrefab, AgentLayer).Init(this);
                    enemy.SetPosition(new Vector2(x, y));
                    sortedEnemyAgents.Add(enemy);
                    break;
                }
            }
        }

        NPCAgentHelper.InitNPCAgentProfiles(sortedEnemyAgents, Field);
        NPCAgentHelper.InitNPCAgentProfiles(sortedFriendlyAgents, Field);
    }