Exemplo n.º 1
0
        public Button(string text, Vector2 position, Texture2D buttonSprite, SpriteFont font, IPostOfficeService postOffice, PostOfficeEventArgs args)
        {
            // Initialise local variables
            _clickReady = false;
            _guid       = Guid.NewGuid();
            _canUpdate  = true;

            // Store local variables passed in
            _text         = text;
            _position     = position;
            _buttonSprite = buttonSprite;
            _font         = font;
            _postOffice   = postOffice;
            _args         = args;

            // Register at the post office
            _postOffice.RegisterClient(this, _guid.ToString());

            // Measure and center text
            var textRadii    = _font.MeasureString(_text) / 2;
            var buttonCenter = new Vector2(_buttonSprite.Width / 2, _buttonSprite.Height / 2);
            var textOffset   = buttonCenter - textRadii;

            _textPosition = _position + textOffset;

            // Set up rectangles for collision.
            _buttonCollisionRectangle = new Rectangle((int)_position.X, (int)_position.Y, _buttonSprite.Width, _buttonSprite.Height);
        }
Exemplo n.º 2
0
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            _spriteBatch = new SpriteBatch(GraphicsDevice);

            // Load textures and fonts
            _font          = Content.Load <SpriteFont>("BlackChancery");
            _buttonTexture = Content.Load <Texture2D>("WoodButton");
            var squirrel1 = Content.Load <Texture2D>("squirrel1");
            var gateLevel = Content.Load <Texture2D>("gate_level");

            var upgradeBar = new Texture2D(GraphicsDevice, GraphicsDevice.PresentationParameters.Bounds.Width, 100);

            var colorData = new Color[100 * GraphicsDevice.PresentationParameters.Bounds.Width];

            for (int i = 0; i < 100 * GraphicsDevice.PresentationParameters.Bounds.Width; i++)
            {
                colorData[i] = Color.DarkSlateGray;
            }
            upgradeBar.SetData(colorData);

            var stone       = new Texture2D(GraphicsDevice, 10, 10);
            var stoneColors = new Color[100];

            for (int i = 0; i < 100; i++)
            {
                stoneColors[i] = Color.Black;
            }

            stone.SetData(stoneColors);

            // Create Objects
            var gate = new Gate();

            // Create factories
            var buttonFactory   = new ButtonFactory(_buttonTexture, _font, _postOffice);
            var textFactory     = new TextFactory(_font);
            var squirrelFactory = new SquirrelFactory(squirrel1, gate);


            // Create Managers
            var leaderboardManager    = new LeaderboardManager();
            var playerMetaDataManager = new PlayerMetaDataManager(_postOffice);

            var moneyManager = new MoneyManager(_postOffice);
            var statsManager = new StatsManager(_postOffice, moneyManager);

            // Register states to the state manager
            _stateManager.RegisterState(new MenuState(buttonFactory, textFactory));

            var nameInputState = new NameInputState(buttonFactory, textFactory, _postOffice,
                                                    GraphicsDevice.PresentationParameters.Bounds);

            _stateManager.RegisterState(nameInputState);
            _stateManager.RegisterState(new LeaderboardState(buttonFactory, textFactory, leaderboardManager));
            _stateManager.RegisterState(new ExitState(this));

            var playState = new PlayState(_postOffice, squirrelFactory, buttonFactory, textFactory, statsManager, moneyManager, gateLevel,
                                          GraphicsDevice.PresentationParameters.Bounds, upgradeBar, stone, gate);

            _stateManager.RegisterState(playState);

            var loseState = new LoseState(buttonFactory, textFactory, _postOffice, leaderboardManager);

            _stateManager.RegisterState(loseState);

            var flavourText = new FlavourTextState(buttonFactory, textFactory);

            _stateManager.RegisterState(flavourText);


            // Register clients to the post office
            _postOffice.RegisterClient((ILetterbox)_stateManager, "StateManager");
            _postOffice.RegisterClient((ILetterbox)playerMetaDataManager, playerMetaDataManager.LetterboxName);
            _postOffice.RegisterClient((ILetterbox)nameInputState, nameInputState.StateRegisterName);
            _postOffice.RegisterClient((ILetterbox)statsManager, statsManager.LetterboxName);
            _postOffice.RegisterClient((ILetterbox)playState, playState.LetterboxName);
            _postOffice.RegisterClient((ILetterbox)moneyManager, moneyManager.LetterboxName);
            _postOffice.RegisterClient((ILetterbox)gate, "Gate");
            _postOffice.RegisterClient((ILetterbox)loseState, loseState.StateRegisterName);

            // Set the initial state to the menu
            _postOffice.SendMail("Null",
                                 new PostOfficeEventArgs()
            {
                SendAddress = "StateManager",
                MessageName = "SetInitialState",
                Data        = Encoding.ASCII.GetBytes("Menu")
            });

            // TODO: use this.Content to load your game content here
        }