Ejemplo n.º 1
0
        public HumanAIScreen(Game1 game)
        {
            this._game = game;
            this._screen = ScreenType.Character;
            this.clientBounds = game.Window.ClientBounds;
            this._game.IsMouseVisible = false;

            arrowInputSystemID = game.RegisterSystem(new ArrowInputSystem(game, 1));
            handInitSystemID = game.RegisterSystem(new HandInitSystem(game));
            controllerInputSystemID = game.RegisterSystem(new ControllerInputSystem(game, 2));
            selectsInputID1 = game.RegisterSystem(new SelectInputSystem(game, 1));
            selectsInputID2 = game.RegisterSystem(new SelectInputSystem(game, 2));
            mapRendererID = game.RegisterSystem(new MapRenderer(game));
            handRenderID = game.RegisterSystem(new HandRenderer1(game));
            screenInitSystemID = game.RegisterSystem(new ScreenInitializationSystem(game));

            game.SetSystemCallOrder(new List<int>
             {
                screenInitSystemID,
                handInitSystemID,
                arrowInputSystemID,
                controllerInputSystemID,
                selectsInputID1,
                selectsInputID2,
                mapRendererID,
                handRenderID
             });

            game.AddObject(new HandObject1(game, 1));
            game.AddObject(new HandObject1(game, 2));
        }
Ejemplo n.º 2
0
        public MapScreen(Game1 game)
        {
            this._game = game;
            this._screen = ScreenType.Map;
            this.clientBounds = game.Window.ClientBounds;
            this._game.IsMouseVisible = true;

            arrowInputSystemID = game.RegisterSystem(new ArrowInputSystem(game, 1));
            controllerInputSystemID = game.RegisterSystem(new ControllerInputSystem(game, 1));
            mapRendererID = game.RegisterSystem(new MapRenderer(game));
            mapInitSystemID = game.RegisterSystem(new ScreenInitializationSystem(game));
            //modeRendererID = game.RegisterSystem(new ModeTextRenderer(game));
            modeInputSystemID = game.RegisterSystem(new ModeInputSystem(game));
            mapInputSystemID = game.RegisterSystem(new MouseInputsystem(game));

            game.SetSystemCallOrder(new List<int>
             {
                mapInitSystemID,
                arrowInputSystemID,
                controllerInputSystemID,
                modeInputSystemID,
                mapRendererID,
                mapInputSystemID
                //modeRendererID
             });

            game.AddObject(new TextObject1(game));
        }
Ejemplo n.º 3
0
        public StartScreen(Game1 game)
        {
            this._game = game;
            this._screen = ScreenType.Start;
            this.clientBounds = game.Window.ClientBounds;

            startScreenSystemID = game.RegisterSystem(new ScreenInputSystem(game, this._screen));
            screenInitSystemID = game.RegisterSystem(new ScreenInitializationSystem(game));
            screenRendererID = game.RegisterSystem(new MapRenderer(game));

            game.SetSystemCallOrder(new List<int>
             {
                 screenInitSystemID,
                 startScreenSystemID,
                 screenRendererID

             });

            game.AddObject(new SceneObject(game, this._screen));
        }
