Beispiel #1
0
        public override void onAddedToEntity()
        {
            var bmfont = entity.scene.content.Load <SpriteFont>("Fonts/font");

            font        = new NezSpriteFont(bmfont);
            coinTexture = entity.scene.content.Load <Texture2D>("Sprites/Coin");
        }
Beispiel #2
0
        public NameField(NezSpriteFont font, Color color)
        {
            var textComponent = new Text(font, $"Name: {GameManager.playerName}", new Vector2(0, 0), color);

            addComponent(textComponent);
            this.text = textComponent;
        }
Beispiel #3
0
        public TitleText(string text, NezSpriteFont font, Color color)
        {
            var textComponent = new Text(font, text, new Vector2(0, 0), color);

            addComponent(textComponent);
            this.text = textComponent;
        }
Beispiel #4
0
        public static void Start()
        {
            gameScene  = Scene.createWithDefaultRenderer(Color.DarkMagenta);
            Core.scene = gameScene;

            nezFont = new NezSpriteFont(gameScene.content.Load <SpriteFont>("testFont"));

            gameScene.content.Load <SoundEffect>("StartSound").Play(0.4f, 0.0f, 0.0f);
            startText.destroy();
            Title.destroy();

            Spider spider = new Spider();

            player = spider;
            WaveManager waveManager = new WaveManager();

            spider.waveManager = waveManager;

            gameScene.addEntity(spider);

            gameScene.addEntity(waveManager);

            InitializeLevel();
            InitializeGUI();

            waveManager.Start();
        }
Beispiel #5
0
        private static void AddStartText()
        {
            nezFont = new NezSpriteFont(titleScene.content.Load <SpriteFont>("testFont"));

            Title = new TitleText("SPIDER STRIDER", nezFont, Color.Yellow);
            titleScene.addEntity(Title);

            Title.transform.scale = new Vector2(8, 8);
            Title.position        = new Vector2(GameManager.Width / 2, GameManager.Height / 8);
            Title.position       -= new Vector2(Title.text.width / 2, Title.text.height / 2);

            startText = new StartText("START", nezFont, Color.Red);
            titleScene.addEntity(startText);

            startText.transform.scale = new Vector2(3, 3);
            startText.position        = new Vector2(GameManager.Width / 2, GameManager.Height / 4);
            startText.position       -= new Vector2(startText.text.width / 2, startText.text.height / 2);


            titleScene.addEntity(GetHighScoreBoard(nezFont));

            NameField nameField = new NameField(nezFont, Color.Black);

            titleScene.addEntity(nameField);

            nameField.transform.scale = new Vector2(3, 3);
            nameField.position        = new Vector2(GameManager.Width / 2, GameManager.Height / 3f);
            nameField.position       -= new Vector2(nameField.text.width / 2, nameField.text.height / 2);
        }
Beispiel #6
0
        protected override void Initialize( )
        {
            base.Initialize( );

            // Create the scene
            var playScene = Scene.createWithDefaultRenderer(new Color(51, 68, 85));

            // Load the games fonts and create associated spritefonts
            var bigFont         = playScene.content.Load <SpriteFont>("fonts/BigFont");
            var smallFont       = playScene.content.Load <SpriteFont>("fonts/SmallFont");
            var bigSpritefont   = new NezSpriteFont(bigFont);
            var smallSpritefont = new NezSpriteFont(smallFont);

            // Setup the scene
            var boardPos = setupBoard(playScene);

            setupScoreDisplay(playScene, bigSpritefont, boardPos);
            setupNextShapeDisplay(playScene, bigSpritefont, boardPos);
            setupHelp(playScene, smallSpritefont, boardPos);

            // Setup the audio
            setupAudio(playScene);

            // Set core scene
            scene = playScene;
        }
Beispiel #7
0
        public override void OnAddedToScene(Scene scene)
        {
            base.OnAddedToScene(scene);

            var f = scene.Content.Load <SpriteFont>("Fonts/Font");

            font = new NezSpriteFont(f);
        }
Beispiel #8
0
        public StartText(string text, NezSpriteFont font, Color color) : base(text, font, color)
        {
            Timer startButtonFlash = new Timer(new TimerCallback((o) =>
            {
                setEnabled(!enabled);
            }));

            startButtonFlash.Change(1000, 1000);
        }
Beispiel #9
0
        public SideBarButton(NezSpriteFont font)
        {
            DisplayName   = new Text(font, String.Empty, Vector2.Zero, Color.Black);
            DisplayNumber = new Text(font, String.Empty, Vector2.Zero, Color.Black);
            DisplayStatus = new Text(font, String.Empty, Vector2.Zero, Color.Black);

            addComponent(DisplayName);
            addComponent(DisplayNumber);
            addComponent(DisplayStatus);
        }
Beispiel #10
0
        public SpecUi(NezSpriteFont font)
        {
            DisplayName = new Text(font, SpecTitle, Vector2.Zero, Color.Black);
            Spec        = new Text(font, string.Empty, Vector2.Zero, Color.Black);
            ExtraSpec   = new Text(font, string.Empty, Vector2.Zero, Color.Black);

            addComponent(DisplayName);
            addComponent(Spec);
            addComponent(ExtraSpec);
        }
Beispiel #11
0
        public ScoreCounter(string text, NezSpriteFont font, Color color) : base(text, font, color)
        {
            Points = 0;

            powerUpList = new Stack <Powerup>();

            for (int i = 0; i < 10; i++)
            {
                powerUpList.Push(new Powerup());
            }
        }
Beispiel #12
0
        public override void onAddedToScene()
        {
            base.onAddedToScene();

            // Load scoreFont and put it in a NezSpriteFont (it needs in Text() component)
            var scoreFont = new NezSpriteFont(scene.content.Load <SpriteFont>(Content.Font.scoreFont));

            // Components to draw text score
            _textScore = new Text(scoreFont, "", new Vector2(Screen.width / 2, 30), Color.White);
            addComponent(_textScore);
        }
Beispiel #13
0
        public HeroButton(NezSpriteFont font, Texture2D texture, Hero hero) : base(font)
        {
            Hero = hero;

            DisplayName.text   = Hero.Name;
            DisplayNumber.text = Hero.Cost.ToString();

            Hero.Updated += HeroUpdated;

            addComponent(new Sprite(texture));
        }
Beispiel #14
0
        public static TitleText GetHighScoreBoard(NezSpriteFont font)
        {
            string highscores = "Highscores\n";

            foreach (Highscore score in HighScoreManager.highscores)
            {
                highscores += $"{score.name}: {score.score}\n";
            }

            TitleText scores = new TitleText(highscores, font, Color.White);

            scores.position        = new Vector2(GameManager.Width / 2, GameManager.Height / 2.5f);
            scores.position       -= new Vector2(scores.text.width, 0);
            scores.transform.scale = new Vector2(2, 2);
            return(scores);
        }
        public TechBuildingButton(NezSpriteFont font, TechLevel level) : base(font)
        {
            switch (level)
            {
            case TechLevel.One:
                TechLevelString = one;
                break;

            case TechLevel.Two:
                TechLevelString = two;
                break;

            case TechLevel.Three:
                TechLevelString = three;
                break;
            }
            DisplayName.text = tech + TechLevelString;
        }
Beispiel #16
0
        public UiAssets()
        {
            PixeledBMFont = FufCore.contentSource.Load <BitmapFont>("Fonts/bm_pixeled");
            AndinaBMFont  = FufCore.contentSource.Load <BitmapFont>("Fonts/bm_andina");

            Andina      = new NezSpriteFont(FufCore.contentSource.Load <SpriteFont>("Fonts/andina"));
            AndinaLarge = new NezSpriteFont(FufCore.contentSource.Load <SpriteFont>("Fonts/andina_lg"));

            const int buttonColorVal = 60;

            TextButtonStyle = new TextButtonStyle(
                new PrimitiveDrawable(new Color(buttonColorVal, buttonColorVal, buttonColorVal)),
                new PrimitiveDrawable(new Color(buttonColorVal, buttonColorVal, buttonColorVal, 204)),
                new PrimitiveDrawable(new Color(buttonColorVal, buttonColorVal, buttonColorVal, 153)))
            {
                downFontColor     = Color.Gray,
                font              = PixeledBMFont,
                fontColor         = Color.GhostWhite,
                disabledFontColor = Color.DimGray
            };
        }
