예제 #1
0
        public Entity Build()
        {
            var random = new Random(SEED);

            var builder = EntityBuilder.New();

            for (var i = 0; i < BUILDINGS; ++i)
            {
                var building = EntityBuilder.New()
                               .With(new BuildingInfo()
                {
                    HeightInTiles = random.Next(10, 50),
                    WidthInTiles  = random.Next(5, 8),
                    Z             = (float)random.NextDouble() * 30,
                    TopLeftCorner = TextureUtil.CreateTexture(64, 64, Color.DarkGray),
                    TopTexture    = TextureUtil.CreateTexture(64, 64, Color.DarkGray),
                    WallTexture   = TextureUtil.CreateTexture(64, 64, Color.LightGray),
                    InnerTexture  = TextureUtil.CreateTexture(64, 64, Color.LightGray)
                })
                               .AtPosition(new Vector2((float)random.NextDouble() * 20 - 10, 0));
                builder.WithChild(building);
            }

            return(builder.Create());
        }
예제 #2
0
        public Entity Build()
        {
            int width  = 4;
            int height = 3;

            float detectorYOffset = 0.5f;

            float detectorOverhang = 1f;
            float detectorHeight   = 1f;

            float detectorWidth = width + detectorOverhang * 2;

            var characterDetector = new Touching();

            return(EntityBuilder.New()
                   .WithTag(Tags.PLATFORM)
                   .WithTexture(TextureUtil.CreateTexture((int)(width * Transform.PIXELS_A_METRE),
                                                          (int)(height * Transform.PIXELS_A_METRE), Color.Black))
                   .With(ColliderBuilder.New().BoxShape(width, height).Create())
                   .With(new Divable()
            {
                Touching = characterDetector
            })
                   .WithChild(EntityBuilder.New()
                              .With(characterDetector)
                              .AtPosition(new Vector2(0, -height * 0.5f - detectorYOffset - detectorHeight * 0.5f))
                              //.WithTexture(TextureUtil.CreateTexture((int) (detectorWidth*Transform.PIXELS_A_METRE),
                              //    (int) (detectorHeight*Transform.PIXELS_A_METRE), Color.Red))
                              .With(ColliderBuilder.New().BoxShape(detectorWidth, detectorHeight).IsTrigger().Create())
                              )
                   .Create());
        }
예제 #3
0
        public override void Start()
        {
            base.Start();

            //Engine.AddSystem(new SpriteRenderer());
            //Engine.AddSystem(new CameraSystem());

            Engine.AddSystem(UpdateNotifier);
            Engine.AddSystem(new DraggerSystem());
            Engine.AddSystem(new TransformWatcherSystem());

            var test1 = new Entity();

            test1.Add(new Transform());
            test1.Add(new MultiPlayer.Core.Components.Sprite()
            {
                Texture = TextureUtil.CreateTexture(64, 64, Color.Black)
            });

            var camera = new Entity();

            camera.Add(new Camera());
            camera.Add(new Transform());

            AddEntity(test1);
            AddEntity(camera);
        }
예제 #4
0
        public static GuiModel CreateWireRectangle(Vector2 size, Color colour, BufferUsageHint verticeshint = BufferUsageHint.StaticDraw, BufferUsageHint uvhint = BufferUsageHint.StaticDraw)
        {
            Vector2[] vertices = new Vector2[] { new Vector2(-1, 1), new Vector2(-1, -1), new Vector2(1, -1), new Vector2(1, 1) };
            int[]     elements = new int[] { 0, 1, 2, 3, 0 };
            Vector2[] uvs      = new Vector2[] { new Vector2(0, 1), new Vector2(0, 0), new Vector2(1, 0), new Vector2(1, 1) };
            GuiVAO    vao      = new GuiVAO(vertices, elements, uvs, verticeshint, uvhint);

            return(new GuiModel(vao, TextureUtil.CreateTexture(colour), BeginMode.LineLoop, size));
        }