Ejemplo n.º 4
0
        public override void Update(GameTime gametime)
        {
            anima.Update(gametime);
            ushort plTile = Game1.game.GetTile(collisionBox.Center.ToVector2());

            oyxgenMetre = MathHelper.Clamp(oyxgenMetre, 0, 0.99f);

            if (!Keyboard.GetState().IsKeyDown(Keys.S))
            {
                if (fallkeyPressed)
                {
                    fallkeyPressed = false;
                }
            }

            switch (STATE)
            {
            case CHARA_STATE.MOVING:
                //isdebug = false;
                if (isgrounded)
                {
                    if (Keyboard.GetState().IsKeyDown(Keys.A) || Keyboard.GetState().IsKeyDown(Keys.D))
                    {
                        anima.SetAnimation("walk", true);
                    }
                    else
                    {
                        anima.SetAnimation("idle", false);
                    }
                }
                else
                {
                    anima.SetAnimation("jump", false);
                }

                oyxgenMetre += 0.01f;
                fallVel      = gravity;

                if (isgrounded)
                {
                    speed = speedOrigin;
                }

                if (Game1.IsSameLayer(plTile, "liquid"))
                {
                    speed = speedOrigin;
                    Game1.PlaySound(1);
                    STATE = CHARA_STATE.SWIMMING;
                }

                if (Keyboard.GetState().IsKeyDown(Keys.D))
                {
                    renderer.spriteRotation = SpriteEffects.None;
                    velocity.X = speed;
                }

                if (Keyboard.GetState().IsKeyDown(Keys.A))
                {
                    renderer.spriteRotation = SpriteEffects.FlipHorizontally;
                    velocity.X = -speed;
                }

                if (isdebug)
                {
                    if (Keyboard.GetState().IsKeyDown(Keys.S))
                    {
                        velocity.Y = speed;
                    }
                    if (Keyboard.GetState().IsKeyDown(Keys.W))
                    {
                        velocity.Y = -speed;
                    }
                }
                else
                {
                    if (Keyboard.GetState().IsKeyDown(Keys.Space))
                    {
                        if (isgrounded == true)
                        {
                            anima.SetAnimation("walk", false);
                            position.Y -= 3;
                            if (Keyboard.GetState().IsKeyDown(Keys.A) || Keyboard.GetState().IsKeyDown(Keys.D))
                            {
                                Game1.PlaySound(6);
                                velocity.Y = -2.60f;
                            }
                            else
                            {
                                Game1.PlaySound(6);
                                speed      = speedOrigin / 1.4f;
                                velocity.Y = -3.31f;
                            }
                        }
                    }
                }
                break;

            case CHARA_STATE.SWIMMING:
                //isdebug = true;
                oyxgenMetre -= 0.0005f;
                velocity.Y  *= velocityLimiter;
                fallVel      = 0.04f;

                anima.SetAnimation("jump", false);
                if (Keyboard.GetState().IsKeyDown(Keys.W))
                {
                    if (Game1.IsSameLayer(plTile, "air"))
                    {
                        velocity.Y = -speed * 1.35f;
                    }
                    else
                    {
                        velocity.Y = -speed;
                    }
                }

                if (Keyboard.GetState().IsKeyDown(Keys.LeftShift))
                {
                    speed        = speedOrigin * 0.93f;
                    oyxgenMetre -= 0.0007f;
                }
                else
                {
                    speed = speedOrigin / 2.5f;
                }

                if (Game1.IsSameLayer(plTile, "air"))
                {
                    Game1.PlaySound(10, collisionBox.Location.ToVector2());
                    STATE = CHARA_STATE.MOVING;
                }

                if (Keyboard.GetState().IsKeyDown(Keys.D))
                {
                    renderer.spriteRotation = SpriteEffects.None;
                    velocity.X = speed;
                }

                if (Keyboard.GetState().IsKeyDown(Keys.A))
                {
                    renderer.spriteRotation = SpriteEffects.FlipHorizontally;
                    velocity.X = -speed;
                }

                if (Keyboard.GetState().IsKeyDown(Keys.S))
                {
                    velocity.Y = speed;
                }

                if (oyxgenMetre <= 0.00)
                {
                    Game1.game.ResetLevel();
                }

                break;
            }

            o_block detectedSpike = IntersectBox <o_block>(new Vector2(0, 0), x => x.TYPEOFBLOCK == o_block.BLOCK_TYPE.SPIKES);

            if (detectedSpike != null)
            {
                position.Y = spawnpoint.Y - 1;
                position.X = spawnpoint.X;
                Game1.PlaySound(3);
                velocity = Vector2.Zero;
                Game1.game.ResetLevel();
            }
            if (throwDel > 0)
            {
                throwDel -= Game1.deltaTime;
            }

            o_item item = CheckPointEnt <o_item>(centre);

            if (item != null)
            {
                if (item.catchDel > 0)
                {
                    if (heldItem == o_item.ITEM_TY.None)
                    {
                        itemSpawn = item.spawnpoint;
                        heldItem  = item.itType;
                        Game1.RemoveObject(item);
                    }
                }
            }

            if (Game1.mousestate.LeftButton == ButtonState.Pressed)
            {
                if (heldItem != o_item.ITEM_TY.None)
                {
                    o_item it = null;
                    switch (heldItem)
                    {
                    case o_item.ITEM_TY.Bomb:
                        it = Game1.AddObject <o_item>(centre + new Vector2(-10, -15), "bomb", Game1.textures["bomb"].Item2, Game1.textures["bomb"].Item1);
                        break;

                    case o_item.ITEM_TY.Throwing:
                        it = Game1.AddObject <o_item>(centre + new Vector2(-10, -15), "Thing", Game1.textures["ball"].Item2, Game1.textures["ball"].Item1);
                        break;
                    }
                    it.catchDel = 0.2f;
                    if (it != null)
                    {
                        it.spawnpoint      = itemSpawn;
                        it.itType          = heldItem;
                        it.velocityLimiter = 0.97f;
                        it.Throw(new Vector2(throwDir.X * throwMultiplier, throwDir.Y * throwMultiplier));
                        heldItem = o_item.ITEM_TY.None;
                    }
                }
            }
            renderer.animNum = anima.currentFrameNumber;
            base.Update(gametime);
        }
Ejemplo n.º 5
0
        public override void Update(GameTime gametime)
        {
            base.Update(gametime);
            anima.Update(gametime);
            renderer.animNum = anima.currentFrameNumber;
            o_platformControler contact = null;

            switch (TYPEOFBLOCK)
            {
            case BLOCK_TYPE.DOOR:
                if (flag == "0")
                {
                    renderer.animNum = 1;
                    if (IntersectBox <o_plcharacter>(new Vector2(0, 0)) != null)
                    {
                        Game1.game.IncrementLevel();
                    }
                }
                else
                {
                    renderer.animNum = 0;
                }
                break;

            case BLOCK_TYPE.PORTAL:
                anima.SetAnimation("portal", true);
                contact = IntersectBox <o_platformControler>(new Vector2(0, 0));
                if (contact != null)
                {
                    if (doorDelay <= 0)
                    {
                        o_block f = Game1.FindCharacter <o_block>(flag);
                        contact.position = f.position;
                        f.velocity       = Vector2.Zero;
                        Game1.PlaySound(11);
                        f.doorDelay = 1.2f;
                        doorDelay   = 1.2f;
                    }
                }
                else
                {
                    if (doorDelay > 0)
                    {
                        doorDelay -= Game1.deltaTime;
                    }
                }
                if (doorDelay <= 0)
                {
                    renderer.colour = new Color(1, 1, 1, 1f);
                }
                else
                {
                    renderer.colour = new Color(1, 1, 1, 0.5f);
                }
                break;

            case BLOCK_TYPE.SWITCH_DOOR:

                if (flag == "0")
                {
                    Game1.game.ChangeTile(position, 0);
                    Game1.RemoveObject(this);
                }
                break;

            case BLOCK_TYPE.BOMBER:

                if (bomb_timer <= 0)
                {
                    if (bomb_ItemToFocusOn == null)
                    {
                        o_item it = Game1.AddObject <o_item>(position + new Vector2(0, 20), "bomb", Game1.textures["bomb"].Item2, Game1.textures["bomb"].Item1);
                        if (it != null)
                        {
                            it.itType          = o_item.ITEM_TY.Bomb;
                            it.iscatchable     = false;
                            it.velocityLimiter = 0.97f;
                            it.Throw(direction);
                            it.bombTimer          = 2.5f;
                            it.collisionOffset    = new Vector2(6, 0);
                            it.collisionBox.Width = 12;
                            bomb_ItemToFocusOn    = it;
                            it.parent             = this;
                            bomb_timer            = max_bomb_timer;
                        }
                    }
                }
                else
                if (bomb_ItemToFocusOn == null)
                {
                    bomb_timer -= Game1.deltaTime;
                }
                break;
            }
        }
Ejemplo n.º 6
0
        public CreditsScreen(Game1 game)
        {
            this._game = game;
            this._screen = ScreenType.Character;
            this.clientBounds = game.Window.ClientBounds;
            this._game.IsMouseVisible = false;

            handInitSystemID = game.RegisterSystem(new HandInitSystem(game));

            if (game.winner == 1)
            {
                arrowInputSystemID = game.RegisterSystem(new ArrowInputSystem(game, 1));
                selectsInputID1 = game.RegisterSystem(new SelectInputSystem(game, 1));
            }
            else if (game.winner == 2)
            {
                controllerInputSystemID = game.RegisterSystem(new ControllerInputSystem(game, 2));
                selectsInputID2 = game.RegisterSystem(new SelectInputSystem(game, 2));
            }
            else
            {
                selectsInputID1 = game.RegisterSystem(new SelectInputSystem(game, 1));
                selectsInputID2 = game.RegisterSystem(new SelectInputSystem(game, 2));
            }
            mapRendererID = game.RegisterSystem(new MapRenderer(game));
            handRenderID = game.RegisterSystem(new HandRenderer1(game));
            screenInitSystemID = game.RegisterSystem(new ScreenInitializationSystem(game));
            switchSystemID = game.RegisterSystem(new SwitchScreenSystem(game));

            if (game.winner == 1)
            {
                game.SetSystemCallOrder(new List<int>
                 {
                    screenInitSystemID,
                    handInitSystemID,
                    arrowInputSystemID,
                    selectsInputID1,
                    mapRendererID,
                    handRenderID,
                    switchSystemID
                 });
            }
            else if (game.winner == 2)
            {
                game.SetSystemCallOrder(new List<int>
                 {
                    screenInitSystemID,
                    handInitSystemID,
                    controllerInputSystemID,
                    selectsInputID2,
                    mapRendererID,
                    handRenderID,
                    switchSystemID
                 });
            }
            else
            {
                game.SetSystemCallOrder(new List<int>
                 {
                    screenInitSystemID,
                    handInitSystemID,
                    arrowInputSystemID,
                    controllerInputSystemID,
                    selectsInputID1,
                    selectsInputID2,
                    mapRendererID,
                    handRenderID,
                    switchSystemID
                 });
            }

            game.AddObject(new HandObject2(game, 1));
            game.AddObject(new HandObject2(game, 2));
        }
Ejemplo n.º 7
0
        public GameScreen(Game1 game, SpriteType player1, SpriteType player2)
        {
            game.IsMouseVisible = true;

            this.envFactory = new EnvironmentFactory(game);
            this.clientBounds = game.Window.ClientBounds;
            mapInitSystemID = game.RegisterSystem(new ScreenInitializationSystem(game));
            spriteInitSystemID1 = game.RegisterSystem(new SpriteInitializationSystem(game, 1));
            spriteInitSystemID2 = game.RegisterSystem(new SpriteInitializationSystem(game, 2));
            songInitSystemID = game.RegisterSystem(new SongInitializer(game));
            if (game.playe2 == PlayerType.Human)
            {
                controllerInputSystemID = game.RegisterSystem(new ControllerInputSystem(game, 2));
                //arrowInputSystemID = game.RegisterSystem(new ArrowInputSystem(game, 2));
                inputSystemID2 = game.RegisterSystem(new InputSystem(game, 2));
            }
            if (game.playe1 == PlayerType.Human)
            {
                arrowInputSystemID = game.RegisterSystem(new ArrowInputSystem(game, 1));
                //controllerInputSystemID = game.RegisterSystem(new ControllerInputSystem(game, 1));
                inputSystemID1 = game.RegisterSystem(new InputSystem(game, 1));
            }
            animationSystemID1 = game.RegisterSystem(new AnimationSystem(game, 1));
            animationSystemID2 = game.RegisterSystem(new AnimationSystem(game, 2));
            movementSystemID1 = game.RegisterSystem(new MovementSystem(game, 1));
            movementSystemID2 = game.RegisterSystem(new MovementSystem(game, 2));
            actionSystemID = game.RegisterSystem(new ActionSystem(game));
            physicsSystemID = game.RegisterSystem(new PhysicsSystem(game));
            boundsSystemID = game.RegisterSystem(new BoundsSystem(game));
            meshRendererID = game.RegisterSystem(new LinebatchMeshRenderSystem(game));
            collisionRendererID = game.RegisterSystem(new CollisionRenderSystem(game));
            mapRendererID = game.RegisterSystem(new MapRenderer(game));
            spriteRendererID = game.RegisterSystem(new SpriteRenderer(game));
            uiRendererID = game.RegisterSystem(new UIRenderer(game));
            transformResolverID = game.RegisterSystem(new PhysicsTransformResolverSystem(game));
            lifetimeSystemID = game.RegisterSystem(new LifetimeSystem(game));
            int aStarPathRendererID = game.RegisterSystem(new AStarPathRenderer(game));
            int aStarRendererID = game.RegisterSystem(new AStarPathfindingRenderer(game));
            int aiSystemID = game.RegisterSystem(new AISystem(game));
            int timerRendererID = game.RegisterSystem(new TimerRenderSystem(game));
            int timerSystemID = game.RegisterSystem(new TimerSystem(game));
            songSystemID = game.RegisterSystem(new MusicSystem(game));

            //services
            int collisionSystemID = game.RegisterSystem(new SATCollisionSystem(game, "Collision"));
            int aStarServiceID = game.RegisterSystem(new AStarPathfindingSystem(game, "Pathfinding", 50));

            if (game.playe1 == PlayerType.Human && game.playe2 == PlayerType.Human)
            {
                game.SetSystemCallOrder(new List<int>
                    {
                        this.mapInitSystemID,
                        this.spriteInitSystemID1,
                        this.spriteInitSystemID2,
                        this.songInitSystemID,
                        this.arrowInputSystemID,
                        this.controllerInputSystemID,
                        aiSystemID,
                        this.inputSystemID1,
                        this.inputSystemID2,
                        this.animationSystemID1,
                        this.animationSystemID2,
                        this.movementSystemID1,
                        this.movementSystemID2,
                        this.actionSystemID,
                        this.physicsSystemID,
                        this.transformResolverID,
                        this.boundsSystemID,
                        this.lifetimeSystemID,
                        //this.physicsSystemID,
                        this.meshRendererID,
                        this.mapRendererID,
                        this.collisionRendererID,
                        this.spriteRendererID,
                        this.uiRendererID,
                        aStarRendererID,
                        aStarPathRendererID,
                        songSystemID
                    });
            }
            else if (game.playe1 == PlayerType.Human)
            {
                game.SetSystemCallOrder(new List<int>
                    {
                        this.mapInitSystemID,
                        this.spriteInitSystemID1,
                        this.spriteInitSystemID2,
                        this.songInitSystemID,
                        this.arrowInputSystemID,
                        aiSystemID,
                        this.inputSystemID1,
                        this.animationSystemID1,
                        this.animationSystemID2,
                        this.movementSystemID1,
                        this.movementSystemID2,
                        this.actionSystemID,
                        this.physicsSystemID,
                        this.transformResolverID,
                        this.boundsSystemID,
                        this.lifetimeSystemID,
                        //this.physicsSystemID,
                        this.meshRendererID,
                        this.mapRendererID,
                        this.collisionRendererID,
                        this.spriteRendererID,
                        this.uiRendererID,
                        aStarRendererID,
                        aStarPathRendererID,
                        songSystemID
                    });
            }
            else if (game.playe2 == PlayerType.Human)
            {
                game.SetSystemCallOrder(new List<int>
                    {
                        this.mapInitSystemID,
                        this.spriteInitSystemID1,
                        this.spriteInitSystemID2,
                        this.songInitSystemID,
                        this.controllerInputSystemID,
                        aiSystemID,
                        this.inputSystemID2,
                        this.animationSystemID1,
                        this.animationSystemID2,
                        this.movementSystemID1,
                        this.movementSystemID2,
                        this.actionSystemID,
                        this.physicsSystemID,
                        this.transformResolverID,
                        this.boundsSystemID,
                        this.lifetimeSystemID,
                        //this.physicsSystemID,
                        this.meshRendererID,
                        this.mapRendererID,
                        this.collisionRendererID,
                        this.spriteRendererID,
                        this.uiRendererID,
                        aStarRendererID,
                        aStarPathRendererID,
                        songSystemID
                    });
            }

            if (game.playe1 == PlayerType.Human)
            {
                if (player1 == SpriteType.Yoshi)
                {
                    this.p1 = DynamicEntityFactory.BuildPlayerControlledEntity(
                         game,
                         1,
                         Color.Green,
                         new Vector2(100, 0),
                         0.0f,
                         new Vector2(1.0f, 1.0f),
                         400,
                         1000,
                         SpriteType.Yoshi,
                         new List<Shape>
                                {
                                    //Shape.BuildRectangle(new Rectangle(-55, -60, 90, 60)),
                                    Shape.BuildRectangle(new Rectangle(-40, 0, 120, 60)),
                                    Shape.BuildRectangle(new Rectangle(25, 60, 40, 30))
                                },
                         MoveDefinitions.GetYoshiMoves()
                     );
                }
                else
                {
                    this.p1 = DynamicEntityFactory.BuildPlayerControlledEntity(
                        game,
                        1,
                        Color.Green,
                        new Vector2(100, 0),
                        0.0f,
                        new Vector2(1.0f, 1.0f),
                        300,
                        1000,
                        SpriteType.Kirby,
                        new List<Shape>
                            {
                                Shape.BuildRectangle(new Rectangle(-60, -60, 110, 110))
                            },
                        MoveDefinitions.GetKirbyMoves()
                    );

                    //kirby.AddComponent(new LifetimeComponent(kirby, 5000));
                    //kirby.SetParent(yoshi);
                }
            }
            else
            {
                if (player1 == SpriteType.Yoshi)
                {
                    this.p1 = DynamicEntityFactory.BuildComputerControlledEntity(
                        game,
                        1,
                        Color.Green,
                        new Vector2(800, 0),
                        0.0f,
                        new Vector2(1.0f, 1.0f),
                        250,
                        500,
                        SpriteType.Yoshi,
                        new List<Shape>
                            {
                                    Shape.BuildRectangle(new Rectangle(-40, 0, 120, 60)),
                                    Shape.BuildRectangle(new Rectangle(25, 60, 40, 30))
                            },
                        MoveDefinitions.GetYoshiMoves(),
                        this.p2
                    );
                }
                else
                {
                    this.p1 = DynamicEntityFactory.BuildComputerControlledEntity(
                        game,
                        1,
                        Color.Green,
                        new Vector2(800, 0),
                        0.0f,
                        new Vector2(1.0f, 1.0f),
                        250,
                        500,
                        SpriteType.Kirby,
                        new List<Shape>
                            {
                                    Shape.BuildRectangle(new Rectangle(-60, -60, 110, 110))
                            },
                        MoveDefinitions.GetKirbyMoves(),
                        this.p2
                        );
                }
            }

            game.AddObject(p1);

            if (game.playe1 == PlayerType.Human)
            {
                if (player2 == SpriteType.Yoshi)
                {
                    this.p2 = DynamicEntityFactory.BuildPlayerControlledEntity(
                         game,
                         2,
                         Color.Pink,
                         new Vector2(800, 0),
                         0.0f,
                         new Vector2(1.0f, 1.0f),
                         400,
                         500,
                         SpriteType.Yoshi,
                         new List<Shape>
                                {
                                    //Shape.BuildRectangle(new Rectangle(-55, -60, 90, 60)),
                                    Shape.BuildRectangle(new Rectangle(-40, 0, 120, 60)),
                                    Shape.BuildRectangle(new Rectangle(25, 60, 40, 30))
                                },
                         MoveDefinitions.GetYoshiMoves()
                     );
                }
                else
                {

                    this.p2 = DynamicEntityFactory.BuildPlayerControlledEntity(
                        game,
                        2,
                        Color.Pink,
                        new Vector2(500, 0),
                        0.0f,
                        new Vector2(1.0f, 1.0f),
                        300,
                        10000,
                        SpriteType.Kirby,
                        new List<Shape>
                            {
                                Shape.BuildRectangle(new Rectangle(-60, -60, 110, 110))
                            },
                        MoveDefinitions.GetKirbyMoves()
                    );

                    //this.p2 = DynamicEntityFactory.BuildComputerControlledEntity(
                    //    game,
                    //    2,
                    //    Color.Pink,
                    //    new Vector2(800, 0),
                    //    0.0f,
                    //    new Vector2(1.0f, 1.0f),
                    //    250,
                    //    500,
                    //    SpriteType.Kirby,
                    //    new List<Shape>
                    //        {
                    //            Shape.BuildRectangle(new Rectangle(-60, -60, 110, 110))
                    //        },
                    //    MoveDefinitions.GetYoshiMoves(),
                    //    this.p1
                    //);
                }
            }
            else
            {
                if (player2 == SpriteType.Yoshi)
                {
                    this.p2 = DynamicEntityFactory.BuildComputerControlledEntity(
                        game,
                        2,
                        Color.Pink,
                        new Vector2(800, 0),
                        0.0f,
                        new Vector2(1.0f, 1.0f),
                        250,
                        500,
                        SpriteType.Yoshi,
                        new List<Shape>
                            {
                                    Shape.BuildRectangle(new Rectangle(-40, 0, 120, 60)),
                                    Shape.BuildRectangle(new Rectangle(25, 60, 40, 30))
                            },
                        MoveDefinitions.GetYoshiMoves(),
                        this.p1
                    );
                }
                else
                {
                    this.p2 = DynamicEntityFactory.BuildComputerControlledEntity(
                        game,
                        2,
                        Color.Pink,
                        new Vector2(800, 0),
                        0.0f,
                        new Vector2(1.0f, 1.0f),
                        250,
                        500,
                        SpriteType.Kirby,
                        new List<Shape>
                            {
                                    Shape.BuildRectangle(new Rectangle(-60, -60, 110, 110))
                            },
                        MoveDefinitions.GetKirbyMoves(),
                        this.p1
                        );
                }
            }

            game.AddObject(p2);

            if (game.mapType == MapType.Basic)
            {
                game.AddObject(new TextObject2(game, MapType.Basic));

                game.AddObject(envFactory.BuildStaticRectangularObstacle(
                    new Vector2(403, 347),
                    new Rectangle(0, -10, -378, -36),
                    2000.0f,
                    Color.Red));

                game.AddObject(envFactory.BuildStaticRectangularObstacle(
                    new Vector2(1173, 498),
                    new Rectangle(0, -10, -380, -37),
                    2000.0f,
                    Color.Red));

                game.AddObject(envFactory.BuildStaticRectangularObstacle(
                    new Vector2(1165, 119),
                    new Rectangle(0, -10, -530, -39),
                    2000.0f,
                    Color.Red));

                game.AddObject(envFactory.BuildStaticRectangularObstacle(
                    new Vector2(1050, 662),
                    new Rectangle(0, -10, -927, -1),
                    2000.0f,
                    Color.Red));

                AStarPathfindingSystem pathfinding = (AStarPathfindingSystem)game.GetService("Pathfinding");
                AStarNode node1 = new AStarNode(new Vector2(700, 50));
                AStarNode node2 = new AStarNode(new Vector2(320, 270), true);
                AStarNode node3 = new AStarNode(new Vector2(820, 400));
                AStarNode node4 = new AStarNode(new Vector2(700, 620), true);
                AStarNode node5 = new AStarNode(new Vector2(300, 620));
                node1.AddNeighbor(node2);
                node2.AddNeighbor(node1);
                node2.AddNeighbor(node3);
                node3.AddNeighbor(node2);
                node3.AddNeighbor(node4);
                node4.AddNeighbor(node3);
                node4.AddNeighbor(node5);
                node5.AddNeighbor(node4);
                AStarGraph graph = new AStarGraph(game, new List<AStarNode> { node1, node2, node3, node4, node5 });
                GameObject graphEntity = new GameObject(game);
                graphEntity.AddComponent(new AStarGraphComponent(graphEntity, graph));
                game.AddObject(graphEntity);
                game.CurrentPathfindingGraph = graph;

                game.AddObject(new SongObject(game, MapType.Basic));
            }
            else
            {
                game.AddObject(new TextObject2(game, MapType.Hyrule));

                game.AddObject(envFactory.BuildStaticRectangularObstacle(
                    new Vector2(303, 500),
                    new Rectangle(0, -10, -10, -120),
                    2000.0f,
                    Color.Red));

                game.AddObject(envFactory.BuildStaticRectangularObstacle(
                    new Vector2(302, 505),
                    new Rectangle(0, -10, -140, -10),
                    2000.0f,
                    Color.Red));

                game.AddObject(envFactory.BuildStaticRectangularObstacle(
                    new Vector2(815, 390),
                    new Rectangle(0, -10, -516, -10),
                    2000.0f,
                    Color.Red));

                //game.AddObject(envFactory.BuildStaticRectangularObstacle(
                //    new Vector2(704, 330),
                //    new Rectangle(0, -10, -109, -10),
                //    2000.0f,
                //    Color.Red));

                //game.AddObject(envFactory.BuildStaticRectangularObstacle(
                //    new Vector2(757, 223),
                //    new Rectangle(0, -10, -107, -10),
                //    2000.0f,
                //    Color.Red));

                game.AddObject(envFactory.BuildStaticRectangularObstacle(
                    new Vector2(1064, 510),
                    new Rectangle(0, -10, -250, -10),
                    2000.0f,
                    Color.Red));

                game.AddObject(envFactory.BuildStaticRectangularObstacle(
                    new Vector2(818, 510),
                    new Rectangle(0, -10, -10, -130),
                    2000.0f,
                    Color.Red));

                game.AddObject(envFactory.BuildStaticRectangularObstacle(
                    new Vector2(174, 800),
                    new Rectangle(0, -10, -10, -300),
                    2000.0f,
                    Color.Red));

                game.AddObject(envFactory.BuildStaticRectangularObstacle(
                    new Vector2(1066, 810),
                    new Rectangle(0, -10, -10, -306),
                    2000.0f,
                    Color.Red));

                AStarPathfindingSystem pathfinding = (AStarPathfindingSystem)game.GetService("Pathfinding");
                AStarNode node1 = new AStarNode(new Vector2(230, 480), true);
                AStarNode node2 = new AStarNode(new Vector2(320, 350));
                AStarNode node3 = new AStarNode(new Vector2(800, 350));
                AStarNode node4 = new AStarNode(new Vector2(890, 480), true);
                node1.AddNeighbor(node2);
                node2.AddNeighbor(node1);
                node2.AddNeighbor(node3);
                node3.AddNeighbor(node2);
                node3.AddNeighbor(node4);
                node4.AddNeighbor(node3);
                AStarGraph graph = new AStarGraph(game, new List<AStarNode> { node1, node2, node3, node4 });
                GameObject graphEntity = new GameObject(game);
                graphEntity.AddComponent(new AStarGraphComponent(graphEntity, graph));
                game.AddObject(graphEntity);
                game.CurrentPathfindingGraph = graph;

                game.AddObject(new SongObject(game, MapType.Hyrule));
            }

            //game.AddObject(envFactory.BuildStaticRectangularObstacle(
            //    new Vector2(clientBounds.Width / 2, clientBounds.Height),
            //    new Rectangle(-clientBounds.Width / 2, -10, clientBounds.Width, 20),
            //    2000.0f,
            //    Color.Red));

            //game.AddObject(envFactory.BuildStaticRectangularObstacle(
            //    new Vector2(clientBounds.Width / 2, clientBounds.Height / 3 * 2),
            //    new Rectangle(-clientBounds.Width / 2, -10, clientBounds.Width / 2, 20),
            //    2000.0f,
            //    Color.Red));

            //if (this._game.gameType == Types.GameTypes.Timed)
            //{
            //    game.AddObject(new TimeObject(game, new Vector2(0, 0), Color.Black));
            //}

            game.Character1 = this.p1;
            game.Character2 = this.p2;
        }
