private PopulationEntity addEntity(int x, int y, int id)
    {
        var entitiesNode = GameObject.FindGameObjectWithTag("Entities");
        var pos = new Position(x, y);

        var prefab = "";
        switch (id)
        {
            case 1:
                prefab = "pop1";
                break;
            case 2:
                prefab = "pop2";
                break;
            case 3:
                prefab = "pop3";
                break;
            default:
                prefab = "pop1";
                break;

        }

        var popObj = GameObject.Instantiate(Resources.Load(prefab)) as GameObject;
        popObj.transform.position = new Vector3(pos.X * tilesize, -pos.Y * tilesize, 0);
        popObj.transform.parent = entitiesNode.transform;
        var pop = new PopulationEntity(id, popObj, pos.X, pos.Y);
        populationMatrix[pos.X, pos.Y].Add(pop);

        var popLevelObj = GameObject.Instantiate(Resources.Load("popLevel")) as GameObject;
        popLevelObj.transform.position = new Vector3(pos.X * tilesize, -pos.Y * tilesize, -1);
        popLevelObj.transform.parent = entitiesNode.transform;
        pop.LevelObject = popLevelObj;

        return pop;
    }
    private bool ageEntity(PopulationEntity pop, int value)
    {
        bool death = false;
        pop.Age += value;

        if (pop.NoRepTime > 0)
        {
            pop.NoRepTime -= value;
        }

        /*int minLevel = pop.Level - fightLevelDiff;
        if (minLevel < 0) minLevel = 0;
        int zoneLevel = findZoneLevel(pop.Pos.X, pop.Pos.Y, minLevel);
        zoneLevel -= pop.Level - minLevel;*/

        if (Random.value < pop.Xp * xplevelUpChance)
        {
            pop.Level++;
            pop.Xp = 0;
            var scalePerLevel = 0.01f;
            pop.LevelObject.transform.localScale = new Vector3(0.5f + pop.Level * scalePerLevel, 0.5f + pop.Level * scalePerLevel, 1);
        }

        if (pop.Age > ageLimit)
        {
            if (Random.value < ageDeathChance)
            {
                populationMatrix[pop.Pos.X, pop.Pos.Y].Remove(pop);
                Destroy(pop.Object);
                Destroy(pop.LevelObject);
                death = true;
            }
        }

        return death;
    }
    private void moveEntity(PopulationEntity pop, Direction dir)
    {
        Position p = PositionUtils.GetDirPosition(dir);
        Position newPos = new Position(pop.Pos.X + p.X, pop.Pos.Y + p.Y);
        newPos.NormalizePos(mapsize);

        populationMatrix[pop.Pos.X, pop.Pos.Y].Remove(pop);
        pop.Pos = newPos;
        pop.Object.transform.position = new Vector3(newPos.X * tilesize, -newPos.Y * tilesize, 0);
        pop.LevelObject.transform.position = new Vector3(newPos.X * tilesize, -newPos.Y * tilesize, -1);
        populationMatrix[newPos.X, newPos.Y].Add(pop);
    }