Skip to content

Commit

Permalink
Added equip functionality to inventory, minor tidying up
Browse files Browse the repository at this point in the history
Added equip and unequip functionality to inventory and tidied up some minor issues.
  • Loading branch information
EthanWatkins1720 committed Apr 1, 2024
1 parent a5dfe35 commit 08b5024
Show file tree
Hide file tree
Showing 8 changed files with 124 additions and 42 deletions.
26 changes: 25 additions & 1 deletion Turn-Based-RPG/objects/obj_inventory/Create_0.gml
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ global.inventory = new Inventory();

_show_inventory = false;
_show_tooltip = false;
_pressed = true;
_equipping = false;
_equippable = false;

// values used in drawing inventory slots & border
_gui_width = 314;
Expand Down Expand Up @@ -33,6 +36,8 @@ _y_pos = 0;
_x_pos_max = 9;
_y_pos_max = 3;

_pos = 0;

// tooltip pop-up dimensions
_tooltip_width = 120;
_tooltip_height = 60;
Expand All @@ -42,4 +47,23 @@ _tooltip_margin = 2180;
// globals
op_border = global.op_border
op_space = global.op_space
op_margin = global.op_margin
op_margin = global.op_margin

global.inventory.add_item(global.weapons.bow);
global.inventory.add_item(global.weapons.greatsword);
global.inventory.add_item(global.weapons.dagger);
global.inventory.add_item(global.spells.fireball);
global.inventory.add_item(global.spells.fireball);
global.inventory.add_item(global.spells.fireball);
global.inventory.add_item(global.spells.fireball);
global.inventory.add_item(global.spells.fireball);
global.inventory.add_item(global.spells.fireball);
global.inventory.add_item(global.consumables.health_potion);
global.inventory.add_item(global.consumables.health_potion);
global.inventory.add_item(global.consumables.health_potion);
global.inventory.add_item(global.consumables.health_potion);
global.inventory.add_item(global.consumables.health_potion);
global.inventory.add_item(global.consumables.health_potion);
global.inventory.add_item(global.consumables.hot_tea);
global.inventory.add_item(global.prayer_books.book);
global.inventory.add_item(global.prayers.chill);
37 changes: 19 additions & 18 deletions Turn-Based-RPG/objects/obj_inventory/Draw_64.gml
Original file line number Diff line number Diff line change
Expand Up @@ -47,46 +47,47 @@ draw_sprite(spr_coin, 0, x + 15, y + 37);
draw_text_transformed(x + 27, y + 34, "Gold: " + string(global.gold), 0.125, 0.125, 0);

// draws tooltip description pop-up
if (global.inventory[# _x_pos, _y_pos] != noone) {
_show_tooltip = true;
if (_show_tooltip) {
var _equip = "";
_item_name = global.inventory[# _x_pos, _y_pos]._name;
_item_desc = global.inventory[# _x_pos, _y_pos]._description;
if (_equippable) {
_equip = "Press 'E' to equip.";
}

if (_show_tooltip) {
if (_x_pos < 6 && _y_pos < 2) {
_item_name = global.inventory[# _x_pos, _y_pos]._name;
_item_desc = global.inventory[# _x_pos, _y_pos]._description;
var _equip = "Press 'E' to equip item.";

draw_sprite_stretched(spr_menu_background, 1, x + 33 + (_x_pos * 30), y + 75 + (_y_pos * 30), _tooltip_width, _tooltip_height);
draw_text_ext_transformed_color(x + 40 + (_x_pos * 30), y + 82 + (_y_pos * 30), _item_name, op_space, op_margin, .08, .08, 0, c_white, c_white, c_white, c_white, 1);
draw_text_ext_transformed_color(x + 40 + (_x_pos * 30), y + 82 + (_y_pos * 30) + 10, _item_desc, _tooltip_space, _tooltip_margin, .05, .05, 0, c_white, c_white, c_white, c_white, 1);
draw_text_ext_transformed_color(x + 40 + (_x_pos * 30), y + 82 + (_y_pos * 30) + 40, _equip, op_space, op_margin, .05, .05, 0, c_yellow, c_yellow, c_yellow, c_yellow, 1);
} else if (_x_pos >= 6 && _y_pos < 2) {
_item_name = global.inventory[# _x_pos, _y_pos]._name;
_item_desc = global.inventory[# _x_pos, _y_pos]._description;
var _equip = "Press 'E' to equip item.";

draw_sprite_stretched(spr_menu_background, 1, x + 15 + (_x_pos * 30) - _tooltip_width, y + 75 + (_y_pos * 30), _tooltip_width, _tooltip_height);
draw_text_ext_transformed_color(x + 22 + (_x_pos * 30) - _tooltip_width, y + 82 + (_y_pos * 30), _item_name, op_space, op_margin, .08, .08, 0, c_white, c_white, c_white, c_white, 1);
draw_text_ext_transformed_color(x + 22 + (_x_pos * 30) - _tooltip_width, y + 82 + (_y_pos * 30) + 10, _item_desc, _tooltip_space, _tooltip_margin, .05, .05, 0, c_white, c_white, c_white, c_white, 1);
draw_text_ext_transformed_color(x + 22 + (_x_pos * 30) - _tooltip_width, y + 82 + (_y_pos * 30) + 40, _equip, op_space, op_margin, .05, .05, 0, c_yellow, c_yellow, c_yellow, c_yellow, 1);
} else if (_x_pos < 6 && _y_pos >= 2) {
_item_name = global.inventory[# _x_pos, _y_pos]._name;
_item_desc = global.inventory[# _x_pos, _y_pos]._description;
var _equip = "Press 'E' to equip item.";

draw_sprite_stretched(spr_menu_background, 1, x + 33 + (_x_pos * 30), y + 58 + (_y_pos * 30) - _tooltip_height, _tooltip_width, _tooltip_height);
draw_text_ext_transformed_color(x + 40 + (_x_pos * 30), y + 65 + (_y_pos * 30) - _tooltip_height, _item_name, op_space, op_margin, .08, .08, 0, c_white, c_white, c_white, c_white, 1);
draw_text_ext_transformed_color(x + 40 + (_x_pos * 30), y + 65 + (_y_pos * 30) - _tooltip_height + 10, _item_desc, _tooltip_space, _tooltip_margin, .05, .05, 0, c_white, c_white, c_white, c_white, 1);
draw_text_ext_transformed_color(x + 40 + (_x_pos * 30), y + 65 + (_y_pos * 30) - _tooltip_height + 40, _equip, op_space, op_margin, .05, .05, 0, c_yellow, c_yellow, c_yellow, c_yellow, 1);
} else if (_x_pos >= 6 && _y_pos >= 2) {
_item_name = global.inventory[# _x_pos, _y_pos]._name;
_item_desc = global.inventory[# _x_pos, _y_pos]._description;
var _equip = "Press 'E' to equip item.";

draw_sprite_stretched(spr_menu_background, 1, x + 15 + (_x_pos * 30) - _tooltip_width, y + 58 + (_y_pos * 30) - _tooltip_height, _tooltip_width, _tooltip_height);
draw_text_ext_transformed_color(x + 22 + (_x_pos * 30) - _tooltip_width, y + 65 + (_y_pos * 30) - _tooltip_height, _item_name, op_space, op_margin, .08, .08, 0, c_white, c_white, c_white, c_white, 1);
draw_text_ext_transformed_color(x + 22 + (_x_pos * 30) - _tooltip_width, y + 65 + (_y_pos * 30) - _tooltip_height + 10, _item_desc, _tooltip_space, _tooltip_margin, .05, .05, 0, c_white, c_white, c_white, c_white, 1);
draw_text_ext_transformed_color(x + 22 + (_x_pos * 30) - _tooltip_width, y + 65 + (_y_pos * 30) - _tooltip_height + 40, _equip, op_space, op_margin, .05, .05, 0, c_yellow, c_yellow, c_yellow, c_yellow, 1);
}
}

if (_equipping) {
draw_sprite_stretched(spr_menu_background, 1, x + 120, y + 50, 80, 80);
for (_i = 0; _i < ds_list_size(global.party); _i++) {
if (_i = _pos) {
draw_set_color(c_yellow);
} else {
draw_set_color(c_white);
}
draw_text_ext_transformed(x + 127, y + 54 + (_i * 16), ds_list_find_value(global.party, _i)._name, 1000, 1000, .125, .125, 0);
}
}
}
69 changes: 64 additions & 5 deletions Turn-Based-RPG/objects/obj_inventory/Step_0.gml
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,18 @@ if (!_show_inventory) {
_y_pos = 0;
} else {
self.visible = true;
};
}

// move through inventory
var _up_key = keyboard_check_pressed(ord("W"));
var _down_key = keyboard_check_pressed(ord("S"));
var _left_key = keyboard_check_pressed(ord("A"));
var _right_key = keyboard_check_pressed(ord("D"));
var _accept_key = keyboard_check_pressed(ord("E"));
var _back_key = keyboard_check_pressed(vk_escape);

// navigating through inventory
if (_show_inventory) {
if (_show_inventory && _show_tooltip == false) {
_y_pos += _down_key - _up_key;
_x_pos += _right_key - _left_key;
if (_x_pos > _x_pos_max) {
Expand All @@ -29,10 +30,68 @@ if (_show_inventory) {
}
}

if (_show_tooltip) {
if (_show_tooltip == false && _accept_key && _pressed == false) {
show_debug_message("Testing 1");
_show_tooltip = true;
if (global.inventory[# _x_pos, _y_pos]._item_type == item_type.weapon ||
global.inventory[# _x_pos, _y_pos]._item_type == item_type.magic_weapon ||
global.inventory[# _x_pos, _y_pos]._item_type == item_type.prayer_book) {
_equippable = true;
} else {
_equippable = false;
}
} else if (_equippable && _accept_key && _equipping != true) {
show_debug_message("Testing 2");
_equipping = true;
} else if (_equipping) {
_pos += _down_key - _up_key;
if (_pos >= ds_list_size(global.party)) {
_pos = 0;
}
if (_pos < 0) {
_pos = ds_list_size(global.party) - 1;
}
show_debug_message("Testing 3");
if (_accept_key) {
global.inventory.equip_item(_x_pos, _y_pos);
var _member = ds_list_find_value(global.party, _pos);
var _member_equipment = noone;
if (global.inventory[# _x_pos, _y_pos]._item_type == item_type.weapon) {
_member_equipment = _member._weapon;
if (_member_equipment == noone) {
_member._weapon = global.inventory[# _x_pos, _y_pos];
} else if (_member_equipment != noone) {
_member._weapon = global.inventory[# _x_pos, _y_pos];
global.inventory.remove_item(global.inventory[# _x_pos, _y_pos]);
global.inventory.add_item(_member_equipment);
}
} else if (global.inventory[# _x_pos, _y_pos]._item_type == item_type.magic_weapon) {
_member_equipment = _member._magic_weapon;
if (_member_equipment == noone) {
_member._magic_weapon = global.inventory[# _x_pos, _y_pos];
} else if (_member_equipment != noone) {
_member._magic_weapon = global.inventory[# _x_pos, _y_pos];
global.inventory.remove_item(global.inventory[# _x_pos, _y_pos]);
global.inventory.add_item(_member_equipment);
}
} else if (global.inventory[# _x_pos, _y_pos]._item_type == item_type.prayer_book) {
_member_equipment = _member._prayer_book;
if (_member_equipment == noone) {
_member._prayer_book = global.inventory[# _x_pos, _y_pos];
} else if (_member_equipment != noone) {
_member._prayer_book = global.inventory[# _x_pos, _y_pos];
global.inventory.remove_item(global.inventory[# _x_pos, _y_pos]);
global.inventory.add_item(_member_equipment);
}
}
}
}

// TO-DO: highlight current selected inventory item for equipping
if (_show_tooltip && _back_key) {
_show_tooltip = false;
}

if (_equipping && _back_key) {
_equipping = false;
}

_pressed = false;
3 changes: 2 additions & 1 deletion Turn-Based-RPG/objects/obj_pause_menu/Create_0.gml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ draw_set_halign(fa_left);
draw_set_valign(fa_top);

_options = ["Pause","Inventory","Equip","Stats"]; // Standard inventory options
_pause_options = ["Save", "End game", "Party", "Access"]; // Save menu options
_pause_options = ["Save", "End game"]; // Save menu options
_op_length = array_length(_options); // Length of inventory options
_pause_length = array_length(_pause_options); // Length of pause menu options
_pressed = false; // Switches to true when Pause menu is selected so keystroke doesn't carry over to save menu
Expand All @@ -15,3 +15,4 @@ _show_pause = false; // Shows pause menu when set to true
_inventory = noone;
_equip = noone;
_stats = noone;
_inventory_disable = false;
23 changes: 12 additions & 11 deletions Turn-Based-RPG/objects/obj_pause_menu/Step_0.gml
Original file line number Diff line number Diff line change
Expand Up @@ -67,31 +67,32 @@ if (_show_pause) {
case 1:
game_end();
break;

case 2:
show_debug_message([ds_list_find_value(global.party,2)]);
break;

case 3:
room_goto(0);
break;
}
}
}

if (back_key && _menu_disable) {
_menu_disable = false;
_show_pause = false;
//show_debug_message("Inventory 1:" + string(_inventory) +":"+ string(_inventory._show_tooltip));
if (_inventory != noone) {
instance_destroy(_inventory);
if (_inventory._show_tooltip == false) {
instance_destroy(_inventory);
_inventory = noone;
_menu_disable = false;
}
}
if (_equip != noone) {
instance_destroy(_equip);
_equip = noone;
_menu_disable = false;
}
if (_stats != noone) {
instance_destroy(_stats);
_stats = noone;
_menu_disable = false;
}
} else if (back_key) {
//show_debug_message("Inventory 3:" + string(_inventory));
obj_player._disabled = false;
instance_destroy(self);
}
}
2 changes: 1 addition & 1 deletion Turn-Based-RPG/objects/obj_player/Step_0.gml
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ if (_disabled == false) {
}
}

if (keyboard_check(ord("M"))) {
if (keyboard_check(ord("P"))) {
CreatePauseMenu(self);
}
}
Expand Down
4 changes: 0 additions & 4 deletions Turn-Based-RPG/rooms/rm_world_map/rm_world_map.yy

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Turn-Based-RPG/scripts/Battle/Battle.gml
Original file line number Diff line number Diff line change
Expand Up @@ -76,7 +76,7 @@ function resolve_state_transition(state, p_turn, e_turn, party_units, enemy_unit
if(p_select == p_turn) {
state = turn.gameover;
show_debug_message("Enemy team is victorious. [BATTLE OVER]");
game_end();
room_goto(rm_end);
break;
}
}
Expand Down

0 comments on commit 08b5024

Please sign in to comment.