Beispiel #17
0
        public void GameFinish()
        {
            GameManager.gameScene.destroyAllEntities();
            active      = false;
            currentWave = waveList.Count + 1;
            MediaPlayer.Stop();

            var gameOverScene = Scene.createWithDefaultRenderer(Color.DarkGray);

            Core.scene = gameOverScene;

            var nezFont = new NezSpriteFont(gameOverScene.content.Load <SpriteFont>("testFont"));

            gameOverScene.content.Load <SoundEffect>("GameOverJingle").Play(0.4f, 0.0f, 0.0f);

            HighScoreManager.highscores.Add(new Highscore(GameManager.playerName, ScoreCounter.Points));
            HighScoreManager.highscores.Sort((a, b) => b.score.CompareTo(a.score));
            HighScoreManager.SaveFile();

            gameOverScene.addEntity(GameManager.GetHighScoreBoard(nezFont));

            GameOverText gameOverText = new GameOverText("GAME OVER", nezFont, Color.Red);
            TitleText    score        = new TitleText($"SCORE: {ScoreCounter.Points}", nezFont, Color.Yellow);

            gameOverScene.addEntity(gameOverText);

            gameOverText.transform.scale = new Vector2(8, 8);
            gameOverText.position        = new Vector2(GameManager.Width / 2, GameManager.Height / 5);
            gameOverText.position       -= new Vector2(gameOverText.text.width / 2, gameOverText.text.height / 2);

            gameOverScene.addEntity(score);

            score.transform.scale = new Vector2(3, 3);
            score.position        = new Vector2(GameManager.Width / 2, GameManager.Height / 3);
            score.position       -= new Vector2(score.text.width / 2, score.text.height / 2);
        }
Beispiel #18
0
 public GoldUi(NezSpriteFont font)
 {
     Gold = new Text(font, 0.ToString(), Vector2.Zero, Color.Black);
     addComponent(Gold);
 }
Beispiel #19
0
 public ZoneButton(NezSpriteFont font, string name, int count) : base(font)
 {
     DisplayName.text   = name;
     DisplayNumber.text = count.ToString();
 }
Beispiel #20
0
 public BaseButton(NezSpriteFont font) : base(font)
 {
     DisplayName.text   = baseName;
     DisplayNumber.text = GameBase.Health.ToString();
     //addComponent(new BoxCollider(texture.Width, texture.Height
 }
Beispiel #21
0
 public GameOverText(string text, NezSpriteFont font, Color color) : base(text, font, color)
 {
 }
Beispiel #22
0
 public AddOnButton(NezSpriteFont font) : base(font)
 {
     DisplayName.text = addOnString;
 }
Beispiel #23
0
        private void InitializeGameComponentsUi(Hero[] myHeroes, Hero[] opponentHeroes, Card[] myCards)
        {
            NezSpriteFont font = new NezSpriteFont(InGameScene.content.Load <SpriteFont>("Arial"));

            BoardAreaUi[] sideBarEntities = new BoardAreaUi[30];

            int localPlayerWorkerCount = localPlayerFirst ? GameConstants.StartingWorkerCountFirstPlayer : GameConstants.StartingWorkerCountSecondPlayer;
            int opponentWorkerCount    = localPlayerFirst ? GameConstants.StartingWorkerCountSecondPlayer : GameConstants.StartingWorkerCountFirstPlayer;

            for (int x = 0; x < sideBarEntities.Length; x += sideBarEntities.Length / 2)
            {
                HandUi    handUi      = new HandUi();
                Texture2D handTexture = InGameScene.content.Load <Texture2D>(handTextureName);
                handUi.addComponent(new Sprite(handTexture));
                handUi.getComponent <Sprite>().renderLayer = BoardRenderLayer;
                InGameScene.addEntity(handUi);

                InPlayUi inPlayUi = new InPlayUi();
                handUi.getComponent <Sprite>().renderLayer = BoardRenderLayer;
                InGameScene.addEntity(inPlayUi);

                bool isOpponent = x < 15;

                Hero[] currentHeroes = isOpponent ? opponentHeroes : myHeroes;
                sideBarEntities[0 + x] = new HeroButton(font, null, currentHeroes[0]);
                if (GameMode == GameMode.ThreeHero)
                {
                    sideBarEntities[1 + x] = new HeroButton(font, null, currentHeroes[1]);
                    sideBarEntities[2 + x] = new HeroButton(font, null, currentHeroes[2]);
                }

                sideBarEntities[3 + x] = new BaseButton(font);
                sideBarEntities[4 + x] = new AddOnButton(font);
                sideBarEntities[5 + x] = new SpecUi(font);

                sideBarEntities[6 + x] = new TechBuildingButton(font, TechLevel.One);
                sideBarEntities[7 + x] = new TechBuildingButton(font, TechLevel.Two);
                sideBarEntities[8 + x] = new TechBuildingButton(font, TechLevel.Three);

                sideBarEntities[9 + x]  = new ZoneButton(font, Discard.DiscardString, 0);
                sideBarEntities[10 + x] = new ZoneButton(font, Deck.DeckString, GameConstants.StartingDeckSize);
                sideBarEntities[11 + x] = new ZoneButton(font, Hand.HandString, GameConstants.StartingHandSize);

                sideBarEntities[12 + x] = new GoldUi(font);

                int currentWorkerCount = isOpponent ? opponentWorkerCount : localPlayerWorkerCount;
                sideBarEntities[13 + x] = new WorkerCountUi(font, currentWorkerCount);

                SideBarButton CodexButton = new SideBarButton(font);
                CodexButton.DisplayName.text = Codex.CodexString;
                sideBarEntities[14 + x]      = new BoardAreaUi();
            }

            int numberOfColumns = 3;

            for (int x = 0; x < sideBarEntities.Length; x += numberOfColumns)
            {
                int verticalPosition = x / numberOfColumns * ScreenHeight / sideBarEntities.Length / numberOfColumns;
                for (int y = 0; y < numberOfColumns; y++)
                {
                    sideBarEntities[x + y]?.setPosition(new Vector2(
                                                            y * SideBarButton.SideBarWidth / numberOfColumns,
                                                            verticalPosition
                                                            ));
                }
            }
        }
 public BuildingButton(NezSpriteFont font) : base(font)
 {
     //addComponent(new BoxCollider(texture.Width, texture.Height));
 }
Beispiel #25
0
        public override void Initialize()
        {
            base.Initialize();
            font = new NezSpriteFont(Content.Load <SpriteFont>("Arial"));
            //
            // MIDI sequencer must have processes
            //
            sequencer1                            = new Sanford.Multimedia.Midi.Sequencer();
            sequencer1.clock.Tick                += onTick;
            this.sequencer1.PlayingCompleted     += new System.EventHandler(this.HandlePlayingCompleted);
            this.sequencer1.ChannelMessagePlayed += new System.EventHandler <Sanford.Multimedia.Midi.ChannelMessageEventArgs>(this.HandleChannelMessagePlayed);
            this.sequencer1.SysExMessagePlayed   += new System.EventHandler <Sanford.Multimedia.Midi.SysExMessageEventArgs>(this.HandleSysExMessagePlayed);
            this.sequencer1.Chased               += new System.EventHandler <Sanford.Multimedia.Midi.ChasedEventArgs>(this.HandleChased);
            this.sequencer1.Stopped              += new System.EventHandler <Sanford.Multimedia.Midi.StoppedEventArgs>(this.HandleStopped);
            //
            // Default output device (usually 0)
            //
            outDevice = new OutputDevice(outDeviceID);

            //DialogBar db = new DialogBar(-1);

            //znznznznznznznznznznznznznznznznznznznznznznznznznznznznzn
            // mouse entity (used for tracking of clicks)
            //znznznznznznznznznznznznznznznznznznznznznznznznznznznznzn
            MouseCursor = CreateEntity("mouse");
            MouseCursor.AddComponent(new BoxCollider());
            MouseCursor.AddComponent(new MouseComponent());

            //znznznznznznznznznznznznznznznznznznznznznznznznznznznznzn
            // keyboard entity (playing piano manually)
            //znznznznznznznznznznznznznznznznznznznznznznznznznznznznzn
            MouseCursor = CreateEntity("keyboard");
            MouseCursor.AddComponent(new KeyComponent());

            //znznznznznznznznznznznznznznznznznznznznznznznznznznznznzn
            // Text entity with component (Game name label)
            //znznznznznznznznznznznznznznznznznznznznznznznznznznznznzn
            TextEntity = CreateEntity("txt");
            TextEntity.Transform.Position = new Vector2(10, 20);
            TextEntity.Transform.Scale    = new Vector2(1, 1);
            txt = new TextComponent(Graphics.Instance.BitmapFont, "MIDI Player", new Vector2(0, 0), Color.White);
            txt.SetFont(font);
            TextEntity.AddComponent(txt);

            //znznznznznznznznznznznznznznznznznznznznznznznznznznznznzn
            // Background, with high value render layer
            //znznznznznznznznznznznznznznznznznznznznznznznznznznznznzn
            Background     = CreateEntity("background", new Vector2(0, 0));
            Background.Tag = 90;
            //SpriteRenderer comp = new SpriteRenderer(Content.Load<Texture2D>("Background")).SetRenderLayer(99);

            Background.AddComponent(new SpriteRenderer(Content.Load <Texture2D>("Slider/BackgroundMetal")).SetRenderLayer(99));
            Background.GetComponent <SpriteRenderer>().SetOrigin(new Vector2(0, 0));
            Background.SetPosition(new Vector2(310, 15));
            //znznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznzn
            // Canvas
            //znznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznzn
            //
            int    StartX = 10;
            Entity uiCan  = CreateEntity("ui");

            canvas = uiCan.AddComponent(new UICanvas());

            canvas.IsFullScreen = true;
            canvas.RenderLayer  = -10;//= SCREEN_SPACE_RENDER_LAYER;
            //
            // Display for track number
            //
            TrackMsg = canvas.Stage.AddElement(new Nez.UI.Label("All Tracks"));
            TrackMsg.SetPosition(320, 310);
            TrackMsg.SetSize(100f, 50f);
            //
            // Display for channel number
            //
            ChnlMsg = canvas.Stage.AddElement(new Nez.UI.Label("All Channels"));
            ChnlMsg.SetPosition(320, 330);
            ChnlMsg.SetSize(100f, 50f);
            AllChannels = -1;
            //
            // Display for instrument name
            //
            InstrumentMsg = canvas.Stage.AddElement(new Nez.UI.Label("All Channels"));
            InstrumentMsg.SetPosition(320, 350);
            InstrumentMsg.SetSize(100f, 50f);
            //
            // Dispaly for note number being played
            //
            NoteMsg = canvas.Stage.AddElement(new Nez.UI.Label("Piano note played"));
            NoteMsg.SetPosition(320, 370);
            NoteMsg.SetSize(100f, 50f);

            //
            // Track buttons and channels
            //
            for (int i = 0; i < 16; i++)
            {
                TrackChanl[i]      = -1;
                TracksInMidi[i]    = false;             //is track number active in MIDI file
                TracksPlaying[i]   = false;             //individual tracks playing (buttons)
                ChannelsPlaying[i] = true;              //they all are playing
            }

            //
            // turn off all buttons
            //
            //SetTrackButtonOff();
            //
            // Progress bar
            //
            PgBar = canvas.Stage.AddElement(new Nez.UI.ProgressBar(0, 1000, 1, false, Nez.UI.ProgressBarStyle.Create(Color.Green, Color.White)));
            PgBar.SetPosition(10, StartPos);
            //
            // Play button
            //
            PlayImageUp = new SpriteDrawable((Content.Load <Texture2D>("Player/play_blk")));
            PlayImageDn = new SpriteDrawable((Content.Load <Texture2D>("Player/play_grn")));
            PlayBtn     = canvas.Stage.AddElement(new ImageButton(PlayImageUp, PlayImageDn));
            PlayBtn.SetPosition(StartX, StartPos + 30);
            PlayBtn.OnClicked += Play;

            //
            // Stop button
            //
            StopImageUp = new SpriteDrawable((Content.Load <Texture2D>("Player/stop_blk")));
            StopImageDn = new SpriteDrawable((Content.Load <Texture2D>("Player/stop_grn")));
            StopBtn     = canvas.Stage.AddElement(new ImageButton(StopImageUp, StopImageDn));
            StopBtn.SetPosition(StartX + 71, StartPos + 30);
            StopBtn.OnClicked += Stop;

            //
            // Load/Eject button (stop playing, look for another MIDI file)
            //
            LoadImageUp = new SpriteDrawable((Content.Load <Texture2D>("Player/eject_blk")));
            LoadImageDn = new SpriteDrawable((Content.Load <Texture2D>("Player/eject_grn")));
            LoadBtn     = canvas.Stage.AddElement(new ImageButton(LoadImageUp, LoadImageDn));
            LoadBtn.SetPosition(StartX + 110, StartPos + 30);
            LoadBtn.OnClicked += Load;
            //
            //znznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznzn
            // Systems to process our requests
            //znznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznznzn
            //
            this.AddEntityProcessor(new MouseClickSystem(new Matcher().All(typeof(MouseComponent))));
            this.AddEntityProcessor(new KeyClickSystem(new Matcher().All(typeof(KeyComponent))));
            this.AddEntityProcessor(new PianoClickSystem(new Matcher().All(typeof(NoteComponent), typeof(PlayingComponent))));
            //
            // Start by loading a file
            //
            if (!LoadMidiFile())
            {
                return;
            }
            //
            // Create the Mixer image with buttons, sliders, etc
            //
            var Track = new TrackMixerEntity(this, new Vector2(310, 20), canvas, TracksInMidi);
            //
            // Create the piano keys on bottom of mixer
            //
            var pi00 = new PianoEntity(this, new Vector2(StartX + 245, StartPos + 420), 0);

            //
            // Octave 4 is the middle C (note 60), color the keys
            //
            HandleOctaveColor(60);
        }
