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); }