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