Ejemplo n.º 8
0
        public override void Update(GameTime gametime)
        {
            if (CheckPoint(new Vector2(0, 0)))
            {
                if (catchDel < 0)
                {
                    Game1.RemoveObject(this);
                }
            }

            o_block block = null;

            block = IntersectBox <o_block>(new Vector2(0, 0));

            if (block != null)
            {
                switch (block.TYPEOFBLOCK)
                {
                case o_block.BLOCK_TYPE.SWITCH:

                    block.ButtonChange();
                    Game1.RemoveObject(this);
                    break;

                case o_block.BLOCK_TYPE.SPIKES:

                    if (itType != ITEM_TY.Bomb)
                    {
                        position = spawnpoint;
                        velocity = Vector2.Zero;
                    }
                    else
                    {
                        bombTimer = 0;
                    }
                    break;
                }
            }

            if (itType == ITEM_TY.Bomb)
            {
                switch (fs)
                {
                case FUSE_STATE.THROWN:
                    if (parent == null)
                    {
                        bombTimer -= (float)gametime.ElapsedGameTime.TotalSeconds;
                        if (bombTimer <= 0)
                        {
                            isKenematic       = false;
                            collisionBox.Size = (new Vector2(20, 20) * 2f).ToPoint();
                            position          = new Vector2(collisionBox.Location.X + 10, collisionBox.Location.Y - 10);
                            ForceCollisionBoxUpdate();
                            bombTimer = 0.5f;
                            fs        = FUSE_STATE.BLOWING_UP;
                        }
                    }
                    else
                    {
                        o_plcharacter play = IntersectBox <o_plcharacter>(new Vector2(0, 0));
                        if (play != null)
                        {
                            if (parent != null)
                            {
                                parent.bomb_ItemToFocusOn = null;
                            }
                            TPPlayer(ref play);
                            return;
                        }
                    }
                    break;

                case FUSE_STATE.BLOWING_UP:

                    bombTimer -= (float)gametime.ElapsedGameTime.TotalSeconds;
                    if (bombTimer >= 0)
                    {
                        Destroy();
                    }
                    else
                    {
                        Game1.PlaySound(7, position);
                        if (parent != null)
                        {
                            parent.bomb_ItemToFocusOn = null;
                        }
                        else
                        {
                            o_item it = Game1.AddObject <o_item>(spawnpoint, "bomb", Game1.textures["bomb"].Item2, Game1.textures["bomb"].Item1);
                            if (it != null)
                            {
                                it.itType     = o_item.ITEM_TY.Bomb;
                                it.spawnpoint = spawnpoint;
                            }
                        }

                        Game1.RemoveObject(this);
                    }
                    break;
                }
            }

            //timer -= (float)gametime.ElapsedGameTime.TotalSeconds;
            if (catchDel > 0)
            {
                catchDel -= (float)gametime.ElapsedGameTime.TotalSeconds;
            }

            o_plcharacter pl = CheckPointEnt <o_plcharacter>(new Vector2(10, 10));

            if (pl != null)
            {
                if (catchDel <= 0 && iscatchable)
                {
                    pl.heldItem  = itType;
                    pl.itemSpawn = spawnpoint;
                    Game1.RemoveObject(this);
                }
            }

            /*
             * if (timer < 0)
             *  Game1.RemoveObject(this);
             *
             * o_movableSolid item = IntersectBox<o_movableSolid>(new Vector2(0, 0));
             * if (item != null)
             * {
             *  item.velocity.X += velocity.X / 10;
             *  velocity = Vector2.Zero;
             * }
             */


            base.Update(gametime);
        }