private void OnMouseDown() { if (!GameObject.Find("GeneralManager").GetComponent <LevelManager>().tfPause&& tfMovable) { if (!theMouse.tfHolding) { theMouse.tfHolding = true; theMouse.holdingObj = gameObject; if (tfFirstGrab) { updateBoardCount(); if (boardcount < boardLimit) { GameObject newBoard = GameObject.Instantiate(gameObject); newBoard.transform.position = gameObject.transform.position; newBoard.transform.rotation = gameObject.transform.rotation; } gameObject.transform.rotation = Quaternion.identity; tfFirstGrab = false; } GameObject theButton = GameObject.Find("RotationButton"); if (theButton.GetComponent <RotationButtonControl>().tfFixedRotation) { tfRotateByAngle = true; } else { tfRotateByAngle = false; } moveOffset = gameObject.transform.position - theMouse.GetMousePosition(); } } }
public void OnMouseMoved(Vector2 originalPosition, GameTime gameTime) { var mousePosition = MouseManager.GetMousePosition(); if (MinimapDragging) { if (GameplayState.MinimapFrame.PointInsideFrame(mousePosition)) { var relativeMousePos = mousePosition - GameplayState.MinimapFrame.Position; var worldSize = new Vector2(Config.WorldWidth, Config.WorldHeight); var minimapSize = new Vector2(GameplayState.MinimapFrame.Width, GameplayState.MinimapFrame.Height); var minimapRatio = minimapSize / worldSize; var minimapWorldMousePos = relativeMousePos / minimapRatio; GameplayState.Camera.CenterPosition(minimapWorldMousePos); } else { MinimapDragging = false; } } else if (Dragging) { var left = DragStart.X; var top = DragStart.Y; var right = mousePosition.X; var bottom = mousePosition.Y; if (right < left) { right = DragStart.X; left = mousePosition.X; } if (bottom < top) { bottom = DragStart.Y; top = mousePosition.Y; } DragRect.X = (int)left; DragRect.Y = (int)top; DragRect.Width = (int)(right - left); DragRect.Height = (int)(bottom - top); var worldLeftTop = GameplayState.Camera.ScreenToWorldPosition(new Vector2(left, top)); var worldRightBottom = GameplayState.Camera.ScreenToWorldPosition(new Vector2(right, bottom)); DragRectWorldSpace.X = (int)worldLeftTop.X; DragRectWorldSpace.Y = (int)worldLeftTop.Y; DragRectWorldSpace.Width = (int)(worldRightBottom.X - worldLeftTop.X); DragRectWorldSpace.Height = (int)(worldRightBottom.Y - worldLeftTop.Y); } }
public static void Draw(SpriteBatch spriteBatch) { if (ActiveTooltip == null) { return; } var mousePos = MouseManager.GetMousePosition(); spriteBatch.Draw(ActiveTooltip.Texture, mousePos, Color.White); }
public virtual void Update(GameTime gameTime) { Widgets.Update(gameTime); var mousePos = MouseManager.GetMousePosition(); for (var i = 0; i < Widgets.Widgets.Count; i++) { var widget = Widgets.Widgets[i]; if (widget.PointInsideWidget(mousePos - Position) && widget.Tooltip.Length > 0) { PUITooltipManager.SetActiveTooltip(widget.Tooltip); } } }
public override void OnMouseClicked(MouseButtonID button, GameTime gameTime) { var mousePosition = MouseManager.GetMousePosition(); Menu.OnMouseClicked(button, gameTime); if (!Menu.Focused) { if (_mouseDragging && button == MouseButtonID.Middle) { _mouseDragging = false; } UnitManager.OnMouseClicked(button, gameTime); } }
public override void OnMouseDown(MouseButtonID button, GameTime gameTime) { var mousePosition = MouseManager.GetMousePosition(); Menu.OnMouseDown(button, gameTime); if (!Menu.Focused) { if (!_mouseDragging && button == MouseButtonID.Middle) { _mouseDragging = true; _mouseDragPosition = mousePosition; } UnitManager.OnMouseDown(button, gameTime); } }
public override void OnMouseMoved(Vector2 originalPosition, GameTime gameTime) { var mousePosition = MouseManager.GetMousePosition(); Menu.OnMouseMoved(originalPosition, gameTime); if (!Menu.Focused) { if (_mouseDragging) { var difference = mousePosition - _mouseDragPosition; difference /= Camera.Zoom; Camera.OffsetPosition(-difference); _mouseDragPosition = mousePosition; } UnitManager.OnMouseMoved(originalPosition, gameTime); } }
public void TestMouseCursorSet() { Console.WriteLine(MouseManager.GetMousePosition()); MouseManager.SetMousePosition(0, 0); Console.WriteLine(MouseManager.GetMousePosition()); }
// Update is called once per frame void Update() { if (tfshot) { tfMouseSetting = false; } if (tfMouseSetting) { gameObject.transform.localPosition = Vector3.zero; Vector3 mousePosition = theMouse.GetMousePosition(); Vector3 tailPositionDifference = mousePosition - gameObject.transform.Find("ArrowTail").position; float forceDistance = Vector3.Distance(mousePosition, gameObject.transform.position); float tailDistance = Vector3.Distance(mousePosition, gameObject.transform.Find("ArrowTail").position); gameObject.transform.LookAt(mousePosition); gameObject.transform.eulerAngles = new Vector3(0, gameObject.transform.eulerAngles.y + 180.0f, 0); if (forceDistance < forceLimit) { gameObject.transform.localPosition += tailPositionDifference; } else { gameObject.transform.localPosition += ((tailPositionDifference * (forceLimit / tailDistance)) + (gameObject.transform.position - gameObject.transform.Find("ArrowTail").position)); } theBow.transform.LookAt(mousePosition); theBow.transform.eulerAngles = new Vector3(0, theBow.transform.eulerAngles.y, 90.0f); theRope.GetComponent <RopeReference>().UpdateRopePosition(); if (forceDistance < forceLimit) { speed = forceDistance * speedScale; } else { speed = forceLimit * speedScale; } if (Input.GetMouseButtonDown(1)) { gameObject.transform.localPosition = Vector3.zero; gameObject.transform.Find("ArrowTail").localPosition = Vector3.zero; theRope.GetComponent <RopeReference>().UpdateRopePosition(); tfshot = true; tfFlying = true; tfMouseSetting = false; GameObject.Find("EffectAudio").GetComponent <AudioControl>().PlayBow(); GameObject.Find("ArrowSpawn").GetComponent <ArrowSpawning>().updateArrowCount(); } } //else //{ // if (gameObject == GameObject.Find("ArrowSpawn").GetComponent<ArrowSpawning>().previousObject) // { // if (Input.GetKeyDown(KeyCode.R)) // { // gameObject.transform.Find("ArrowTail").localPosition = originalTailPosition; // gameObject.transform.rotation = originalRotation; // gameObject.transform.position = originalPosition; // preBouncePlate = null; // tfWillBounce = false; // tfshot = false; // tfFlying = false; // tfMouseSetting = true; // } // } //} if (tfFlying) { gameObject.transform.position = Vector3.MoveTowards(gameObject.transform.position, (gameObject.transform.position + gameObject.transform.forward), speed * Time.deltaTime); } if (tfWillBounce) { float newDistance = Vector3.Distance(gameObject.transform.position, preBouncePlate.transform.position); if (newDistance >= preDistance || newDistance < minCheck) { float difference = gameObject.transform.eulerAngles.y - preBouncePlate.transform.eulerAngles.y; gameObject.transform.eulerAngles = new Vector3(0, preBouncePlate.transform.eulerAngles.y + 180.0f - difference, 0); if (preBouncePlate.tag == "BounceBoard") { GameObject.Find("EffectAudio").GetComponent <AudioControl>().PlayHitIron(); } else if (preBouncePlate.tag == "BounceGlass") { GameObject.Find("EffectAudio").GetComponent <AudioControl>().PlayHitGlass(); } tfWillBounce = false; } else { preDistance = newDistance; } } }
public void OnMouseClicked(MouseButtonID button, GameTime gameTime) { var mousePosition = MouseManager.GetMousePosition(); if (button == MouseButtonID.Left && Dragging) { Dragging = false; if (DragRectWorldSpace.Width == 0 && DragRectWorldSpace.Height == 0) { var mouseWorldPos = GameplayState.Camera.ScreenToWorldPosition(mousePosition); DragRectWorldSpace.X = (int)mouseWorldPos.X; DragRectWorldSpace.Y = (int)mouseWorldPos.Y; DragRectWorldSpace.Width = 1; DragRectWorldSpace.Height = 1; CheckSingleSelection(); } if (SelectedShips.Count == 0) { SelectHomeShip(); } } if (button == MouseButtonID.Left && MinimapDragging) { var relativeMousePos = mousePosition - GameplayState.MinimapFrame.Position; var worldSize = new Vector2(Config.WorldWidth, Config.WorldHeight); var minimapSize = new Vector2(GameplayState.MinimapFrame.Width, GameplayState.MinimapFrame.Height); var minimapRatio = minimapSize / worldSize; var minimapWorldMousePos = relativeMousePos / minimapRatio; GameplayState.Camera.CenterPosition(minimapWorldMousePos); MinimapDragging = false; } if (button == MouseButtonID.Right) { var mouseWorldPos = GameplayState.Camera.ScreenToWorldPosition(mousePosition); if (SelectedShips.Count == 0) { GameplayState.WorldManager.PlayerEntity.StateMachine.GetState <PlayerTravelingState>().Target = mouseWorldPos; GameplayState.WorldManager.PlayerEntity.SetState <PlayerTravelingState>(); } else { foreach (var kvp in SelectedShipTypes) { switch (kvp.Key) { case ShipType.Miner: { Asteroid target = GameplayState.WorldManager.GetAsteroidAtWorldPosition(mouseWorldPos); if (target != null && target.ResourceType != ResourceType.None) { foreach (var miner in kvp.Value) { var traveling = miner.StateMachine.GetState <MinerTravelingState>(); traveling.Target = target; miner.SetState(traveling); } } else { var homeShip = GameplayState.WorldManager.GetShipAtWorldPosition(mouseWorldPos, true, new List <ShipType>() { ShipType.HomeShip }); if (homeShip != null) { foreach (Miner miner in kvp.Value) { miner.CurrentMiningTarget = null; var returning = miner.GetState <MinerReturningState>(); returning.Target = miner.Owner; miner.SetState(returning); } } else { foreach (Miner miner in kvp.Value) { miner.CurrentMiningTarget = null; var followPosition = miner.GetState <ShipPatrolPositionState>(); followPosition.Target = mouseWorldPos; miner.SetState(followPosition); } } } } break; case ShipType.Fighter: case ShipType.Bomber: { var newDefendTarget = GameplayState.WorldManager.GetShipAtWorldPosition(mouseWorldPos); if (newDefendTarget != null) { if (newDefendTarget.IsPlayerShip) { foreach (Ship ship in kvp.Value) { AIHelper.SmallDefendTarget(ship, newDefendTarget); } } else { foreach (Ship ship in kvp.Value) { AIHelper.TrySmallAttackTarget(ship, newDefendTarget); } } } else { foreach (Ship ship in kvp.Value) { AIHelper.SmallDefendPosition(ship, mouseWorldPos); } } } break; case ShipType.RepairShip: { var newDefendTarget = GameplayState.WorldManager.GetShipAtWorldPosition(mouseWorldPos); if (newDefendTarget != null) { if (newDefendTarget.IsPlayerShip && newDefendTarget.CurrentArmourHP < newDefendTarget.BaseArmourHP) { foreach (RepairShip ship in kvp.Value) { ship.SetRepairTarget(newDefendTarget); } } else { foreach (Ship ship in kvp.Value) { AIHelper.BigDefendTarget(ship, newDefendTarget); } } } else { foreach (Ship ship in kvp.Value) { AIHelper.BigDefendPosition(ship, mouseWorldPos); } } } break; case ShipType.Battleship: case ShipType.Carrier: case ShipType.SupportCruiser: case ShipType.HeavyCruiser: case ShipType.MissileFrigate: case ShipType.BeamFrigate: { var newDefendTarget = GameplayState.WorldManager.GetShipAtWorldPosition(mouseWorldPos); if (newDefendTarget != null) { if (newDefendTarget.IsPlayerShip) { foreach (Ship ship in kvp.Value) { AIHelper.BigDefendTarget(ship, newDefendTarget); } } else { foreach (Ship ship in kvp.Value) { AIHelper.TryBigAttackTarget(ship, newDefendTarget); } } } else { foreach (Ship ship in kvp.Value) { AIHelper.BigDefendPosition(ship, mouseWorldPos); } } } break; } } } } // right mouse button } // OnMouseClicked
} // Load public override int Update(GameTime gameTime) { if (GameOver || GameWon) { return((int)GameStateType.GameOver); } var mousePosition = MouseManager.GetMousePosition(); var mouseWorldPos = Camera.ScreenToWorldPosition(mousePosition); var centerWorldPos = Camera.ScreenToWorldPosition(WorldManager.ScreenCenter); if (_lockCamera) { Camera.CenterPosition(WorldManager.PlayerEntity.Position); } Menu.GetWidget <PUIWLabel>("lblDebug").Text = Camera.GetViewRect().ToString() + " : " + Camera.Zoom + "\n" + "Asteroids: " + (WorldManager.Asteroids.LastActiveIndex + 1) + "\n" + mouseWorldPos.ToString() + "\n" + centerWorldPos.ToString() + "\n" + WorldManager.PlayerShips.Count.ToString() + " / " + WorldManager.EnemyShips.Count.ToString(); _sbGeneral.Clear(); _sbGeneral.Append("Queue: "); var queueListedCount = 0; for (var i = 0; i < WorldManager.PlayerEntity.BuildQueue.Count && queueListedCount < 3; i++) { var nextShip = WorldManager.PlayerEntity.BuildQueue[i]; _sbGeneral.Append(nextShip.ShipType.ToString() + "(" + (nextShip.Duration / 1000.0f).ToString("0.0") + "s), "); queueListedCount += 1; } if (WorldManager.PlayerEntity.BuildQueue.Count > 0) { _sbGeneral.Remove(_sbGeneral.Length - 2, 2); } if (queueListedCount < WorldManager.PlayerEntity.BuildQueue.Count) { _sbGeneral.Append(" +" + (WorldManager.PlayerEntity.BuildQueue.Count - queueListedCount).ToString() + ""); } _lblProductionQueue.Text = _sbGeneral.ToString(); Menu.Update(gameTime); WorldManager.Update(gameTime); UnitManager.Update(gameTime); ProjectileManager.Update(gameTime); EffectsManager.Update(gameTime); EnemyWaveManager.Update(gameTime); Menu.GetWidget <PUIWLabel>("lblNextEnemyWaveTimer").Text = "Next Enemy Wave: " + (EnemyWaveManager.NextWaveTimer / 1000.0f).ToString("0"); Menu.GetWidget <PUIWLabel>("lblNextEnemyWavePosition").Text = "Next Wave Spawn: " + EnemyWaveManager.NextWavePosition.Name; Menu.GetWidget <PUIWLabel>("lblEnemyCount").Text = "Enemies Alive: " + WorldManager.EnemyShips.Count.ToString(); Menu.GetWidget <PUIWLabel>("lblMinerCount").Text = "Miners: " + WorldManager.Miners.Count.ToString() + " / " + (Config.BaseMinerLimit + UpgradeManager.BonusMaxMiners).ToString(); var idleMiners = 0; foreach (var type in WorldData.ResourceTypes) { MinerResourceCounts[type] = 0; } foreach (var m in WorldManager.Miners) { var miner = (Miner)m; if (miner.CurrentMiningTarget == null) { idleMiners += 1; } else { MinerResourceCounts[miner.CurrentMiningTarget.ResourceType] += 1; } } _btnIdleMiners.ButtonText = "Idle Miners (" + idleMiners.ToString() + ")"; if (idleMiners == 0) { _btnIdleMiners.Visible = false; _btnIdleMiners.Active = false; } else { _btnIdleMiners.Visible = true; _btnIdleMiners.Active = true; } _lblMetal.Text = WorldManager.PlayerEntity.Inventory.Resources[ResourceType.Metal].ToString() + " (" + MinerResourceCounts[ResourceType.Metal].ToString() + ")"; _lblGas.Text = WorldManager.PlayerEntity.Inventory.Resources[ResourceType.Gas].ToString() + " (" + MinerResourceCounts[ResourceType.Gas].ToString() + ")"; _lblWater.Text = WorldManager.PlayerEntity.Inventory.Resources[ResourceType.Water].ToString() + " (" + MinerResourceCounts[ResourceType.Water].ToString() + ")"; _lblCrystal.Text = WorldManager.PlayerEntity.Inventory.Resources[ResourceType.Crystal].ToString() + " (" + MinerResourceCounts[ResourceType.Crystal].ToString() + ")"; _lblUranium.Text = WorldManager.PlayerEntity.Inventory.Resources[ResourceType.Uranium].ToString() + " (" + MinerResourceCounts[ResourceType.Uranium].ToString() + ")"; _btnUpgrades.ButtonText = "Upgrades (" + UpgradeManager.UpgradePoints.ToString() + ")"; _lblUpgradesTitle.Text = "Upgrades (" + UpgradeManager.UpgradePoints.ToString() + " points)"; return(_nextGameState); }