Advertisement
LeonMMS

Untitled

Oct 16th, 2020
2,669
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 0.99 KB | None | 0 0
  1. module Kernel
  2.  
  3.   def enum(constant_names)
  4.     Module.new do |mod|
  5.       n = 0
  6.       constant_names.each_with_index do |const, i|
  7.         if constant_names[i + 1].to_i > 0
  8.           n = constant_names[i + 1].to_i
  9.           constant_names.delete_at(i + 1)
  10.         end
  11.         mod.const_set(const.to_s, n)
  12.         n += 1
  13.       end
  14.     end
  15.   end
  16.   def add_enum(enum_ref, constant_names)
  17.     n = enum_ref.constants.size
  18.     constant_names.each_with_index do |const, i|
  19.       if constant_names[i + 1].to_i > 0
  20.         n = constant_names[i + 1].to_i
  21.         constant_names.delete_at(i + 1)
  22.       end
  23.       enum_ref.const_set(const.to_s, n)
  24.       n += 1
  25.     end
  26.   end
  27. end
  28.  
  29. module Enums
  30.     Param = enum %w(
  31.         MAXHP
  32.         MAXMP
  33.         ATK
  34.         DEF
  35.         MAT
  36.         MDF
  37.         AGI
  38.         LUK
  39.   )
  40. end
  41. print Enums.constants
  42. puts
  43. print Enums.const_get(:Param).constants
  44. puts
  45. print Enums::Param::MAXHP
  46. puts
  47. module Enums
  48.   add_enum(Param, %w(PER
  49.   HRT
  50.   CON))
  51. end
  52. print Enums.const_get(:Param).constants
  53. puts
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement