public Pause_Menu(Screen_Manager screen_manager, GameCamera _camera) { camera = _camera; rect = Assets.It.Get <Texture2D>("gui-rect"); font = Assets.It.Get <SpriteFont>("gfont"); actions = new Named_Action_List(new Dictionary <string, Action> { { "Resume", () => { LostIslandRanal.Request_Resume(); showing = false; } }, { "Settings", () => { } }, { "Level Select", () => { showing = false; screen_manager.Goto_Screen("Level Select", false); } }, { "Exit", () => { //LostIslandRanal.Request_Resume(); showing = false; screen_manager.Goto_Screen("Menu", true); } } }); }
public override void Update(GameTime time, Entity entity) { // get all of the needed components var body = (Body)entity.Get(Types.Body); var physics = (Physics)entity.Get(Types.Physics); var sprite = (Animated_Sprite)entity.Get(Types.Animation); var invatory = (Invatory)entity.Get(Types.Invatory); var player = (Player)entity.Get(Types.Player); var equipment = (Equipment)entity.Get(Types.Equipment); var dust = (Entity_Particle_Emitter)entity.Get(Types.Entity_Particle_Emitter); // default the animation state to be the idle animation if (player.State != Player.Action_State.ATTACKING) { sprite.Current_Animation_ID = "player-idle"; } //sprite.Color = new Color(1f, 1f, 1f, 0.2f); // get input var state = GamePad.GetState(PlayerIndex.One); var x_axis = state.ThumbSticks.Left.X; var y_axis = state.ThumbSticks.Left.Y; var dash = (state.Triggers.Left > 0.2f); var action = state.Buttons.A == ButtonState.Pressed; var attack = state.Buttons.X == ButtonState.Pressed; string player_run_anim = "player-run"; if (equipment.Left_Hand != null) { if (player.State != Player.Action_State.ATTACKING) { sprite.Current_Animation_ID = equipment.Left_Hand.Idle_Animation_ID; } player_run_anim = equipment.Left_Hand.Run_Animation_ID; } if (Input.It.Is_Key_Pressed(Keys.P)) { global::System.Console.WriteLine($"Player Pos: {body.X} {body.Y}."); } if (player.Can_Move && player.State != Player.Action_State.DASHING && player.State != Player.Action_State.IN_INVATORY) { var mult = (player.State == Player.Action_State.ATTACKING) ? player.Attack_Walk_Speed_Multiplyer : 1; var speed = 10 * mult; if (Input.It.Is_Key_Down(Keys.Space)) { body.Z = 1; } else { body.Z = 0; } if (Input.It.Is_Key_Down(Keys.Left) || x_axis < 0) { if (player.State != Player.Action_State.ATTACKING) { sprite.Current_Animation_ID = player_run_anim; } physics.Apply_Force(speed, Physics.Deg_To_Rad(180)); sprite.Scale = new Vector2(-1, sprite.Scale.Y); } if (Input.It.Is_Key_Down(Keys.Right) || x_axis > 0) { if (player.State != Player.Action_State.ATTACKING) { sprite.Current_Animation_ID = player_run_anim; } physics.Apply_Force(speed, Physics.Deg_To_Rad(0)); sprite.Scale = new Vector2(1, sprite.Scale.Y); } if (Input.It.Is_Key_Down(Keys.Up) || y_axis > 0) { physics.Apply_Force(speed * 0.8f, Physics.Deg_To_Rad(270)); if (player.State != Player.Action_State.ATTACKING) { sprite.Current_Animation_ID = player_run_anim; } } if (Input.It.Is_Key_Down(Keys.Down) || y_axis < 0) { if (player.State != Player.Action_State.ATTACKING) { sprite.Current_Animation_ID = player_run_anim; } physics.Apply_Force(speed * 0.8f, Physics.Deg_To_Rad(90)); } } if (Input.It.Is_Key_Pressed(Keys.C)) { sprite.Force_Play_Animation("player-smoke"); } // Controll if (player.Dying) { player.Can_Move = false; } if (player.Can_Move) { if (Input.It.Is_Key_Pressed(Keys.LeftShift) == true || dash == true) { if (player.Dash_Timer <= 0 && player.State != Player.Action_State.DASHING) { player.State = Player.Action_State.DASHING; var direction = physics.Direction; physics.Velocity = Vector2.Zero; physics.Apply_Force(dash_speed, direction); player.Dash_Timer = player.Max_Dash_Time; } } if (player.Dash_Timer <= 0 && player.State == Player.Action_State.DASHING) { player.State = Player.Action_State.RUNNING; } var _attack = Input.It.Is_Key_Pressed(Keys.X) || Input.It.Is_Gamepad_Button_Pressed(Buttons.X); if (_attack) { player.Combo_Counter++; } if (_attack && player.State != Player.Action_State.ATTACKING) { player.Combo_Counter = 0; if (equipment.Left_Hand != null) { sprite.Current_Animation_ID = equipment.Left_Hand.Use_Animation_ID; sprite.Current_Frame = 0; player.State = Player.Action_State.ATTACKING; // create the collideable Create_Sword_Hitbox(World_Ref, physics, body); } } else { if (player.State == Player.Action_State.ATTACKING) { if (sprite.Current_Frame == 6 - 1) { if (player.Combo_Counter == 0) { player.State = Player.Action_State.IDLE; player.Combo_Counter = 0; player.Performed_Combo = false; } } if (sprite.Current_Frame == 10 - 1 && player.Combo_Counter > 0 && player.Performed_Combo == false) { Create_Sword_Hitbox(World_Ref, physics, body); player.Performed_Combo = true; } if (sprite.Animation_End) { player.Performed_Combo = false; player.Combo_Counter = 0; player.State = Player.Action_State.IDLE; } } } } player.Dash_Timer -= (float)time.ElapsedGameTime.TotalSeconds; // Dealing with the killing of the player if (entity.Get(Component.Types.Health) is Health health) { if (health.Amount <= 0 && !player.Dying) { player.Dying = true; player.Going_To_Menu = false; sprite.Force_Play_Animation("player-die"); return; } } if (player.Dying && sprite.Animation_End && !player.Going_To_Menu) { player.Going_To_Menu = true; sprite.Force_Play_Animation("player-die"); sprite.Current_Frame = sprite.Animations[sprite.Current_Animation_ID].Frames.Count - 1; sprite.Playing = false; screen_manager.Goto_Screen("Menu", true); } // (TEMP): toggle the equipment if (Input.It.Is_Key_Pressed(Keys.E)) { if (equipment.Left_Hand != null) { equipment.Left_Hand = null; } else { // TODO: Clean this up so that i dont hard code the player equipment equipment.Left_Hand = Claymore; } } // handle the dust emitter if (dust != null) { dust.Active = physics.Current_Speed > 1.2f; dust.Offset = new Vector2(dust.Offset.X, -8); if (physics.Vel_X > 0) { dust.Offset = new Vector2(-4, dust.Offset.Y); } else { dust.Offset = new Vector2(-8, dust.Offset.Y); } } camera.Track(body, 0.1f); }