public void UpgradeTower(TowerView selectedTower) { if (selectedTower.CanBeUpgraded && TryChangeMoney(-selectedTower.UpgradeCost)) { selectedTower.UpgradeTower(); } }
public static TowerController CreateTower(TowerType type, Tower model, TowerSpawnerController spawnerController, out GameObject gameObject) { GameObject towerInstance = null; GameObject prefab = null; switch (type) { case TowerType.EARTH_TOWER: prefab = instance.earthTowerPrefab; break; case TowerType.FIRE_TOWER: prefab = instance.fireTowerPrefab; break; } towerInstance = Instantiate(prefab, instance.spawner.transform.position, instance.spawner.transform.rotation); TowerView view = towerInstance.GetComponent <TowerView>(); TowerController controller = new TowerController(model, view, spawnerController); view.Controller = controller; controller.UpdateView(); gameObject = towerInstance; return(controller); }
public void DecreaseMoney(TowerView tower) { if (tower == null) { return; } money -= tower.Cost; }
public void RemoveTower(TowerView selectedTower) { var towerModel = _towerViews.First(t => t.Value == selectedTower).Key; TryChangeMoney(towerModel.Cashback); Destroy(selectedTower.gameObject); _towerViews.Remove(towerModel); Map.RemoveTower(towerModel); }
private void ShowTowerInterface(TowerView towerView) { DropBrush(); _brushType = "tower_interface"; _selectedTower = towerView; _selectedTowerPanel.gameObject.SetActive(true); _selectedTowerUpgradeCost.text = towerView.CanBeUpgraded ? towerView.UpgradeCost.ToString() : ""; _selectedTowerRemoveCost.text = towerView.RemoveCashback.ToString(); }
private void DropBrush() { switch (_brushType) { case "tower": _towersToggleGroup.SetAllTogglesOff(); _controller.ShowTowerGrid = false; _towerBrush.gameObject.SetActive(false); break; case "tower_interface": _selectedTower = null; _selectedTowerPanel.gameObject.SetActive(false); break; } _brushType = "none"; }
public Entity CreateTower(float x, float y, int level = 0) { var entity = CreateEntity(EntityType.RedTank); var listFsm = new Dictionary <string, EntityStateMachine>(); var moveFSM = new EntityStateMachine(entity); var aiFSM = new EntityStateMachine(entity); var position = new Position(x, y, AntEnum.Parse <Direction>(r.Next(1, 5).ToString())); var myvars = vars.Tower[level]; var view = new TowerView(myvars[5], position.direction); moveFSM.CreateState(States.Stand).Add <Stand>().WithInstance(new Stand()); moveFSM.CreateState(States.Turn).Add <Turn>().WithInstance(new Turn()); moveFSM.ChangeState(States.Stand); aiFSM.CreateState(States.Idle).Add <Idle>().WithInstance(new Idle(10)); aiFSM.CreateState(States.Attack).Add <Attack>().WithInstance(new Attack()); aiFSM.ChangeState(States.Idle); listFsm.Add("MoveFSM", moveFSM); listFsm.Add("AiFSM", aiFSM); entity .Add(position) .Add(view.GetView()) .Add(new Health(myvars[2], myvars[4])) .Add(new Damage(100)) .Add(new Tank()) .Add(new FSM(listFsm)) .Add(new AI(210, 210, new[] { EntityType.GreenTank })) .Add(new Gun(myvars[1], myvars[3])) .Add(new Collision(cellSize, 15)) .Add(new Motion(Vector2.Zero, r.Next(CellType.Segment, 10000))) .Add(new ActionAfterDeath(() => { gameField.ClearCell(position.position.Divide(cellSize.X)); CreateEnemyExplosion(position.position); CreateQuake(); })); CreateRedOverlay(entity); CreateGreenHealthBar(entity); AddCellToMap(x, y, CellType.Tower); return(entity); }