public RemoteControllHand(PlayerController _controller)
        {
            playerController = _controller;
            PlayerCharacter player = _controller.character;

            playerColor = player.color;

            Vector2 pos = player.location.toScreenCoord();
            pos.X = (pos.X - Constants.windowSizeX * 0.5F) * 0.8F + Constants.windowSizeX * 0.5F;
            pos.Y = Constants.windowScaleFactor * 500;
            Vector2 scale = Vector2.One * 0.5F * Constants.windowScaleFactor;
            if (pos.X > Constants.windowSizeX * 0.5F)
                scale.X *= -1F;

            baseSprite = new Sprite(AssetManager.getTexture(AssetManager.TextureName.Hand));
            CenterSpriteOriginAndSetAttributes(baseSprite, scale, pos);

            flagSprite = new Sprite(AssetManager.getTexture(AssetManager.TextureName.RemoteFlag));
            CenterSpriteOriginAndSetAttributes(flagSprite, scale, pos);

            flagColorablePartSprite = new Sprite(AssetManager.getTexture(AssetManager.TextureName.RemoteFlagWhitePart));
            CenterSpriteOriginAndSetAttributes(flagColorablePartSprite, scale, pos, playerColor);

            leftThumbSprite = new Sprite(AssetManager.getTexture(AssetManager.TextureName.LeftThumb_Mid));
            CenterSpriteOriginAndSetAttributes(leftThumbSprite, scale, pos);

            rightThumbSprite = new Sprite(AssetManager.getTexture(AssetManager.TextureName.RightThumb_Mid));
            CenterSpriteOriginAndSetAttributes(rightThumbSprite, scale, pos);

            leftFingerSprite = new Sprite(AssetManager.getTexture(AssetManager.TextureName.LeftFinger_Up));
            CenterSpriteOriginAndSetAttributes(leftFingerSprite, scale, pos);

            rightFingerSprite = new Sprite(AssetManager.getTexture(AssetManager.TextureName.RightFinger_Down));
            CenterSpriteOriginAndSetAttributes(rightFingerSprite, scale, pos);

            jumpbarSprite = new Sprite(AssetManager.getTexture(AssetManager.TextureName.Jumpbar1));
            CenterSpriteOriginAndSetAttributes(jumpbarSprite, scale, pos);
        }
示例#2
0
        private void ResetPlayers()
        {
            PlayerCharacter.playerCount = 0;

            resetCounter = 0;

            if (playerChars == null) { playerChars = new List<PlayerCharacter>(); }
            else { playerChars.Clear(); }
            if (controllers == null) { controllers = new List<Controller>(); }
            else { controllers.Clear(); }

            if (dekoHands == null) { dekoHands = new List<DekoElements.RemoteControllHand>(); }
            else { dekoHands.Clear(); }

            // find a controller for the Players
            foreach (uint i in GamePadInputManager.connectedPadIndices)
            {
                PlayerCharacter player = new PlayerCharacter(physicsWorld, startPostitions[playerChars.Count]);
                PlayerController playerController = new PlayerController(player, i);

                dekoHands.Add(new DekoElements.RemoteControllHand(playerController));

                playerChars.Add(player);
                controllers.Add(playerController);

                if (playerChars.Count == numPlayers)
                    break;
            }

            // if there are more Players than GamePads, give them invalid indices, so they will use Keyboard-Input
            // Cord: nullable would be better code, I guess...
            while (playerChars.Count < numPlayers)
            {
                PlayerCharacter player = new PlayerCharacter(physicsWorld, startPostitions[playerChars.Count]);
                PlayerController playerController = new PlayerController(player, uint.MaxValue);
                dekoHands.Add(new DekoElements.RemoteControllHand(playerController));

                playerChars.Add(player);
                controllers.Add(playerController);
            }
        }