Beispiel #26
0
        public WaveManager()
        {
            SpriteFont    font    = GameManager.gameScene.content.Load <SpriteFont>("testFont");
            NezSpriteFont nezFont = new NezSpriteFont(font);

            Text text = new Text(nezFont, $"Wave {currentWave}", new Vector2(500, 0), Color.Yellow);

            addComponent(text);
            waveLabel = text;
            waveLabel.transform.scale = new Vector2(2, 2);


            waveList = new List <List <Entity> >();

            waveList.Add(GenerateWave(new EnemyWave[]
            {
                new EnemyWave(typeof(Fly), 19),
                new EnemyWave(typeof(RedFly), 1)
            }));

            waveList.Add(GenerateWave(new EnemyWave[]
            {
                new EnemyWave(typeof(Fly), 15),
                new EnemyWave(typeof(BlueFly), 1),
                new EnemyWave(typeof(RedFly), 5)
            }));

            waveList.Add(GenerateWave(new EnemyWave[]
            {
                new EnemyWave(typeof(BlueFly), 15),
                new EnemyWave(typeof(RedFly), 5)
            }));

            waveList.Add(GenerateWave(new EnemyWave[]
            {
                new EnemyWave(typeof(Wasp), 1)
            }));

            waveList.Add(GenerateWave(new EnemyWave[]
            {
                new EnemyWave(typeof(RedFly), 25)
            }));

            waveList.Add(GenerateWave(new EnemyWave[]
            {
                new EnemyWave(typeof(Fly), 10),
                new EnemyWave(typeof(BlueFly), 10),
                new EnemyWave(typeof(RedFly), 10)
            }));

            waveList.Add(GenerateWave(new EnemyWave[]
            {
                new EnemyWave(typeof(Wasp), 2),
                new EnemyWave(typeof(Fly), 15),
                new EnemyWave(typeof(RedFly), 15)
            }));

            waveList.Add(GenerateWave(new EnemyWave[]
            {
                new EnemyWave(typeof(BlueFly), 15),
                new EnemyWave(typeof(RedWasp), 1),
                new EnemyWave(typeof(RedFly), 15)
            }));

            waveList.Add(GenerateWave(new EnemyWave[]
            {
                new EnemyWave(typeof(Wasp), 5),
                new EnemyWave(typeof(RedFly), 20)
            }));

            waveList.Add(GenerateWave(new EnemyWave[]
            {
                new EnemyWave(typeof(Wasp), 5),
                new EnemyWave(typeof(RedWasp), 5),
            }));


            //define a few waves.
            updateOrder = 2;
        }
 public WorkerCountUi(NezSpriteFont font, int workerCount)
 {
     Workers = new Text(font, workerCount.ToString(), Vector2.Zero, Color.Black);
     addComponent(Workers);
 }