Advertisement
Ulabael

oWeaponsManager

Aug 21st, 2022 (edited)
1,104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function scrWeaponsAdd(_sprite_index, _images, _name, _distance, _penetration, _damage) constructor{
  2.     sprite_index = _sprite_index;
  3.     images = _images;
  4.     name = _name;
  5.     distance = _distance;
  6.     penetration = _penetration;
  7.     damage = _damage;
  8. }
  9.  
  10. #region Создаём список вооружения.
  11. // Если файл уже существует - заполняем по новой.
  12. if file_exists("weapons.txt") {
  13.     global.weapons = [];
  14.     var _buffer = buffer_load("weapons.txt");
  15.     var _string = buffer_read(_buffer, buffer_string);
  16.     buffer_delete(_buffer);
  17.     var _loadData = json_parse(_string);
  18.    
  19.     // Загружаем оружие.
  20.     for (var i = 0; i < array_length(_loadData); ++i) {
  21.         // Если информация всё равно является строкой или такого спрайта не существует - создаём его и сохраняем
  22.         if is_string(_loadData[i].sprite_index) or !sprite_exists(_loadData[i].sprite_index) {
  23.             var name = _loadData[i].sprite_index;
  24.             if file_exists(name) {
  25.                 var sprite = sprite_add(name, _loadData[i].images, false, false, 0, 0);            
  26.                 sprite_set_offset(sprite, sprite_get_width(sprite) / 2, sprite_get_height(sprite) / 2);
  27.                 _loadData[i].sprite_index = sprite;
  28.             }
  29.         }
  30.         array_push(global.weapons, _loadData[i]);
  31.     }
  32. }
  33. // Создаём с нуля, если не существует
  34. else {
  35.     global.weapons = [
  36.     new scrWeaponsAdd(sPistol, 1, "Пистолет", 10, 1, 10),
  37.     ]
  38.     var _string = json_stringify(global.weapons);
  39.     var _buffer = buffer_create(string_byte_length(_string) + 1, buffer_fixed, 1);
  40.  
  41.     buffer_write(_buffer, buffer_string, _string);
  42.     buffer_save(_buffer, "weapons.txt");
  43.     buffer_delete(_buffer);
  44. }
  45. #endregion
  46.  
  47. #region Удаляем те объекты, что не смогли загрузиться
  48. var i = 0;
  49. while i != array_length(global.weapons) {
  50.     if is_string(global.weapons[i].sprite_index) {
  51.         array_delete(global.weapons, i, 1);
  52.         i -= 1;
  53.     }
  54.     i += 1;
  55. }
  56. #endregion
  57.  
  58. #region Создаём прошедшие проверку объекты. Дебаг.
  59. for (var i = 0; i < array_length(global.weapons); ++i) {
  60.     var inst = instance_create_layer(32 + i * 32, 32, "Instances", oWeapon);
  61.     inst.sprite_index = global.weapons[i].sprite_index;
  62. }
  63. #endregion
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement