コード例 #1
0
ファイル: MenuInventory.cs プロジェクト: dionvc/factorygame
        public override void Draw(RenderTexture gui, Vector2i origin, RenderStates guiState)
        {
            RectangleShape frame = new RectangleShape(new Vector2f(32, 32));

            frame.FillColor = Color.Red;
            Vector2f pos = new Vector2f((position + origin).X, (origin + position).Y);

            for (int i = 0; i < inventory.Count; i++)
            {
                frame.Position = pos + new Vector2f((i * 32) % (int)size.X, ((i * 32) / (int)size.X) * 32);
                gui.Draw(frame);
                if (inventory[i] != null)
                {
                    Sprite itemSprite = inventory[i].item.itemSprite.GetSprite();
                    itemSprite.Position = pos + new Vector2f((i * 32) % (int)size.X, (i * 32) / (int)size.X * 32);
                    itemCount.SetText(inventory[i].count.ToString());
                    itemCount.SetTextPosition("right", "bottom");
                    itemCount.SetRelativePosition(position + new Vector2i((i * 32) % (int)size.X - 16, (i * 32) / (int)size.X * 32));
                    gui.Draw(itemSprite);
                    itemCount.Draw(gui, origin, guiState);
                }
            }
            if (hoveredIndex != -1 && inventory[hoveredIndex] != null)
            {
                itemName.SetText(inventory[hoveredIndex].item.name);
                itemName.SetTextPosition("left", "center");
                RectangleShape backdrop = new RectangleShape(new Vector2f(itemName.size.X, itemName.size.Y));
                backdrop.FillColor = new Color(64, 64, 64, 208);
                backdrop.Position  = hoveredPosition;
                gui.Draw(backdrop);
                itemName.SetRelativePosition(new Vector2i((int)hoveredPosition.X, (int)hoveredPosition.Y));
                itemName.Draw(gui, new Vector2i(0, 0), guiState);
            }
            base.Draw(gui, origin, guiState);
        }
コード例 #2
0
ファイル: MenuListBox.cs プロジェクト: dionvc/factorygame
        /// <summary>
        /// A drop down menu implementation.  Very quick if you are selecting from a range of enums.
        /// </summary>
        /// <param name="relativePosition"></param>
        /// <param name="componentSize"></param>
        /// <param name="listHeaders"></param>
        /// <param name="listValues"></param>
        public MenuListBox(Vector2i componentSize, string[] listHeaders, int[] listValues, SelectionMethod applySelection, Font font, uint charSize, int lineSpacing, int initialValue)
        {
            Initialize(componentSize);
            this.listHeaders    = listHeaders;
            this.listValues     = listValues;
            this.applySelection = applySelection;
            this.lineSpacing    = lineSpacing;
            texts        = new MenuText[listHeaders.Length];
            selectedText = new MenuText(this.size, font, "", charSize, 0.6f);
            selectedText.SetRelativePosition(new Vector2i(0, -2));
            selectedValue = initialValue;
            selectedText.SetText(listHeaders[initialValue]);
            selectedText.SetTextPosition("left", "center");
            for (int i = 0; i < listHeaders.Length; i++)
            {
                texts[i] = new MenuText(this.size, font, listHeaders[i], charSize, 0.6f);
                AttachComponent(texts[i]);
                texts[i].SetText(listHeaders[i]);
                texts[i].SetTextPosition("left", "center");
                texts[i].SetRelativePosition(new Vector2i(0, (i + 1) * (lineSpacing + 1) - 2));
                attachedComponents.Clear();
            }
            dropdownBox  = new BoundingBox(new Vector2f(size.X, lineSpacing));
            collisionBox = new BoundingBox(size + new Vector2i(size.Y, 0));
            listboxState = ListBoxState.Normal;

            dropdownMainBox = CreateMenuGraphicArrayWithBorder(new FloatRect(96, 0, 96, 96), 10);
            dropdownArrow   = CreateMenuGraphic(new FloatRect(416, 0, 96, 96), new Vector2i(size.Y, size.Y));
        }
コード例 #3
0
ファイル: MenuField.cs プロジェクト: dionvc/factorygame
 public MenuField(Vector2i componentSize, Font font, ParseField parseField)
 {
     Initialize(componentSize);
     textField = new MenuText(new Vector2i(size.X, size.Y), font, "", Convert.ToUInt32(size.Y - 4), size.Y);
     textField.SetTextPosition("left", "center");
     textField.SetPivots("center", "center", "inside", 2);
     this.parseField = parseField;
     fieldState      = FieldState.Normal;
     collisionBox    = new BoundingBox(size);
     fieldBackGround = CreateMenuGraphicArrayWithBorder(new FloatRect(96, 0, 96, 96), 10);
     cursor          = new RectangleShape(new Vector2f(1, textField.charSize - 4));
     cursorCounter   = 0;
     cursorRefresh   = 30;
 }
コード例 #4
0
        public override void Draw(RenderTexture gui, Vector2i origin, RenderStates guiState)
        {
            RectangleShape frame = new RectangleShape(new Vector2f(32, 32));

            frame.FillColor = Color.Red;
            Vector2f pos = new Vector2f((position + origin).X, (origin + position).Y);

            for (int i = 0; i < allowedRecipes.Length; i++)
            {
                frame.Position = pos + new Vector2f((i * 32) % (int)size.X, ((i * 32) / (int)size.X) * 32);
                gui.Draw(frame);
                Sprite recipeSprite = allowedRecipes[i].recipeSprite.GetSprite();
                recipeSprite.Position = pos + new Vector2f((i * 32) % (int)size.X, (i * 32) / (int)size.X * 32);
                gui.Draw(recipeSprite);
            }
            if (hoveredIndex != -1)
            {
                recipeName.SetText(allowedRecipes[hoveredIndex].name);
                recipeName.SetTextPosition("left", "center");
                recipeName.SetRelativePosition(new Vector2i((int)hoveredPosition.X, (int)hoveredPosition.Y));
                recipeName.Draw(gui, new Vector2i(0, 0), guiState);
            }
            base.Draw(gui, origin, guiState);
        }
コード例 #5
0
ファイル: MenuFactory.cs プロジェクト: dionvc/factorygame
        public void CreateMapGenMenu(SurfaceGenerator surfaceGenerator)
        {
            //Declaring elements
            Font      mapGenFont = fontContainer.GetFont("SairaRegular");
            MenuPanel worldMenu  = new MenuPanel(new Vector2i(0, 0), new Vector2i(600, 500), new FloatRect(0, 0, 96, 96), 4, null, new Color(255, 255, 255, 224));

            //Noise dropdowns
            string[]    noiseNames        = Enum.GetNames(typeof(FastNoise.NoiseType));
            int[]       noiseValues       = new int[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
            MenuListBox moistureNoiseType = new MenuListBox(new Vector2i(150, 25), noiseNames, noiseValues, surfaceGenerator.SetNoiseType, mapGenFont, 24, 24, 0);

            moistureNoiseType.tag = "moisture";
            MenuText moistureNoiseText = new MenuText(new Vector2i(150, 25), mapGenFont, "Moisture Noise:", 24, 24);

            moistureNoiseText.SetTextPosition("right", "center");
            MenuListBox elevationNoiseType = new MenuListBox(new Vector2i(150, 25), noiseNames, noiseValues, surfaceGenerator.SetNoiseType, mapGenFont, 24, 24, 0);

            elevationNoiseType.tag = "elevation";
            MenuText elevationNoiseText = new MenuText(new Vector2i(150, 25), mapGenFont, "Elevation Noise:", 24, 24);

            elevationNoiseText.SetTextPosition("right", "center");
            MenuListBox temperatureNoiseType = new MenuListBox(new Vector2i(150, 25), noiseNames, noiseValues, surfaceGenerator.SetNoiseType, mapGenFont, 24, 24, 0);
            MenuText    temperatureNoiseText = new MenuText(new Vector2i(150, 25), mapGenFont, "Temperature Noise:", 24, 24);

            temperatureNoiseText.SetTextPosition("right", "center");
            temperatureNoiseType.tag = "temperature";
            //Surface size field
            MenuText  surfaceSizeFieldTitle = new MenuText(new Vector2i(100, 25), mapGenFont, "Map size:", 24, 24);
            MenuField surfaceSizeField      = new MenuField(new Vector2i(150, 25), mapGenFont, surfaceGenerator.ParseString);

            surfaceSizeField.tag = "surfacesize";
            surfaceSizeField.AttachComponent(surfaceSizeFieldTitle);
            surfaceSizeFieldTitle.SetTextPosition("right", "center");
            surfaceSizeFieldTitle.SetPivots("left", "center", "outside", 0);
            surfaceSizeFieldTitle.SetInitialPosition(surfaceSizeField);
            //Seed field
            MenuText  seedFieldTitle = new MenuText(new Vector2i(100, 25), mapGenFont, "Map Seed:", 24, 24);
            MenuField seedField      = new MenuField(new Vector2i(150, 25), mapGenFont, surfaceGenerator.ParseString);

            seedField.tag = "seed";
            seedField.AttachComponent(seedFieldTitle);
            seedFieldTitle.SetTextPosition("right", "center");
            seedFieldTitle.SetPivots("left", "center", "outside", 0);
            seedFieldTitle.SetInitialPosition(seedField);
            //Start game button
            MenuButton startGame     = new MenuButton(new Vector2i(100, 40), program.SwitchGameState);
            MenuText   startGameText = new MenuText(new Vector2i(100, 40), mapGenFont, "Start Game", 24, 24);

            startGame.AttachComponent(startGameText);
            startGameText.SetTextPosition("center", "center");
            startGameText.SetPivots("center", "center", "inside", 0);
            startGame.tag = "inGame";
            //Slider
            MenuSlider elevationFactor = new MenuSlider(5, surfaceGenerator.SetNoiseFactor, 0.5f, 1.5f, 1.0f);

            elevationFactor.tag = "elevation";
            MenuText   elevationSliderText = new MenuText(new Vector2i(150, 25), mapGenFont, "Elevation Factor", 24, 24);
            MenuSlider moistureFactor      = new MenuSlider(5, surfaceGenerator.SetNoiseFactor, 0.5f, 1.5f, 1.0f);

            moistureFactor.tag = "moisture";
            MenuText   moistureSliderText    = new MenuText(new Vector2i(150, 25), mapGenFont, "Moisture Factor", 24, 24);
            MenuSlider temperatureFactor     = new MenuSlider(5, surfaceGenerator.SetNoiseFactor, 0.5f, 1.5f, 1.0f);
            MenuText   temperatureSliderText = new MenuText(new Vector2i(150, 25), mapGenFont, "Temperature Factor", 24, 24);

            temperatureFactor.tag = "temperature";
            //Attaching Elements
            worldMenu.AttachComponent(startGame);
            worldMenu.AttachComponent(seedField);
            worldMenu.AttachComponent(surfaceSizeField);
            worldMenu.AttachComponent(temperatureNoiseType);
            worldMenu.AttachComponent(elevationNoiseType);
            worldMenu.AttachComponent(moistureNoiseType);
            worldMenu.AttachComponent(moistureNoiseText);
            worldMenu.AttachComponent(temperatureNoiseText);
            worldMenu.AttachComponent(elevationNoiseText);


            worldMenu.AttachComponent(elevationFactor);
            worldMenu.AttachComponent(moistureFactor);
            worldMenu.AttachComponent(temperatureFactor);
            worldMenu.AttachComponent(elevationSliderText);
            worldMenu.AttachComponent(moistureSliderText);
            worldMenu.AttachComponent(temperatureSliderText);

            //Positioning elements
            seedField.SetRelativePosition(new Vector2i(100, 25));
            surfaceSizeField.SetPivots("bottom", "center", "outside", 25);
            surfaceSizeField.SetInitialPosition(seedField);
            startGame.SetPivots("bottom", "right", "inside", 25);
            startGame.SetInitialPosition();
            worldMenu.SetInitialPosition(camera.GetGUIView());
            elevationFactor.SetInitialPosition(camera.GetGUIView());
            moistureFactor.SetPivots("bottom", "center", "outside", 25);
            moistureFactor.SetInitialPosition(elevationFactor);
            temperatureFactor.SetPivots("bottom", "center", "outside", 25);
            temperatureFactor.SetInitialPosition(moistureFactor);
            moistureNoiseType.SetPivots("top", "right", "inside", 25);
            moistureNoiseType.SetInitialPosition(camera.GetGUIView());
            elevationNoiseType.SetPivots("bottom", "center", "outside", 25);
            elevationNoiseType.SetInitialPosition(moistureNoiseType);
            temperatureNoiseType.SetPivots("bottom", "center", "outside", 25);
            temperatureNoiseType.SetInitialPosition(elevationNoiseType);

            moistureNoiseText.SetRelativePosition(moistureNoiseType.position - new Vector2i(230, 0));
            elevationNoiseText.SetRelativePosition(elevationNoiseType.position - new Vector2i(230, 0));
            temperatureNoiseText.SetRelativePosition(temperatureNoiseType.position - new Vector2i(230, 0));

            moistureSliderText.SetRelativePosition(moistureFactor.position - new Vector2i(150, 0));
            elevationSliderText.SetRelativePosition(elevationFactor.position - new Vector2i(150, 0));
            temperatureSliderText.SetRelativePosition(temperatureFactor.position - new Vector2i(150, 0));

            //Finalize into menu container
            menuContainer.AttachMenu(worldMenu);
        }