Showing posts with label change HP. Show all posts
Showing posts with label change HP. Show all posts

Thursday, 15 April 2021

【GAMEMAKER】HUD show spells, inventory, change HP, XP, Gold, and weapon

 Information about object: obj_player

Sprite: spr_idle_down
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent:
Children:
Mask:
No Physics Object
Create Event:
execute code:

///set up
enum player_state {
    idle,
    up,
    down,
    left,
    right
    }

dir=player_state.down;
is_moving=false;
image_speed=0.5;

can_show_message=true; //allows message to be shown
Alarm Event for alarm 0:
execute code:

can_show_message=true;
Step Event:
execute code:

///keypress code
if (keyboard_check(vk_left))
{
    dir=player_state.left;
    is_moving=true;
}
else
if (keyboard_check(vk_right))
{
    dir=player_state.right;
    is_moving=true;
}
else
if (keyboard_check(vk_up))
{
    dir=player_state.up;
    is_moving=true;
}
else
if (keyboard_check(vk_down))
{
    dir=player_state.down;
    is_moving=true;
}
else
{
    is_moving=false;
}


execute code:

///movement
if is_moving
{
    switch (dir)
    {
        case player_state.up:
        y -= 4;
        break;

        case player_state.down:
        y += 4;
        break;

        case player_state.left:
        x -= 4;
        break;
   
        case player_state.right:
        x += 4;
        break;
    }
}


execute code:

///animation
if is_moving
{
    switch (dir)
    {
        case player_state.up:
        sprite_index=spr_walk_up;
        break;

        case player_state.down:
        sprite_index=spr_walk_down;
        break;

        case player_state.left:
        sprite_index=spr_walk_left;
        break;
   
        case player_state.right:
        sprite_index=spr_walk_right;
        break;
    }
}
else
{
    switch (dir)
    {
        case player_state.up:
        sprite_index=spr_idle_up;
        break;

        case player_state.down:
        sprite_index=spr_idle_down;
        break;

        case player_state.left:
        sprite_index=spr_idle_left;
        break;
   
        case player_state.right:
        sprite_index=spr_idle_right;
        break;
    }
}

execute code:

///collision with object for message
Collision Event with object obj_message_item:
execute code:

if can_show_message
{
    can_show_message=false;
    scr_message(other.message);
    alarm[0]=room_speed*3;
}

Information about object: obj_message
Sprite:
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent:
Children:
Mask:
No Physics Object
Create Event:
execute code:

global.message=ds_list_create();//create a ds list to hold messages
can_show=true;//set that a message can show
to_draw="";//set text to draw to ""
show_text="";
count=0;

Alarm Event for alarm 0:
execute code:

///alarm0 set alarm1
alarm[1]=room_speed*1;//create a short pause
to_draw="";//remove text to show
show_text="";
count=0;
Alarm Event for alarm 1:
execute code:

///set as able to show
can_show=true;
Step Event:
execute code:

///check if message waiting
check=ds_list_size(global.message);//get no of messages waiting
if check>0 && can_show//do this if more than one message and can show
{
    to_draw=ds_list_find_value(global.message,0);//get message from top of ds list
    ds_list_delete(global.message,0);//delete this message
    can_show=false;//prevent showing
    alarm[0]=room_speed*4;//create a pause
}
if(string_length(show_text) < string_length(to_draw))
{
show_text = string_copy(to_draw,1,count);
alarm[0] = room_speed*5;
count +=1;
}
Draw GUI Event:
execute code:

///draw message

if to_draw!=""//do if there is a message waiting
{
    draw_set_alpha(0.5);
    //set up
    var xx=350;
    var yy=250;
    var padding=10;
    var border_size=2;
    var width =string_width(to_draw) + padding * 2; // width of message
    var height = string_height(to_draw) + padding * 2; 
    //draw background sprite
    draw_sprite(spr_message_bg,0,xx,yy);
    
    //draw border of message
    draw_set_colour(c_blue);
    draw_roundrect(xx-(width/2)-border_size,
    yy-(height/2)-border_size,xx+(width/2)+border_size,yy+(height/2)+border_size,false);
    //draw main message background
    draw_set_colour(c_aqua);
    draw_roundrect(xx-(width/2),
    yy-(height/2),xx+(width/2),yy+(height/2),false);
    //draw a message
    draw_set_font(font_message);
    draw_set_halign(fa_center);
    draw_set_valign(fa_middle);
    draw_set_colour(c_red);
    draw_text(xx+1,yy+1,show_text);
    draw_set_colour(c_black);
    draw_text(xx,yy,show_text);
    draw_set_alpha(1);
}

Information about object: obj_message_item
Sprite:
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent:
Children
obj_door
obj_banana
obj_rum
obj_chest
Mask:
No Physics Object

Information about object: obj_door
Sprite: spr_door
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: obj_message_item
Children:
Mask:
No Physics Object
Create Event:
execute code:

message="You Need A Key To Open This";

Information about object: obj_banana
Sprite: spr_banana
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: obj_message_item
Children:
Mask:
No Physics Object
Create Event:
execute code:

message="Press P To Pick Up Banana";

Information about object: obj_rum
Sprite: spr_rum
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: obj_message_item
Children:
Mask:
No Physics Object
Create Event:
execute code:

message="Press M To Drink The Rum";

Information about object: obj_chest
Sprite: spr_chest
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: obj_message_item
Children:
Mask:
No Physics Object
Create Event:
execute code:

message="Press K To Use The Key";

Information about object: obj_hud
Sprite: spr_hud
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent:
Children:
Mask:
No Physics Object
Create Event:
execute code:

///Set Up Varaibles For Testing / Example
//In your own game you'd set initial values
//in a splash screen or load saved data
//spells
can_show_spells=false; // flag as to whether popup shows
can_show_inventory=false;
global.ice_spell=5;
global.earth_spell=2;
global.fire_spell=8;
global.water_spell=1;
//hp and xp
global.hp=80;
global.xp=35;
//gold
global.gold=1150;
//weapon
global.weapon=0;//starts at 0 as using sub images start at index 0



Step Event:
execute code:

///Keyboard Control
//show / hide spells popup
if keyboard_check_pressed(ord('S'))
{
    can_show_spells=!can_show_spells;
}
//show / hide inventory popup
if keyboard_check_pressed(ord('I'))
{
    can_show_inventory=!can_show_inventory;
}

execute code:

///Following For Testing - To Allow changing of variables
if keyboard_check(ord('Q'))
{
    global.hp++;
}
if keyboard_check(ord('A'))
{
    global.hp--;
    if global.hp<0 global.hp=0;
}
if keyboard_check(ord('E'))
{
    global.xp++;
}
if keyboard_check(ord('D'))
{
    global.xp--;
    if global.xp<0 global.xp=0;
}
if keyboard_check(ord('R'))
{
    global.gold++;
}
if keyboard_check(ord('F'))
{
    global.gold--;
    if global.gold<0 global.gold=0;
}
if keyboard_check_pressed(ord('W'))
{
    global.weapon++;
    if global.weapon==3 global.weapon=0;
}
Draw Event:
execute code:

///this comment prevents default drawing
Draw GUI Event:
execute code:

///draw self - frame
draw_self();
execute code:

///Format text
draw_set_font(font_info);
draw_set_halign(fa_left);
draw_set_valign(fa_middle);
draw_set_colour(c_yellow);
execute code:

///draw spell popup
if can_show_spells
{
    draw_set_alpha(0.5); // set as half transparent
    draw_sprite(spr_popup_spells,0,350,200);
    draw_set_alpha(1); //reset transparency
    draw_text(142,180,global.earth_spell);
    draw_text(274,180,global.fire_spell);
    draw_text(416,180,global.ice_spell);
    draw_text(551,180,global.water_spell);

}
execute code:

///Draw hp, xp & level
draw_hp=global.hp mod 100;
draw_xp=global.xp mod 100;
draw_level=(global.xp div 100)+1;
//hp
draw_text(60,552,"HP:"+string(global.hp));

for (var loop = 0; loop < draw_hp; loop += 1)
{
    draw_line(135+loop,547,135+loop,557);
}
draw_set_colour(c_black);
draw_roundrect(135,547,230,557,true);
draw_roundrect(134,546,231,558,true);
draw_set_colour(c_yellow);
//xp

draw_text(60,582,"XP: "+string(draw_xp));

draw_set_colour(c_teal);
for (var loop = 0; loop < draw_xp; loop += 1)
{
    draw_line(135+loop,577,135+loop,587);
}
draw_set_colour(c_black);
draw_roundrect(135,577,230,587,true);
draw_roundrect(134,576,231,588,true);
draw_set_colour(c_yellow);
//level 
draw_set_halign(fa_center);
draw_text(150,524,"Level: "+string(draw_level));
draw_set_halign(fa_left);
execute code:

///draw gold
draw_text(100,638,"Gold: "+string(global.gold));
execute code:

///draw weapon
switch (global.weapon)
{
  case 0:
  weapon_name="Cutlass";
  break;
  
  case 1:
  weapon_name="Gun";
  break;
  
  case 2:
  weapon_name="Hook";
  break;
}
draw_set_halign(fa_middle);
draw_text(350,522,"Weapon");
draw_text(350,540,weapon_name);
draw_sprite(spr_weapon_1,global.weapon,350,600);



draw_set_halign(fa_left);//reset to preferred default
execute code:

///Draw Inventory
//For example purposes, see Inventory section in the book for a full working example

if can_show_inventory
{
    draw_sprite(spr_inv_bg,0,0,400);
    draw_set_halign(fa_center);
    draw_text(350,420,"Pop Up Inventory System Would Go Here");
    draw_set_font(font_info_small);
    //draw example
    draw_sprite(spr_inv_rum,0,300,450);
    draw_sprite(spr_inv_chest,0,400,450);
}

execute code:

///info
draw_set_font(font_message);
draw_set_halign(fa_left);
draw_text(200,380,"S to show spells - I to show inventory Q A change hp#
E D change xp - R F change gold - W change Weapon");

BREAKING: North Carolina automotive group acquires 7 Upstate dealerships

Breaking news from GSA Business Report Click here to view this message in a browser window. ...