예제 #5
0
        public static GuiModel CreateLine(Vector2 size, Color colour)
        {
            Vector2[] vertices = new Vector2[] { new Vector2(0, 0), size };
            int[]     elements = new int[] { 0, 1 };
            Vector2[] uvs      = new Vector2[] { new Vector2(0, 0), new Vector2(0, 0) };
            GuiVAO    vao      = new GuiVAO(vertices, elements, uvs);

            return(new GuiModel(vao, TextureUtil.CreateTexture(colour), BeginMode.Lines, new Vector2(1, 1)));
        }
예제 #6
0
        private PlayerInventory(int x, int y) : base(x, y)
        {
            //inventory
            Pos           = new Vector2(((2 - x * SizeX) / 2) - 1, -0.5);
            HotbarPos     = new Vector2(Pos.x, -1);
            TextPosOffset = new Vector2(0.115, 0.03);

            textStyle           = TextStyle.LucidaConsole_SingleLine_Small;
            textStyle.alignment = TextAlignment.BottomRight;


            ItemCountText = new Text[x, y - 1];
            for (int i = 0; i < ItemCountText.GetLength(0); i++)
            {
                for (int j = 0; j < ItemCountText.GetLength(1); j++)
                {
                    ItemCountText[i, j] = new Text("", textStyle, new Vector2(i * SizeX, 2 * j * (SizeY - ItemTextureOffset)));
                }
            }
            HotbarItemCountText = new Text[x];
            for (int i = 0; i < ItemCountText.GetLength(0); i++)
            {
                HotbarItemCountText[i] = new Text("", textStyle, new Vector2(i * SizeX, 0));
            }



            Frame = new GuiModel(Generate_FrameVao(), TextureUtil.CreateTexture(new Vector3(0, 0, 0.1)), BeginMode.Lines, new Vector2(1, 1));
            {
                Vector2[] vertices;
                int[]     elements;
                Vector2[] uvs;
                Generate_ItemDisplayData(out vertices, out elements, out uvs);
                GuiVAO vao = new GuiVAO(vertices, elements, uvs);
                ItemDisplay = new GuiModel(vao, Textures.ItemTexture, BeginMode.Triangles, new Vector2(1, 1));
            }
            SelectedDisplay  = GuiModel.CreateWireRectangleTopLeft(new Vector2(SizeX, SizeY), Color.Blue);
            Background       = GuiModel.CreateRectangleTopLeft(new Vector2(x * SizeX, (y - 1) * SizeY), TextureUtil.CreateTexture(new Vector4(0.3, 0.3, 0.3, 0.8)));
            HotbarBackground = GuiModel.CreateRectangleTopLeft(new Vector2(x * SizeX, SizeY), TextureUtil.CreateTexture(new Vector4(0.3, 0.3, 0.3, 0.8)));

            TextStyle style = new TextStyle(TextAlignment.TopLeft, TextFont.LucidaConsole, 0.8f, 1f, 1, 1f, new Vector3(1, 1, 1));

            InvText           = new Text("Inventory", style, new Vector2(0.015 + Pos.x, Pos.y + 2 * (y - 0.5) * SizeY));
            InvTextBackground = GuiModel.CreateRectangleTopLeft(new Vector2(x * SizeX, SizeY), TextureUtil.CreateTexture(new Vector4(0.3, 0.3, 0.3, 0.8)));
            InvTextLine       = GuiModel.CreateLine(new Vector2(x * SizeX, 0), TextureUtil.CreateTexture(new Vector4(0.05, 0.05, 0.1, 0.9)));
            var itemnamestyle = TextStyle.LucidaConsole_SingleLine_Small;

            itemnamestyle.alignment = TextAlignment.Bottom;
            ItemNameText            = new Text("", itemnamestyle, HotbarPos + new Vector2(0, SizeY));

            //hotbar
            CurSelectedSlot = 0;

            HotbarFrame           = new GuiModel(Generate_HotbarFrameVao(), TextureUtil.CreateTexture(new Vector3(0, 0, 0.1)), BeginMode.Lines, new Vector2(1, 1));
            HotbarItemDisplay     = new GuiModel(Generate_HotbarItemDisplayVao(), Textures.ItemTexture, BeginMode.Triangles, new Vector2(1, 1));
            HotbarSelectedDisplay = GuiModel.CreateWireRectangleTopLeft(new Vector2(SizeX, SizeY), Color.Blue);
        }
        public Entity Build()
        {
            int width  = 1;
            int height = 1;

            return(EntityBuilder.New()
                   .WithTag(Tags.PLATFORM)
                   .WithTexture(TextureUtil.CreateTexture((int)(width * Transform.PIXELS_A_METRE), (int)(height * Transform.PIXELS_A_METRE), Color.Black))
                   .With(ColliderBuilder.New().BoxShape(width, height).Create())
                   .Create());
        }
예제 #8
0
        private void CreateShadowPrefabs()
        {
            var platformShadow = GameObjectFactory
                                 .New()
                                 .With(new Sprite()
            {
                Texture = TextureUtil.CreateTexture(64, 64, Color.Black),
                Tint    = Color.Lerp(Color.White, Color.Transparent, 0.2f)
            })
                                 .Create();

            platformShadow.Visible = false;
            PrefabFactory.Instantiate(platformShadow);
            blockInfo.AddInfo("platform", platformShadow, true);
        }
예제 #9
0
파일: Asset.cs 프로젝트: mrenow/2D-Game
        internal static void Init()
        {
            ButtonTex  = TextureUtil.CreateTexture("Assets/Textures/Button.png", TextureUtil.TextureInterp.Nearest);
            LabelTex   = TextureUtil.CreateTexture("Assets/Textures/Label.png", TextureUtil.TextureInterp.Nearest);
            TextboxTex = TextureUtil.CreateTexture("Assets/Textures/Textbox.png", TextureUtil.TextureInterp.Nearest);

            GameBackgroundTex   = TextureUtil.CreateTexture("Assets/Textures/GameBackground.png", TextureUtil.TextureInterp.Linear);
            DesertBackgroundTex = TextureUtil.CreateTexture("Assets/Textures/DesertBackground.png", TextureUtil.TextureInterp.Linear);
            NightBackgroundTex  = TextureUtil.CreateTexture("Assets/Textures/NightBackground.png", TextureUtil.TextureInterp.Linear);

            TitleBackgroundTex = TextureUtil.CreateTexture("Assets/Textures/TitleScreenBackground2.png", TextureUtil.TextureInterp.Linear);

            FontCenturyGothicTex = TextureUtil.CreateTexture("Assets/Fonts/CenturyGothic.png", TextureUtil.TextureInterp.Nearest);
            FontChillerTex       = TextureUtil.CreateTexture("Assets/Fonts/Chiller.png", TextureUtil.TextureInterp.Nearest);
            FontDialogInputTex   = TextureUtil.CreateTexture("Assets/Fonts/DialogInput.png", TextureUtil.TextureInterp.Nearest);
            FontLucidaConsoleTex = TextureUtil.CreateTexture("Assets/Fonts/LucidaConsole.png", TextureUtil.TextureInterp.Nearest);

            ItemTexture      = TextureUtil.CreateTexture("Assets/Textures/ItemTextures.png", TextureUtil.TextureInterp.Nearest);
            TerrainTexture   = TextureUtil.CreateTexture("Assets/Textures/TerrainTextures.png", TextureUtil.TextureInterp.Nearest);
            EntityTexture    = TextureUtil.CreateTexture("Assets/Textures/EntityTextures.png", TextureUtil.TextureInterp.Nearest);
            HealthbarTexture = TextureUtil.CreateTexture("Assets/Textures/Healthbar.png", TextureUtil.TextureInterp.Nearest);
        }
예제 #10
0
 public static GuiModel CreateRectangle(Vector2 size, Color colour, BufferUsageHint verticeshint = BufferUsageHint.StaticDraw, BufferUsageHint uvhint = BufferUsageHint.StaticDraw)
 {
     return(CreateRectangle(size, TextureUtil.CreateTexture(colour), verticeshint, uvhint));
 }
        public Entity Build()
        {
            var width  = 0.5f;
            var height = 1f;

            var widthPixels  = (int)(width * Transform.PIXELS_A_METRE);
            var heightPixels = (int)(height * Transform.PIXELS_A_METRE);

            var sensorWidthRatio    = 0.2f;
            var sensorLopOff        = 0.9f;
            var sensorWidth         = width * sensorWidthRatio;
            var sensorWidthPixels   = (int)(sensorWidth * Transform.PIXELS_A_METRE);
            var clamberSensorOffset = 1.5f;

            var roomToStandDetector = new Touching();
            var groundDetector      = new Touching();
            var ceilingDetector     = new Touching();
            var leftWallDetector    = new Touching();
            var rightWallDetector   = new Touching();
            var clamberDetector     = new Touching();

            var clamberRightAnimation = ClamberAnimation().Create();
            var clamberLeftAnimation  = ClamberAnimation()
                                        .ReflectHorizontal()
                                        .Create();

            var rollRightAnimation = RollAnimation()
                                     .Create();
            var rollLeftAnimation = RollAnimation()
                                    .ReflectHorizontal()
                                    .ReflectRotation()
                                    .Create();

            var slideDownRightAnimation = SlideDownAnimation()
                                          .Create();

            var slideDownLeftAnimation = SlideDownAnimation()
                                         .ReflectHorizontal()
                                         .ReflectRotation()
                                         .Create();

            var slideUpRightAnimation = SlideDownAnimation()
                                        .Reversed()
                                        .Create();

            var slideUpLeftAnimation = SlideDownAnimation()
                                       .Reversed()
                                       .ReflectHorizontal()
                                       .ReflectRotation()
                                       .Create();

            var diveRightAnimation = DiveAnimation()
                                     .Create();

            var diveLeftAnimation = DiveAnimation()
                                    .ReflectRotation()
                                    .Create();

            var animator = new AnimationContainer()
                           .Add(Animations.Name(PlayerAnimation.Clamber, Direction.Right), clamberRightAnimation)
                           .Add(Animations.Name(PlayerAnimation.Clamber, Direction.Left), clamberLeftAnimation)

                           .Add(Animations.Name(PlayerAnimation.Roll, Direction.Left), rollLeftAnimation)
                           .Add(Animations.Name(PlayerAnimation.Roll, Direction.Right), rollRightAnimation)

                           .Add(Animations.Name(PlayerAnimation.SlideDown, Direction.Right), slideDownRightAnimation)
                           .Add(Animations.Name(PlayerAnimation.SlideUp, Direction.Right), slideUpRightAnimation)
                           .Add(Animations.Name(PlayerAnimation.SlideDown, Direction.Left), slideDownLeftAnimation)
                           .Add(Animations.Name(PlayerAnimation.SlideUp, Direction.Left), slideUpLeftAnimation)

                           .Add(Animations.Name(PlayerAnimation.Dive, Direction.Right), diveRightAnimation)
                           .Add(Animations.Name(PlayerAnimation.Dive, Direction.Left), diveLeftAnimation);

            return(EntityBuilder.New()
                   .WithTag(Tags.PLAYER)
                   .WithTag(Tags.CHARACTER)
                   .WithTexture(TextureUtil.CreateTexture(widthPixels, heightPixels, Color.White))
                   .With(LoadStats())
                   .With(new CharacterInfo()
            {
                CeilingDetector = ceilingDetector,
                ClamberDetector = clamberDetector,
                GroundDetector = groundDetector,
                LeftWallDetector = leftWallDetector,
                RightWallDetector = rightWallDetector,
                RoomToStandDetector = roomToStandDetector
            })
                   .With(new CharacterInput())
                   .With(new Move())
                   .With(animator)

                   .WithChild(EntityBuilder.New(false, true, true)
                              //Add the ground detector (bar below)
                              .WithChild(EntityBuilder.New()
                                         .With(ColliderBuilder.New().BoxShape(width * sensorLopOff, sensorWidth).IsTrigger().Create())
                                         .With(groundDetector)
                                         .WithTexture(TextureUtil.CreateTexture(widthPixels, sensorWidthPixels, Color.Red))
                                         .AtPosition(new Vector2(0, height * 0.5f + sensorWidth * 0.5f)))

                              //Add the ceiling detector (bar above)
                              .WithChild(EntityBuilder.New()
                                         .With(ColliderBuilder.New().BoxShape(width * sensorWidth, sensorWidth).IsTrigger().Create())
                                         .With(ceilingDetector)
                                         .WithTexture(TextureUtil.CreateTexture(widthPixels, sensorWidthPixels, Color.Red))
                                         .AtPosition(-new Vector2(0, height * 0.5f + sensorWidth * 0.5f)))

                              //Add the room to stand detector (box above)
                              .WithChild(EntityBuilder.New()
                                         .With(ColliderBuilder.New().BoxShape(width * sensorWidth, sensorWidth).IsTrigger().Create())
                                         .With(ceilingDetector)
                                         .WithTexture(TextureUtil.CreateTexture(widthPixels, sensorWidthPixels, Color.Red))
                                         .AtPosition(-new Vector2(0, height * 0.75f + sensorWidth * 0.5f)))

                              //Add the left wall detector (bar down left side)
                              .WithChild(EntityBuilder.New()
                                         .With(ColliderBuilder.New().BoxShape(sensorWidth, height * sensorLopOff).IsTrigger().Create())
                                         .With(leftWallDetector)
                                         .WithTexture(TextureUtil.CreateTexture(sensorWidthPixels, heightPixels, Color.Red))
                                         .AtPosition(-new Vector2(width * 0.5f + sensorWidth * 0.5f, 0)))

                              //Add the right wall detector (bar down right side)
                              .WithChild(EntityBuilder.New()
                                         .With(ColliderBuilder.New().BoxShape(sensorWidth, height * sensorLopOff).IsTrigger().Create())
                                         .With(rightWallDetector)
                                         .WithTexture(TextureUtil.CreateTexture(sensorWidthPixels, heightPixels, Color.Red))
                                         .AtPosition(new Vector2(width * 0.5f + sensorWidth * 0.5f, 0)))

                              //Add the clamber detector (bar over top, extending out sides)
                              .WithChild(EntityBuilder.New()
                                         .With(ColliderBuilder.New().BoxShape(width * 3f * sensorLopOff, sensorWidth).IsTrigger().Create())
                                         .With(clamberDetector)
                                         .WithTexture(TextureUtil.CreateTexture(widthPixels * 3, sensorWidthPixels, Color.Red))
                                         .AtPosition(-new Vector2(0, (height * 0.5f + sensorWidth * 0.5f) * clamberSensorOffset))))
                   .AtPosition(new Vector2(0, -10))
                   .With(ColliderBuilder.New().BoxShape(width, height).IsDynamic().IsFixedRotation(true).Create())
                   .With(new StateMachine()
                         .WithTransition(MOVE_STATE, new Transition()
                                         .WithComponent <Move>()
                                         .WithoutComponent <Clamber>()
                                         .WithoutComponent <Dive>()
                                         .WithoutComponent <Roll>()
                                         .WithoutComponent <Slide>())
                         .WithTransition(SLIDE_STATE, new Transition()
                                         .WithComponent <Slide>()
                                         .WithoutComponent <Clamber>()
                                         .WithoutComponent <Dive>()
                                         .WithoutComponent <Move>()
                                         .WithoutComponent <Roll>())
                         .WithTransition(ROLL_STATE, new Transition()
                                         .WithComponent <Roll>()
                                         .WithoutComponent <Clamber>()
                                         .WithoutComponent <Dive>()
                                         .WithoutComponent <Move>()
                                         .WithoutComponent <Slide>())
                         .WithTransition(DIVE_STATE, new Transition()
                                         .WithComponent <Dive>()
                                         .WithoutComponent <Clamber>()
                                         .WithoutComponent <Move>()
                                         .WithoutComponent <Roll>()
                                         .WithoutComponent <Slide>())
                         .WithTransition(CLAMBER_STATE, new Transition()
                                         .WithComponent <Clamber>()
                                         .WithoutComponent <Dive>()
                                         .WithoutComponent <Move>()
                                         .WithoutComponent <Roll>()
                                         .WithoutComponent <Slide>()))
                   .Create());
        }
예제 #12
0
파일: Textbox.cs 프로젝트: mrenow/2D-Game
 protected override GuiModel GenModel()
 {
     return(GuiModel.CreateRectangle(size, TextureUtil.CreateTexture(0.2f, 0.2f, 0.2f, 0.4f)));
 }