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();
         }
     }
 }
Beispiel #2
0
        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);
            }
        }
Beispiel #3
0
        public static void Draw(SpriteBatch spriteBatch)
        {
            if (ActiveTooltip == null)
            {
                return;
            }

            var mousePos = MouseManager.GetMousePosition();

            spriteBatch.Draw(ActiveTooltip.Texture, mousePos, Color.White);
        }
Beispiel #4
0
        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);
                }
            }
        }
Beispiel #5
0
        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);
            }
        }
Beispiel #6
0
        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);
            }
        }
Beispiel #7
0
        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);
            }
        }
Beispiel #8
0
 public void TestMouseCursorSet()
 {
     Console.WriteLine(MouseManager.GetMousePosition());
     MouseManager.SetMousePosition(0, 0);
     Console.WriteLine(MouseManager.GetMousePosition());
 }
Beispiel #9
0
    // 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;
            }
        }
    }
Beispiel #10
0
        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
Beispiel #11
0
        } // 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);
        }