// sets a starting set of tower presets public void setStartingTowers() { List <float[]> presets = new List <float[]>(); for (int i = 0; i < 14; i++) { float[] chromosome = new float[11]; for (int j = 0; j < 11; j++) { chromosome[j] = Random.Range((float)0, (float)0.2); } presets.Add(chromosome); } for (int i = 0; i < 2; i++) { float[] chromosome = new float[11]; for (int j = 0; j < 11; j++) { chromosome[j] = Random.Range((float)0, (float)1); } presets.Add(chromosome); } foreach (float[] chromosome in presets) { TowerPreset tp = new TowerPreset(); tp.TowerPresetFromChromosome(chromosome); towerPresets.Add(tp); } }
/* * If tower was deleted, new tower must * be created using crossover of tower that * was deleted and two random towers in the * population */ public void towerDeleted(TowerPreset tp) { towersGenerated = 0; float[] chromosome = tp.getChromosome(); towerPresets.Remove(tp); generateNewTowerPreset(chromosome); }
public void Init(TowerPreset preset) { Clear(); for (int i = 0; i < preset.ActiveActions.Length; i++) { var view = Instantiate(activeViewPrefab, activeActionsContainer); view.Init(i, preset.ActiveActions[i]); _allViews.Add(view); } if (preset.BeginPlayerTurnAction != null) { var view = Instantiate(beginViewPrefab, passiveActionsContainer); view.Init(-1, preset.BeginPlayerTurnAction); _allViews.Add(view); } if (preset.EndPlayerTurnAction != null) { var view = Instantiate(endViewPrefab, passiveActionsContainer); view.Init(-1, preset.EndPlayerTurnAction); _allViews.Add(view); } }
public void Init(int id, TowerPreset preset) { _id = id; _preset = preset; cost.text = preset.Cost.ToString(); name.text = preset.Name; }
// sets the tower public void setTower(TowerPreset preset) { GameObject go = (Instantiate(towerPrefab, new Vector3(transform.position.x, transform.position.y, transform.localPosition.z), transform.rotation) as GameObject); go.transform.parent = gameObject.transform; go.GetComponent <TowerScript>().setStats(preset); towerSet = true; }
public void ReplaceTower(Tower tower, TowerPreset preset) { var towerHolder = _currentTowers.Find((holder) => holder.GridObject == tower); if (towerHolder != null) { ReplaceTower(towerHolder, preset); } }
public IEnumerator CreateTower(TowerPreset preset, TileHolder tile, YieldInstruction wait = null) { var tower = new Tower(preset, tile.Tile); var obj = Instantiate(TowerPrefab); obj.SetVisual(preset.VisualPrefab); obj.Init(tower, tile); _currentTowers.Add(obj); yield return(wait); }
/* * Method that generates a new tower using crossover over * given chromosome and two random chromosomes from population of towers * Every 15'th tower is generated using random. */ public TowerPreset generateNewTowerPreset(float[] _chromosome) { if (!(towersGenerated % 15 == 0)) { float[] individ1 = towerPresets[Random.Range(0, towerPresets.Count)].getChromosome(); float[] individ2 = towerPresets[Random.Range(0, towerPresets.Count)].getChromosome(); float[] newChromosome = new float[11]; int point1 = Random.Range(0, 11); int point2 = Random.Range(point1, 11); int swap = Random.Range(0, 1); if (swap == 0) { float[] temp = _chromosome; _chromosome = individ1; individ1 = temp; } else { float[] temp = _chromosome; _chromosome = individ2; individ1 = temp; } for (int i = 0; i < point1; i++) { newChromosome[i] = _chromosome[i]; } for (int i = point1; i < point2; i++) { newChromosome[i] = individ1[i]; } for (int i = point2; i < 11; i++) { newChromosome[i] = individ2[i]; } TowerPreset generated = new TowerPreset(); generated.TowerPresetFromChromosome(newChromosome); return(generated); } else { float[] chromosome = new float[11]; for (int j = 0; j < 11; j++) { chromosome[j] = Random.Range((float)0, (float)1); } TowerPreset tp = new TowerPreset(); tp.TowerPresetFromChromosome(chromosome); return(tp); } }
// method for placing a tower public void deleteTower() { GameObject[] gos = GameObject.FindGameObjectsWithTag("Plane"); foreach (GameObject go in gos) { //Debug.Log(go.GetComponent<PlaneController>().isSelected() + " " + go.GetComponent<PlaneController>().isTowerSet()); if (go.GetComponent <PlaneController>().isSelected() && go.GetComponent <PlaneController>().isTowerSet()) { TowerPreset oldPreset = go.GetComponent <PlaneController>().deleteTower(); int index = towerPresets.IndexOf(oldPreset); towerPresets[index] = null; towerPresets[index] = generateNewTowerPreset(oldPreset.getChromosome()); break; } } }
//deletes the tower public TowerPreset deleteTower() { int childNum = transform.childCount; TowerPreset remember = null; for (int i = 0; i < childNum; i++) { if (transform.GetChild(i).tag == "Tower") { GameObject go = transform.GetChild(i).gameObject; remember = go.GetComponent <TowerScript>().getPreset(); Destroy(go); break; } } towerSet = false; return(remember); }
public void ReplaceTower(TowerHolder tower, TowerPreset preset) { tower.Replace(preset); }
public void Replace(TowerPreset preset) { SetVisual(preset.VisualPrefab); GridObject.Replace(preset); }
float fireCooldownLeft; //fire cooldown counter //sets stats of a tower (basicly just a preset) public void setStats(TowerPreset _preset) { preset = _preset; }