Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// Main actions
- switch(state)
- {
- case('IDLE'):
- {
- last_state = 'IDLE';
- sprite_index = spr_mario_idle;
- image_speed = 0;
- hsp = lerp(hsp, 0, acc * 1.5);
- if (hsp < 0.09) && (hsp > -0.09)
- {
- hsp = 0;
- }
- // Check inputs
- if (input.a) && (vsp == 0) state = 'JUMPING_INIT';
- if (input.right) state = 'RIGHT';
- if (input.left) state = 'LEFT';
- break;
- }
- case('RIGHT'):
- {
- last_state = 'RIGHT';
- if (hsp < 0) sprite_index = spr_mario_stop;
- else sprite_index = spr_mario_walk;
- image_xscale = 1;
- allow_player_movement();
- image_speed = (abs(hsp)/maxSpeed) * animationSpeed;
- // Check inputs
- if (input.b)
- {
- maxSpeed = 4;
- acc = 0.08;
- }
- else
- {
- maxSpeed = 2;
- acc = 0.05;
- }
- if (input.a) && (vsp == 0) state = 'JUMPING_INIT';
- if (input.left) state = 'LEFT';
- if (hsp = 0) state = 'IDLE';
- break;
- }
- case('LEFT'):
- {
- last_state = 'LEFT';
- if (hsp > 0) sprite_index = spr_mario_stop;
- else sprite_index = spr_mario_walk;
- image_xscale = -1;
- allow_player_movement();
- image_speed = (abs(hsp)/maxSpeed) * animationSpeed;
- // Check inputs
- if (input.b)
- {
- maxSpeed = 4;
- acc = 0.08;
- }
- else
- {
- maxSpeed = 2;
- acc = 0.05;
- }
- if (input.a) && (vsp == 0) state = 'JUMPING_INIT';
- if (input.right) state = 'RIGHT';
- if (hsp = 0) state = 'IDLE';
- break;
- }
- case('JUMPING_INIT'):
- {
- sprite_index = spr_mario_jump;
- image_speed = 0;
- if global.grav_id = 1
- vsp = -jumpSpeed;
- if global.grav_id = -1
- vsp = jumpSpeed;
- state = 'JUMPING';
- break;
- }
- case('JUMPING'):
- {
- if global.grav_id = 1
- {
- allow_player_movement();
- if (vsp < 0) && (!input.a_held) vsp = max(vsp, -jumpSpeed/2);
- if (vsp == 0)
- {
- if place_meeting(x, y+1, par_solid) state = last_state;
- }
- else
- {
- if place_meeting(x, y+vsp, par_solid) state = last_state;
- }
- }
- if global.grav_id = -1
- {
- allow_player_movement();
- if (vsp < 0) && (!input.a_held) vsp = max(vsp, -jumpSpeed/2);
- if (vsp == 0)
- {
- if place_meeting(x, y-1, par_solid) state = last_state;
- }
- else
- {
- if place_meeting(x, y+vsp, par_solid) state = last_state;
- }
- }
- break;
- }
- case("DEATH"):
- {
- if (death_timer == 0)
- {
- global.grav = 0;
- hsp = 0;
- vsp = 0;
- }
- death_timer++;
- sprite_index = spr_mario_death;
- image_speed = 0;
- if (death_timer == room_speed/2)
- {
- // global.grav = 0.3;
- // vsp = -jumpSpeed;
- }
- if (death_timer > room_speed * 0.5)
- {
- global.grav = 0.3;
- room_restart();
- global.deaths++
- //global.grav = 0.3;
- }
- //death++
- break;
- }
- }
- // Gravity
- if global.grav_id = 1
- {
- image_yscale = 1
- if (vsp < 5) vsp += global.grav;
- }
- if global.grav_id = -1
- {
- image_yscale = -1
- if (vsp > -5) vsp -= global.grav;
- }
- //if (vsp > -5) vsp -= global.grav;
- // View controls
- //if (x > (view_xview + (view_wview/2))) && (sign(hsp) = 1)
- // view_xview += hsp;
- //
- //if (x <= (view_xview + 8)) && (sign(hsp) = -1)
- // hsp = 0;
- // Wall collisions
- if (state != "DEATH")
- collision_and_moving(par_solid);
- else
- collision_and_moving(noone);
- // Enemy collisions
- if place_meeting(x, y, par_enemy)
- {
- var _enemy = instance_place(x, y, par_enemy);
- if (y < _enemy.y-8) && (_enemy.state != "DEATH") && (state != "DEATH")// From the top
- {
- vsp = -jumpSpeed/2;
- with(_enemy)
- {
- state = "DEATH";
- alarm[0] = room_speed/2;
- }
- }
- else //if (_enemy.state != "DEATH") // From sides
- {
- global.powerup_state -= 1;
- if (global.powerup_state < 0)
- state = "DEATH";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement