Advertisement
Guest User

Untitled

a guest
Jan 23rd, 2017
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 KB | None | 0 0
  1.  
  2. #define gb_max_numbers_default 1000
  3.  
  4. int gb_max_numbers;
  5. int gb_numbers_inst;
  6. char * gb_number_active;
  7. int * gb_number_value;
  8. int * gb_number_min;
  9. int * gb_number_max;
  10.  
  11. //// -- Internals
  12.  
  13. int _gb_CheckNumberBounds(int n) {
  14. if (gb_number_min[n] > gb_number_max[n]) {
  15. int u;
  16. u = gb_number_min[n];
  17. gb_number_min[n] = gb_number_max[n];
  18. gb_number_max[n] = u;
  19. }
  20. }
  21.  
  22. int _gb_CheckNumberValue(int n) {
  23. gb_number_value[n] = gb_ClampInt(gb_number_value[n],gb_number_min[n],gb_number_max[n]);
  24. }
  25.  
  26. //// -- Instancing
  27.  
  28. int gb_NewNumber(int v, int l, int h) {
  29. int u = gb_CharArrayFind(gb_number_active,gb_false,gb_numbers_inst,gb_max_numbers);
  30. if (u >= 0) {
  31. gb_numbers_inst = u;
  32. gb_number_active[u] = gb_true;
  33. gb_number_value[u] = v;
  34. gb_number_min[u] = l;
  35. gb_number_max[u] = h;
  36. _gb_CheckNumberBounds(u);
  37. _gb_CheckNumberValue(u);
  38. }
  39. else {
  40. gb_numbers_inst = 0;
  41. }
  42. return u;
  43. }
  44.  
  45. //// -- Manipulation
  46.  
  47. int gb_NumberActive(int n) {
  48. return gb_number_active[n];
  49. }
  50.  
  51. int gb_SetNumber(int n, int v) {
  52. if (gb_NumberActive(n)) {
  53. gb_number_value[n] = gb_ClampInt(gb_number_value[n],gb_number_min[n],gb_number_max[n]);
  54. }
  55. }
  56.  
  57. int gb_NumberValue(int n) {
  58. return gb_number_value[n];
  59. }
  60.  
  61. int gb_NumberMin(int n) {
  62. return gb_number_min[n];
  63. }
  64.  
  65. int gb_NumberMax(int n) {
  66. return gb_number_max[n];
  67. }
  68.  
  69. int gb_SetNumberBounds(int n, int l, int h) {
  70. if (gb_NumberActive(n)) {
  71. gb_number_min[n] = l;
  72. gb_number_max[n] = h;
  73. _gb_CheckNumberBounds(n);
  74. _gb_CheckNumberValue(n);
  75. }
  76. }
  77.  
  78. //// -- PreMod
  79.  
  80. int gb_SetMaxNumbers(int n) {
  81. if (gb_SizeLock() == gb_false) {
  82. gb_max_numbers = n;
  83. if (gb_max_numbers <= 0) {
  84. gb_max_numbers = gb_max_numbers_default;
  85. }
  86. }
  87. else {
  88. SDL_Log("Cannot set Max Numbers :: Size Lock");
  89. }
  90. }
  91.  
  92. //// -- Mod Constructor
  93.  
  94. int gb_BeginNumbers() {
  95. gb_number_active = gb_CharArray(gb_max_numbers,gb_false);
  96. gb_number_value = gb_IntArray(gb_max_numbers,0);
  97. gb_number_min = gb_IntArray(gb_max_numbers,0);
  98. gb_number_max = gb_IntArray(gb_max_numbers,-1);
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement