Exemplo n.º 1
0
    public void Start()
    {
        pointer          = GetComponent <VRTK_Pointer>();
        bezierRenderer   = GetComponent <VRTK_BezierPointerRenderer>();
        straightRenderer = GetComponent <VRTK_StraightPointerRenderer>();

        attacker  = PlayerController.GetComponent <PlayerAttacker>();
        commander = PlayerController.GetComponent <PlayerCommander>();
        digger    = PlayerController.GetComponent <PlayerDigger>();
        flyer     = PlayerController.GetComponent <PlayerFlyer>();
        grabber   = PlayerController.GetComponent <PlayerGrabber>();
        mover     = PlayerController.GetComponent <PlayerMover>();
        summoner  = PlayerController.GetComponent <PlayerSummoner>();

        mover.PointerRenderer = bezierRenderer;

        SetPointer(false);

        pointer.DestinationMarkerHover += (object marker, DestinationMarkerEventArgs args) => {
            destinationArgs = args;
            destination     = args.destinationPosition;
        };

        controllerEvents = GetComponent <VRTK_ControllerEvents>();

        controllerEvents.TriggerPressed   += OnTriggerPressed;
        controllerEvents.TriggerReleased  += OnTriggerReleased;
        controllerEvents.TouchpadPressed  += OnTouchpadPressed;
        controllerEvents.TouchpadReleased += OnTouchpadReleased;
    }
        public void Update(GameTime gameTime, PlayerIndex playerIndex, PlayerCommander player, bool clampMouse)
        {
#if WINDOWS
            //if game is not the current focus, then ignore all input devices.
            if (!FrameworkCore.isActive)
            {
                ClearAll();
                return;
            }
#endif



            try
            {
                lastPadState = gamePadState;
                gamePadState = GamePad.GetState(playerIndex, GamePadDeadZone.Circular);
            }
            catch
            {
            }

#if WINDOWS
            if (pristineMouseInfo == null)
            {
                if (Mouse.GetState().LeftButton == ButtonState.Released &&
                    Mouse.GetState().RightButton == ButtonState.Released)
                {
                    pristineMouseInfo = Mouse.GetState();
                }
            }

            if (player == null || (player != null && player.mouseEnabled))
            {
                lastKeyboardState = keyboardState;
                keyboardState     = Keyboard.GetState();

                UpdateMouseInfo();

                if (mouseRightHeld)
                {
                    ClampMouse(clampMouse);

                    float delta = (float)(gameTime.ElapsedGameTime.TotalMilliseconds /
                                          TimeSpan.FromMilliseconds(100).TotalMilliseconds);
                    mouseCameraTimer = MathHelper.Clamp(mouseCameraTimer + delta, 0, 1);

                    if (mouseCameraTimer >= 1 && !MouseCameraMode)
                    {
                        MouseCameraMode = true;
                    }
                }
                else if (MouseCameraMode || mouseCameraTimer > 0)
                {
                    MouseCameraMode  = false;
                    mouseCameraTimer = 0;
                }
            }
#endif
        }
        public virtual void Draw(GameTime gameTime, Camera camera, PlayerCommander curPlayer)
        {
            if (hulks.Count <= 0)
            {
                return;
            }

            for (int i = 0; i < hulks.Count; i++)
            {
                if (!Helpers.IsHulk(hulks[i]))
                {
                    continue;
                }

                Hulk item = (Hulk)hulks[i];


                if (!FrameworkCore.HideHud)
                {
                    if (!FrameworkCore.level.isDemo)
                    {
                        Vector3 gridPos = item.Position;
                        gridPos.Y = curPlayer.GridAltitude;
                        Color lineColor = new Color(96, 96, 96, 160);

                        //The rod line attached to asteroids/rubble/etc.
                        FrameworkCore.lineRenderer.Draw(item.Position, gridPos, lineColor);

                        Helpers.DrawDiamond(gridPos, .5f, lineColor); //BC 3-28-2019 New addition to 2019 build.
                        //Helpers.DrawDiamond(gridPos, item.BSphere.Radius, lineColor);
                        //FrameworkCore.pointRenderer.Draw(gridPos, 6, new Color(0, 0, 0, 128));
                        //FrameworkCore.pointRenderer.Draw(gridPos, 4, lineColor);
                    }
                }
                //FrameworkCore.discRenderer.Draw(1.5f, gridPos, lineColor);



                Matrix worldMatrix = Matrix.CreateFromQuaternion(item.Rotation);
                worldMatrix.Translation = item.Position;

                FrameworkCore.meshRenderer.Draw(item.modelMesh, worldMatrix, camera);

                if (FrameworkCore.debugMode)
                {
                    for (int k = 0; k < item.CollisionSpheres.Length; k++)
                    {
                        BoundingSphere sphere = item.CollisionSpheres[k].sphere;
                        FrameworkCore.sphereRenderer.Draw(sphere, Matrix.Identity, Color.LimeGreen);
                    }
                }
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Retrieves the unwrapped player commander from the scene.
        /// </summary>
        /// <returns>The tile grid instance (with no notion of monobehaviour).</returns>
        public PlayerCommander GetInstance(TileGrid grid)
        {
            // Create the new commander and add it to the grid.
            PlayerCommander commander =
                new PlayerCommander(teamID, grid, controller.GetInstance(grid), buttonsListener);

            grid.Commanders.Add(commander);
            // Bind the pause curtain to the new player.
            // TODO this approach does not support multiple human players.
            pauseCurtain.DrivingCommander = commander;
            // Destroy this script's Monobehaviour baggage,
            // and return the lightweight instance.
            Destroy(this);
            return(commander);
        }
Exemplo n.º 5
0
    void Start()
    {
        if (instance)
        {
            Destroy(gameObject);
        }
        else
        {
            instance = this;
        }

        unit1 = Instantiate(cursorPrefab, transform.position + new Vector3(-0.5f, 0.0f), Quaternion.identity);
        unit1.GetComponentInChildren <SpriteRenderer>().color = new Color(0.0f, 0.8f, 1.0f);
        unit2 = Instantiate(cursorPrefab, transform.position + new Vector3(0.5f, 0.0f), Quaternion.identity);
        unit2.GetComponentInChildren <SpriteRenderer>().color = new Color(1.0f, 0.68f, 0.0f);
    }
        private void StartCampaign()
        {
            if (isLoadDone)
            {
                return;
            }

            isLoadDone = true;
            Deactivate();

            if (Player2Joined)
            {
                PlayerCommander player2 = new PlayerCommander(player2Index,
                                                              Faction.Blue.altColor, Faction.Blue.altColor);

#if WINDOWS
                player2.mouseEnabled = FrameworkCore.options.p2UseMouse;
#endif

                if (FrameworkCore.players.Count <= 1)
                {
                    FrameworkCore.players.Add(player2);
                }

                //assign the name to player2.
                FrameworkCore.players[1].commanderName = player2Name;
                FrameworkCore.players[1].ShipColor     = Faction.Blue.altColor;
                FrameworkCore.players[1].TeamColor     = Faction.Blue.altColor;

                //give player 2 a ship.
                if (FrameworkCore.players[0].campaignShips[1] != null)
                {
                    FrameworkCore.players[0].campaignShips[1].childShip = true;
                }
            }

            FrameworkCore.level.ClearAll();
            FrameworkCore.worldMap  = new WorldMap();
            FrameworkCore.gameState = GameState.WorldMap;
            FrameworkCore.worldMap.EnterMap();
        }
            public static AudioListener nearestListener(Vector3 soundPos)
            {
                if (players.Count <= 1)
                {
                    return(players[0].Listener);
                }

                float           closestDist   = float.MaxValue;
                PlayerCommander closestPlayer = null;

                for (int i = 0; i < players.Count; i++)
                {
                    float curDist = Helpers.FastDistanceCheck(players[i].position, soundPos);
                    if (curDist < closestDist)
                    {
                        closestDist   = curDist;
                        closestPlayer = players[i];
                    }
                }

                return(closestPlayer.Listener);
            }
 void Awake()
 {
     pc       = GameObject.Find("PlayerCommander").GetComponent <PlayerCommander>();
     rend     = selectionIndicator.GetComponent <Renderer> ();
     colStart = rend.material.color;
 }
Exemplo n.º 9
0
 public CommandMenu(Game game, PlayerCommander owner)
     : base(game, owner)
 {
 }
Exemplo n.º 10
0
 public Menu(Game game, PlayerCommander owner)
 {
     this.owner = owner;
 }
        public override void Update(GameTime gameTime, InputManager inputManager)
        {
            if (IsLoading)
            {
                if (loadTransition >= 1 && !hasLoadedLevel)
                {
                    hasLoadedLevel = true;
                    StartSkirmish(gameTime);
                    Deactivate();
                }

                float delta = (float)(gameTime.ElapsedGameTime.TotalMilliseconds /
                                      TimeSpan.FromMilliseconds(400).TotalMilliseconds);
                loadTransition = MathHelper.Clamp(loadTransition + delta, 0, 1);

                return;
            }

            if (Transition >= 1)
            {
                if (inputManager.buttonStartPressed && !IsLoading)
                {
                    IsLoading = true;
                }

                for (int i = 0; i < 4; i++)
                {
                    PlayerIndex index = PlayerIndex.One;

                    if (i == 0)
                    {
                        index = PlayerIndex.One;
                    }
                    else if (i == 1)
                    {
                        index = PlayerIndex.Two;
                    }
                    else if (i == 2)
                    {
                        index = PlayerIndex.Three;
                    }
                    else
                    {
                        index = PlayerIndex.Four;
                    }

                    if (FrameworkCore.MenuInputs[i].buttonAPressed)
                    {
                        if (index == FrameworkCore.ControllingPlayer)
                        {
                            continue;
                        }

                        //another player wants to join.

                        if (getFirstUnoccupiedSlot() == null)
                        {
                            return;
                        }

                        //we need to add another player to the player list.
                        if (FrameworkCore.players.Count <= 1)
                        {
                            PlayerCommander player2 = new PlayerCommander(index, Color.White, Color.White);

#if WINDOWS
                            player2.mouseEnabled = FrameworkCore.options.p2UseMouse;
#endif
                            if (FrameworkCore.players.Count <= 1)
                            {
                                FrameworkCore.players.Add(player2);
                            }

                            player2.commanderName = Helpers.GenerateName("Gamertag");
                        }

                        bool player2HasJoined = false;
                        foreach (MenuItem item in menuItems)
                        {
                            if (item.commander == FrameworkCore.players[1])
                            {
                                player2HasJoined = true;
                                break;
                            }
                        }

                        if (!player2HasJoined)
                        {
                            Player2Join();
                        }
                    }
                }


                //do the fleet setup logic.
                if (inputManager.sysMenuRight)
                {
                    if (selectedItem.commander == null)
                    {
                        return;
                    }

                    selectedItem.shipArraySelection = (int)MathHelper.Clamp(
                        selectedItem.shipArraySelection + 1,
                        -1,
                        selectedItem.shipArray.Length - 1);
                }
                else if (inputManager.sysMenuLeft)
                {
                    if (selectedItem.commander == null)
                    {
                        return;
                    }

                    selectedItem.shipArraySelection = (int)MathHelper.Clamp(
                        selectedItem.shipArraySelection - 1,
                        -1,
                        selectedItem.shipArray.Length - 1);
                }

                if (inputManager.buttonAPressed && selectedItem != null && selectedItem.shipArraySelection >= 0)
                {
                    if (selectedItem.commander == null)
                    {
                        return;
                    }

                    //modify what ship is in this slot.
                    OpenShipSelection(inputManager.playerIndex);
                }


                if (inputManager.buttonXPressed && selectedItem != null && selectedItem.shipArraySelection >= 0)
                {
                    if (selectedItem.shipArray[selectedItem.shipArraySelection] != null)
                    {
                        FrameworkCore.PlayCue(sounds.click.beep);
                    }

                    selectedItem.shipArray[selectedItem.shipArraySelection] = null;
                }

#if WINDOWS
                foreach (MenuItem item in menuItems)
                {
                    Rectangle itemRect = new Rectangle(
                        (int)item.position.X,
                        (int)item.position.Y - 24,
                        512,
                        48);

                    if (itemRect.Contains((int)inputManager.mousePos.X, (int)inputManager.mousePos.Y))
                    {
                        if (inputManager.mouseHasMoved)
                        {
                            selectedItem            = item;
                            item.shipArraySelection = -1;
                        }

                        if (inputManager.mouseLeftClick)
                        {
                            ActivateItem(inputManager);
                        }
                    }

                    if (menuItems.IndexOf(item) <= 3)
                    {
                        //one of the player slots.
                        if (item.commander == null)
                        {
                            continue;
                        }

                        for (int i = 0; i < item.shipArray.Length; i++)
                        {
                            Rectangle shipRect = new Rectangle(
                                (int)item.position.X + sprite.vistaBox.Width + 8 + (i * 96),
                                (int)item.position.Y - 32,
                                96,
                                64);

                            if (shipRect.Contains((int)inputManager.mousePos.X, (int)inputManager.mousePos.Y))
                            {
                                selectedItem            = item;
                                item.shipArraySelection = i;

                                if (inputManager.kbDelPressed)
                                {
                                    if (selectedItem != null)
                                    {
                                        if (selectedItem.shipArray[item.shipArraySelection] != null)
                                        {
                                            FrameworkCore.PlayCue(sounds.click.beep);
                                        }

                                        selectedItem.shipArray[item.shipArraySelection] = null;
                                    }
                                }

                                if (inputManager.mouseLeftClick)
                                {
                                    OpenShipSelection(FrameworkCore.ControllingPlayer);
                                }
                            }
                        }
                    }
                }
#endif
            }

            //This is an ugly hack! We need a short period of time we ignore the inputstates
            // because the player2join buttonpress is interfering with standard buttonpresses.
            if (player2JoinTimer > 0)
            {
                player2JoinTimer -= (int)gameTime.ElapsedGameTime.TotalMilliseconds;
                return;
            }

            base.Update(gameTime, inputManager);
        }
        private void SlotLogic(int slotNumber, PlayerCommander player)
        {
            //let player2 remove himself.
            if (FrameworkCore.players.Count >= 2)
            {
                //player2 clicked himself.
                if (menuItems[slotNumber].commander == player &&
                    player == FrameworkCore.players[1])
                {
                    SkirmishPopup popup = new SkirmishPopup(Owner);
                    popup.screenPos    = selectedItem.position + new Vector2(96, 16);
                    popup.hideChildren = false;

                    MenuItem item = new MenuItem(Resource.MenuSkirmishSlotClear);
                    item.Selected   += ClearSlot;
                    item.GenericInt1 = slotNumber;
                    popup.AddItem(item);

                    item           = new MenuItem(Resource.MenuCancel);
                    item.Selected += closePopup;
                    popup.AddItem(item);

                    Owner.AddMenu(popup);

                    return;
                }
            }

            if (menuItems[slotNumber].commander == player ||
                menuItems[slotNumber].commander == FrameworkCore.players[0])
            {
                //selected slot this player is already in.
            }
            else
            {
                SkirmishPopup popup = new SkirmishPopup(Owner);
                popup.screenPos    = selectedItem.position + new Vector2(96, 16);
                popup.hideChildren = false;

                MenuItem item = null;

                //ADD COMPUTER.
                if (menuItems[slotNumber].commander == null)
                {
                    item             = new MenuItem(Resource.MenuSkirmishEasyAdd);
                    item.Selected   += AddAI;
                    item.GenericInt1 = slotNumber;
                    popup.AddItem(item);
                }

                //MOVE TO SLOT.
                if (menuItems[slotNumber].commander == null ||
                    (menuItems[slotNumber].commander != null &&
                     menuItems[slotNumber].commander.GetType() != typeof(PlayerCommander)))
                {
                    item             = new MenuItem(Resource.MenuSkirmishSlotMove);
                    item.commander   = player;//stuff data into this menu entry.
                    item.GenericInt1 = slotNumber;
                    item.Selected   += MoveToSlot;
                    popup.AddItem(item);
                }

                if (menuItems[slotNumber].commander != null)
                {
                    if (menuItems[slotNumber].commander != FrameworkCore.players[0])
                    {
                        item             = new MenuItem(Resource.MenuSkirmishSlotClear);
                        item.Selected   += ClearSlot;
                        item.GenericInt1 = slotNumber;
                        popup.AddItem(item);
                    }
                }

                item           = new MenuItem(Resource.MenuCancel);
                item.Selected += closePopup;
                popup.AddItem(item);

                Owner.AddMenu(popup);
            }
        }
Exemplo n.º 13
0
 public PlaybackMenu(Game game, PlayerCommander owner)
     : base(game, owner)
 {
     buttonPositions = new Vector2[3];
 }
Exemplo n.º 14
0
 void CalcFleetPoints()
 {
     //Placeholder values.
     commandLevel = PlayerCommander.GetLevel();
     fleetPoints  = commandLevel * 100;
 }
Exemplo n.º 15
0
 public virtual void Draw(GameTime gameTime, Camera camera, PlayerCommander curplayer)
 {
 }
Exemplo n.º 16
0
 public override void Draw(GameTime gameTime, Camera camera, PlayerCommander curPlayer)
 {
 }