Information about object: obj_player
Sprite: spr_idle_down
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent:
Children:
Mask:
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_messageSprite:
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent:
Children:
Mask: No Physics ObjectCreate 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_itemSprite:
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent:
ChildrenMask:
obj_door
obj_banana
obj_rum
obj_chest No Physics ObjectInformation about object: obj_doorSprite: spr_door
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: obj_message_item
Children:
Mask: No Physics ObjectCreate Event:execute code: message="You Need A Key To Open This";Information about object: obj_bananaSprite: spr_banana
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: obj_message_item
Children:
Mask: No Physics ObjectCreate Event:execute code: message="Press P To Pick Up Banana";Information about object: obj_rumSprite: spr_rum
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: obj_message_item
Children:
Mask: No Physics ObjectCreate Event:execute code: message="Press M To Drink The Rum";Information about object: obj_chestSprite: spr_chest
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent: obj_message_item
Children:
Mask: No Physics ObjectCreate Event:execute code: message="Press K To Use The Key";Information about object: obj_hudSprite: spr_hud
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent:
Children:
Mask: No Physics ObjectCreate 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 0Step 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 drawingDraw 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 defaultexecute 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");