Advertisement
Sniperninja564

Inventory Project

Sep 26th, 2016
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. // obj_inventory ////////////////////////////////////////////////////////////////////
  2. /// Create the system (Create Event)
  3. enum item {
  4.     none = 0,
  5.     lemon = 1
  6. }
  7.  
  8. /// Initialize
  9. width = 6;
  10. height = 1;
  11. box_size = 48;
  12.  
  13. draw_set_font(fnt_inventory);
  14.  
  15. // Create the grid
  16. // Items
  17. box = ds_grid_create(width, height);
  18. ds_grid_clear(box, item.none);
  19.  
  20. // Item Cound
  21. count = ds_grid_create(width, height);
  22. ds_grid_clear(count, 0);
  23.  
  24. // Add/ Remove some items
  25. repeat(5) {
  26.     scr_inventory_pickup_item(item.lemon);
  27. }
  28.  
  29. scr_inventory_remove_item(0, 0);
  30.  
  31. /// Draw the inventory (Draw Event)
  32. for (var yy = 0; yy < width; yy++) {
  33.     for (var xx = 0; xx < height; xx++) {
  34.         var tx = x+(xx*box_size);
  35.         var ty = y+(yy*box_size);
  36.        
  37.         draw_sprite(spr_inventory, box[# xx, yy], tx, ty);
  38.         if (count[# xx, yy] > 0) {
  39.             draw_circle_color(tx, ty-2, 6, c_white, c_white, false);
  40.             draw_text(tx-1, ty-8, count[# xx, yy]);
  41.         }
  42.     }
  43. }
  44.  
  45. // Scripts ////////////////////////////////////////////////////////////////////////////////////////////////
  46. /// scr_inventory_add_item(x, y, item)
  47. var xx = argument[0];
  48. var yy = argument[1];
  49. var add_item = argument[2];
  50.  
  51. // Check if out of range
  52. if (xx != median(0, xx, obj_inventory.width-1) || yy != median(0, yy, obj_inventory.height-1)) {
  53.     show_debug_message("Not in range!")
  54.     exit;
  55. }
  56.  
  57. // Get the item count
  58. var item_count = obj_inventory.count[# xx, yy];
  59.  
  60. if (item_count == 0) {
  61.     obj_inventory.box[# xx, yy] = add_item;
  62.     obj_inventory.count[#xx, yy]++;
  63.    
  64.     return true;
  65. } else if (item_count > 0) {
  66.     if (obj_inventory.box[# xx, yy] == add_item) {
  67.         obj_inventory.count[#xx, yy]++;
  68.         return true
  69.     } else {
  70.         show_debug_message("Taken");
  71.         return false;
  72.     }
  73. } else {
  74.     show_error("The item cound is less then 0", false);
  75. }
  76.  
  77. /// inventory_remove_item(x, y);
  78. var xx = argument[0];
  79. var yy = argument[1];
  80.  
  81. // Check if out of range
  82. if (xx != median(0, xx, obj_inventory.width-1) || yy != median(0, yy, obj_inventory.height-1)) {
  83.     show_debug_message("Not in range!")
  84.     exit;
  85. }
  86.  
  87. // Get the item count
  88. var item_count = obj_inventory.count[# xx, yy];
  89.  
  90. // Make sure we have items
  91. if (item_count > 0) {
  92.     obj_inventory.count[# xx, yy]--;
  93.    
  94.     var remove_item = obj_inventory.box[# xx, yy];
  95.    
  96.     if (item_count == 0) {
  97.         obj_inventory.box[# xx, yy] = item.none;
  98.     }
  99.    
  100.     return remove_item;
  101. } else if (item_count == 0) {
  102.     show_debug_message("No Item");
  103.     return item.none;
  104. } else {
  105.     show_error("Taken", false);
  106. }
  107.  
  108. /// scr_inventory_pickup_item(item)
  109. var add_item = argument[0];
  110.  
  111. // Check for item
  112. for (var yy = 0; yy < obj_inventory.height; yy++) {
  113.     for (var xx = 0; xx < obj_inventory.width; xx++) {
  114.         if (obj_inventory.box[# xx, yy] == add_item) {
  115.             obj_inventory.count[# xx, yy]++;
  116.             return true;
  117.         }
  118.     }
  119. }
  120.  
  121. // Check for empty slot
  122. for (var yy = 0; yy < obj_inventory.height; yy++) {
  123.     for (var xx = 0; xx < obj_inventory.width; xx++) {
  124.         if (obj_inventory.box[# xx, yy] == item.none) {
  125.             obj_inventory.box[# xx, yy] = add_item;
  126.             obj_inventory.box[# xx, yy]++;
  127.             return true;
  128.         }
  129.     }
  130. }
  131.  
  132. // Show debug message
  133. show_debug_message("The inventory is full");
  134. return false;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement