/// <summary>Instantiates the clicked tower into the game somewhere.</summary> private void TowerClicked(GameObject prefab) { // Return if already purchasing to avoid nasty bugs :P if (selectedTowerForPurchase != null || bSelling) { return; } AudioHandler.ClickSound(); GameObject ins = Object.Instantiate(prefab, TowerManager.towersContainer); ins.GetComponent <RectTransform>().anchoredPosition = new Vector2(GameManager.CANVAS_WIDTH / 2.0f, GameManager.CANVAS_HEIGHT / -2.0f); ins.SetActive(true); selectedTowerForPurchase = ins.GetComponent <ITower>(); selectedCp = ins.GetComponent <TowerClickPoint>(); selectedCp.enabled = false; // Don't allow clicking for sell while purchasing. selectedTd = selectedTowerForPurchase.GetRangeCircle().AddComponent <TowerDisplay>(); // To allow dragging. selectedTd.Initialise(); selectedTowerForPurchase.ShowRangeCircle(true); selectedTowerForPurchase.SetEnabled(false); // Show the buy options buyOptions.alpha = 1.0f; buyOptions.gameObject.SetActive(true); label_selectedInfoHeader.text = selectedTowerForPurchase.MyInfo().towerName; label_selectedInfoContent.text = selectedTowerForPurchase.MyInfo().towerDescription; bBuying = true; }
public Aiming(List <ThinkingObject> creatures, Graph graph, ITower tower) { allcreatures = new List <ICreature>(); this.creatures = creatures; this.graph = graph; this.tower = tower; }
private void OnTowerActivation(ITower tower, APIActivator activator) { if (HasTower(tower)) { return; } switch (activator) { case APIActivator.XANA: if (XanaTowers.Count == 0) { onXanaAwaken(); } XanaTowers.Add(tower); break; case APIActivator.HOPPER: HopperTowers.Add(tower); break; case APIActivator.JEREMIE: JeremieTowers.Add(tower); break; } }
private static void OnTowerDeactivation(ITower tower) { string title = Main.localize("tower.deactivation.title"); string body = String.Format(Main.localize("tower.deactivation.subtitle"), tower.Number, Main.localize("sector." + tower.Sector.Name.ToLowerInvariant())); FireBasePush.SendMessage(title, body); }
public ITarget FindTarget(ITower tower) { var colliders = Physics2D.OverlapCircleAll(tower.Position, tower.Range); ITarget maxHpEnemy = null; float maxHp = 0; foreach (var collider in colliders) { var enemy = collider.GetComponent <ITarget>(); if (enemy != null) { if (maxHpEnemy == null) { maxHpEnemy = enemy; maxHp = enemy.CurrentHp; } else { if (enemy.CurrentHp > maxHp) { maxHpEnemy = enemy; maxHp = enemy.CurrentHp; } } } } return(maxHpEnemy); }
private void OnTowerDeactivation(ITower tower, APIActivator activator) { if (!HasTower(tower)) { return; } switch (activator) { case APIActivator.XANA: XanaTowers.Remove(tower); if (XanaTowers.Count == 0) { onXanaDefeat(); } break; case APIActivator.HOPPER: HopperTowers.Remove(tower); break; case APIActivator.JEREMIE: JeremieTowers.Remove(tower); break; } }
private void OnLeftMouseClick() { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; if (Physics.Raycast(ray, out hit, Mathf.Infinity)) { if (hit.transform.CompareTag("tower")) { if (Input.GetKey(KeyCode.G)) { Time.timeScale = 0; currentGradeInfo = hit.transform.GetComponent <GradeInfo>(); currentGradeItem = currentGradeInfo.GetCurrentGrade(); currentTower = hit.transform.GetComponent <ITower>(); if (currentGradeItem != null) { LoadAllInfo(); } else { ShowOffDialog(); } } } } }
/* * These variables are needed to unregister events later. * We dont really recommmend this in this situation */ private static void onTowerdeactivation(ITower tower) { LyokoAPI.Events.LyokoLogger.Log("Test", "Tour désactivé"); string json = "{\"secteur\": \"" + tower.Sector.Name + "\",\"nombre\": \"" + tower.Number + "\"}"; sendEvent("tourdesactiver", json); }
public Aiming(List <ICreature> creatures, Graph graph, ITower tower) { this.creatures = creatures; this.graph = graph; this.tower = tower; findTarget(); }
private async void OnTowerDeactivation(ITower tower) { string color; color = "000000"; await SendCommand(color); }
private static void OnTowerDeactivation(ITower tower) { string title = "Good job! Tower deactivated!"; string body = "Tower nº" + tower.Number + " in the " + Main.GetUppercaseNames(tower.Sector.Name) + "."; FireBasePush.SendMessage(title, body); }
private static void onHijack(ITower tower, APIActivator old, APIActivator newactivator) { LyokoAPI.Events.LyokoLogger.Log("Test", "Hijack"); string json = "{\"secteur\": \"" + tower.Sector.Name + "\",\"nombre\": \"" + tower.Number + "\",\"old\": \"" + getActivator(old) + "\",\"new\": \"" + getActivator(newactivator) + "\"}"; sendEvent("hijack", json); }
private TowerController GetControllerMock(ITower tower) { var controller = Substitute.For <TowerController>(); controller.SetTowerController(tower); return(controller); }
public void Build(ITower tower) { if (!Buildable) { return; } Tower = tower; }
private static void OnTowerHijack(ITower tower, APIActivator oldActivator, APIActivator newActivator) { string title = "Huh? A tower has been hijacked!"; string body = "Tower nº" + tower.Number + " in the " + Main.GetUppercaseNames(tower.Sector.Name) + ", from " + Main.GetUppercaseNames(oldActivator.ToString()) + " to " + Main.GetUppercaseNames(newActivator.ToString()) + "!"; FireBasePush.SendMessage(title, body); }
//Baumodus starten private void EnterBuildMode() { TowerToBuild = null; SelectedTower = null; //GamePlayScreen.StopGame(); BuildMode = true; DrawRangeMarker = true; }
private static void OnTowerHijack(ITower tower, APIActivator oldActivator, APIActivator newActivator) { string title = Main.localize("tower.hijack.title"); string body = String.Format(Main.localize("tower.hijack.subtitle"), tower.Number, Main.localize("sector." + tower.Sector.Name.ToLowerInvariant()), Main.GetUppercaseNames(oldActivator.ToString()), Main.GetUppercaseNames(newActivator.ToString())); FireBasePush.SendMessage(title, body); }
private void HideSellOptions() { selectedTowerForSell.ShowRangeCircle(false); selectedTowerForSell = null; sellOptions.alpha = 0.0f; sellOptions.gameObject.SetActive(false); bSelling = false; }
public void BuildTowerIn(TowerCell towerCell, ITower tower, int cost) { if (!CanBuildTowerIn(towerCell, tower, cost)) { return; } towerCell.Build(tower.Clone() as ITower); Gold -= cost; }
private void MoveTopTo(ITower t) { if (DiskStack.Count > 0) { int disk = DiskStack.Pop(); t.AddDisk(disk); DisplayMessage($"Disk {disk} moved to Tower {t.TowerId}"); } }
/// <summary> /// Draws tower that is selected on the map. /// </summary> private void DrawSelectedMapTower(SpriteBatch spriteBatch, ITower tower, int lineNumber) { DrawTextLine(spriteBatch, "Selected tower", "", lineNumber); if (GameMap.SelectedMapTower != null) { DrawTextLine(spriteBatch, "Attack", tower.Damage.ToString(), lineNumber + 1); DrawTextLine(spriteBatch, "Speed", tower.AttackSpeed.ToString(), lineNumber + 2); DrawTextLine(spriteBatch, "(U)pgrade", "x" + tower.UpgradePrice.ToString(), lineNumber + 3); } }
//Baut einen neuen Turm private void AddTower(ITower tower) { TowerList.Add(tower); //Dem Levelmanager den Turm mitteilen, damit der weiß, dass dort der Weg blockiert ist GamePlayScreen.LevelManager.BuildTower(tower.PathPosition, tower.PathSize); //Allen Creeps mitteilen, dass sie sich vielleicht einen neuen Weg suchen müssen GamePlayScreen.ChangeCreepGrid(tower); //Und das Geld für den Tower abziehen GamePlayScreen.MoneyManager.Buy(tower.Price); }
/// <summary> /// Buys given tower and places it on the map. Buying a tower resets the SelectedShopTower. /// If the player does not have enough money, no tower will be placed and SelectedShopTower /// will still be reset. /// </summary> /// <param name="tower">Instance of a tower to be placed</param> public void BuyTower(ITower tower) { if (Money >= tower.Price) { Towers.Add(tower); Money -= tower.Price; } DeselectShopTower(); }
public void MoveDisks(int discCount, ITower destination, ITower buffer) { if (discCount <= 0) { return; } MoveDisks(discCount - 1, buffer, destination); MoveTopTo(destination); buffer.MoveDisks(discCount - 1, destination, this); }
public static void DestroySelectedTower() { if (TowerSelected == null) { return; } Money += TowerSelected.Price / 3; TowerController.RemoveTower(TowerSelected); TowerSelected = null; }
public static void Call(ITower tower) { if ((IsLocked && !Assembly.GetCallingAssembly().Equals(Events.Master))) { return; } if (tower.Activated) { TowerActivationE?.Invoke(tower); } }
public bool TryAddTower(ITower tower) { if (this.CanPlaceTower(tower)) { this.AddGameObject(tower); this.Player.Money -= tower.Price; return(true); } return(false); }
public bool IsChangeTargetNeeded(ITower tower, ITarget enemy) { if (enemy == null || !enemy.IsAlive) { return(true); } //TODO это расстояние до центра цели, а нас интересует расстояние до ее коллайдера var distance = Vector2.Distance(enemy.Position, tower.Position); return(distance > tower.Range); }
/// <summary> /// Draws towers available in the shop. /// </summary> /// <param name="spriteBatch">Object to be used for drawing.</param> /// <param name="heading">Heading of the shop.</param> /// <param name="lineNumber">Line number where to print heading. Will be used to print rest of the shop too.</param> /// <param name="textures">Dictionary which contains textures used to draw towers.</param> private void DrawTowerShop(SpriteBatch spriteBatch, string heading, int lineNumber, Dictionary <string, Texture2D> textures) { DrawTextLine(spriteBatch, heading, "", lineNumber); for (int i = 0; i < GameMap.AvailableTowers.Count; i++) { float tY = Y + ContentTopBase + LineHeight * (lineNumber + 1) + 5 + i * 70; ITower tower = GameMap.AvailableTowers[i]; tower.Position = new Vector2(X + Column1Base, tY); spriteBatch.Draw(textures[tower.TextureName], tower.Position, Color.White); spriteBatch.DrawString(TextFont, "x" + tower.Price.ToString(), new Vector2(X + Column1Base + 70, tY + 27), Color.Black); } }
public ITower Spawn( Guid guid, Vector3 position, byte rotation ) { ITower tower = (ITower)GetBasicBuilding(guid, position, rotation); AddToLists(tower); return(tower); }
/// <summary> /// Create test Airplanes /// </summary> /// <param name="_tower"></param> private static void CreateAirplanes(ITower _tower) { //Create Airplanes int numberOfAirplanes = 0; bool repeat = true; while (repeat) { Console.WriteLine(); Console.WriteLine("Enter the number of Aircraft to Process. Maximum 26"); string numberOfAirplanesAsString = Console.ReadLine(); repeat = !int.TryParse(numberOfAirplanesAsString, out numberOfAirplanes); if (numberOfAirplanes > 26 || numberOfAirplanes < 1) { repeat = true; } } Random _randon = new Random(); while (numberOfAirplanes > 0) { //The airplane waits before calling the tower. Otherwise the output is too fast int waitTimeInSeconds = _randon.Next(2, 60); IAirplane _airplane = ServiceLocator.Resolve<IAirplane>(); _airplane.StartWaitTime(waitTimeInSeconds); _airplane.CallSign = (CallSigns)numberOfAirplanes; int _startCondition = _randon.Next(1, 3); if (_startCondition == 1) { _airplane.StartCondition = StartCondition.Parked; } else { _airplane.StartCondition = StartCondition.Flying; } Console.WriteLine("***"); Console.WriteLine(); Console.WriteLine("New Airplane, Call Sign " + _airplane.CallSign + " is currently " + _airplane.StartCondition); Console.WriteLine(); _tower.AirplaneCount++; numberOfAirplanes--; } }
public override void Update(GameTime gameTime) { manager.Update(gameTime); if (GamePlayScreen.TowerManager.SelectedTower != null) { if (GamePlayScreen.TowerManager.SelectedTower != LastSelectedTower) { LastSelectedTower = GamePlayScreen.TowerManager.SelectedTower; SelectorPosition = LastSelectedTower.Position; SelectorScale = new Vector2(LastSelectedTower.Size.X / SelectorTexture.Width, LastSelectedTower.Size.Y / SelectorTexture.Height); ShowTowerInfo(LastSelectedTower); } } else { SelectorScale = Vector2.Zero; LastSelectedTower = null; if (TowerWindow != null) { TowerWindow.Close(); } } KeyboardState state = Keyboard.GetState(); if (state.IsKeyDown(Keys.Tab) && !oldState.IsKeyDown(Keys.Tab)) { if (Console.Visible) Console.Hide(); else { Console.Show(); Console.BringToFront(); foreach (Control control in Console.Controls) { if (control is TextBox) control.Focused = true; } } } oldState = state; base.Update(gameTime); }
/// <summary> /// Create test runways /// </summary> /// <param name="_tower"></param> private static void CreateRunways(ITower _tower) { int numberOfRunways = 0; bool repeat = true; while (repeat) { Console.WriteLine(); Console.WriteLine("Enter the number of Runways at this airport. Maximum 5"); string numberOfRunwaysAsString = Console.ReadLine(); repeat = !int.TryParse(numberOfRunwaysAsString, out numberOfRunways); if (numberOfRunways > 5 || numberOfRunways < 1) { repeat = true; } } Random _randon = new Random(); while (numberOfRunways > 0) { IRunway _runway = ServiceLocator.Resolve<IRunway>(); _runway.RunwayDesignation = (RunwayDesignation)numberOfRunways; _runway.IsRunwayAvailable = true; Console.WriteLine("***"); Console.WriteLine(); Console.WriteLine("Runway " + _runway.RunwayDesignation + " is currently free for use"); Console.WriteLine(); _tower.AddRunways(_runway); numberOfRunways--; } }
//Wird von ausßerhalb aufgerufen um einen Turm mit dem entsprechenden Key zu bauen public bool StartTowerBuildMode(string key) { bool result = true; //Bausmodus starten EnterBuildMode(); key = key.ToLower(); //Den zu erstellenden Turm schonmal erzeugen um auf wichtige Eigenschaften Zugriff zu bekommen TowerToBuild = CreateTowerInstance(key); if (TowerToBuild != null) { //falls wir uns den Turm leisten können if (GamePlayScreen.MoneyManager.CanBuy(TowerToBuild.Price)) { BuildModeRange = TowerToBuild.Range; RangeSize = new Vector2(2 * BuildModeRange, 2 * BuildModeRange); RangeScale = new Vector2(RangeSize.X / RangeTexture.Width, RangeSize.Y / RangeTexture.Height); BuildMarkerSize = new Vector2(GamePlayScreen.LevelManager.GridSize.X * TowerToBuild.PathSize.X, GamePlayScreen.LevelManager.GridSize.Y * TowerToBuild.PathSize.Y); BuildMarkerScale = new Vector2(BuildMarkerSize.X / BuildMarkerTexture.Width, BuildMarkerSize.Y / BuildMarkerTexture.Height); TowerToBuildKey = key; } else { GamePlayScreen.GuiManager.Log("Nicht Genug Geld vorhanden, Preis = " + TowerToBuild.Price, 1); result = false; } } else { GamePlayScreen.GuiManager.Log("Ungültiger TowerKey", 1); result = false; } //Falls was schief gegangen ist, abbrechen if (!result) { CancelBuildMode(); } return result; }
//Löscht einen Turm public bool RemoveTower(ITower tower) { if (tower == null) { return false; } //Turm zum Löschen markieren TowerDeleteList.Add(tower); //Turm aus dem Level (Wegfindung) löschen GamePlayScreen.LevelManager.RemoveTower(tower.PathPosition, tower.PathSize); //Und die Creeps dürfen sich wieder einen neuen Weg suchen GamePlayScreen.ChangeCreepGrid(null); return true; }
public void ChangeCreepGrid(ITower tower) { if (tower != null) { var waypoints = new List<Vector2>(); for (int i = (int)tower.PathPosition.X - 1; i < tower.PathPosition.X + tower.PathSize.X - 1; i++) { for (int j = (int)tower.PathPosition.Y - 1; j < tower.PathPosition.Y + tower.PathSize.Y - 1; j++) { waypoints.Add(new Vector2(i,j)); } } foreach (Creep creep in CreepList) { creep.GridChanged(waypoints); } } }
private void ShowTowerInfo(ITower tower) { if (TowerWindow != null) { TowerWindow.Close(); manager.Remove(TowerWindow); TowerWindow = null; } TowerWindow = new TowerInfoWindow(manager, CurrGame, GamePlayScreen); TowerWindow.Closed += delegate { TowerWindow = null; }; TowerWindow.Tower = tower; TowerWindow.DesiredLeft = (int)(tower.Position.X + tower.Size.X / 2); TowerWindow.DesiredTop = (int)(tower.Position.Y + tower.Size.Y / 2); bool showDamage = bool.Parse(TowerManager.GetTowerProperty("Labels", tower.Key, "ShowDamage")); bool showRange = bool.Parse(TowerManager.GetTowerProperty("Labels", tower.Key, "ShowRange")); bool showInterval = bool.Parse(TowerManager.GetTowerProperty("Labels", tower.Key, "ShowInterval")); DebugLog("ShowTowerInfo: " + tower.Key); TowerWindow.Init(showDamage, showRange, showInterval); TowerWindow.Show(); TowerWindow.BringToFront(); }
/// <summary> /// Dequeue airplanes from request queue and process the request /// </summary> /// <param name="tower"></param> private static void ProcessRequests(ITower tower) { IAirplane airplane = ServiceLocator.Resolve<IAirplane>(); bool airplaneFound = false; while (tower.AirplaneCount > 0) { if (tower.Runways.Count == 0) continue; //Because we might start processing before the runways are setup foreach (Runway runway in tower.Runways) { lock(_lockObject) { if (runway.IsRunwayAvailable) { if (tower.RequestQueue.Count == 0) break; //No airplanes have requested a runway airplaneFound = true; airplane = tower.RequestQueue.Dequeue(); airplane.AssignedRunway = runway; Console.WriteLine("---"); Console.WriteLine(); Console.WriteLine("Tower to " + airplane.CallSign + ": Please use Runway " + airplane.AssignedRunway.RunwayDesignation); Console.WriteLine(); break; } } } if (airplaneFound) { airplane.UseRunWay(); airplaneFound = false; } } Console.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); Console.WriteLine(); Console.WriteLine("All Aircraft have been processed"); Console.WriteLine("Press any key to end"); Console.WriteLine(); Console.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); Console.ReadKey(); }