Project1

标题: 颜色扩展 [打印本页]

作者: taroxd    时间: 2014-11-22 17:59
标题: 颜色扩展
本帖最后由 taroxd 于 2014-11-22 18:08 编辑

RUBY 代码复制
  1. #----------------------------------------------------------------------------
  2. # ● 颜色扩展
  3. #----------------------------------------------------------------------------
  4. #
  5. #  扩展了 \C 控制符的功能。大小写不敏感。
  6. #  可用的颜色名称可以在下面长长的列表中找到,当然也可以自定义。
  7. #  自定义时,注意使用小写字母。
  8. #
  9. #  使用范例:
  10. #    \C[1]这是普通的蓝色,\C[Blue]这也是。
  11. #    \C[66CCFF]这是洛天依的蓝色,\C[6CF]这也是。
  12. #    \C[66CCFF7F]这是有半透明效果的洛天依的蓝色。
  13. #
  14. #----------------------------------------------------------------------------
  15. #
  16. #  Taroxd::ColorExt 模块
  17. #
  18. #    常量:Taroxd::ColorExt::Colors
  19. #      哈希表,键为小写字母的 symbol,值为对应的颜色。
  20. #      :"66ccff" 这样的键也是可以接受的。
  21. #      :"1" 到 :"31" 之间的符号返回窗口皮肤中的颜色。
  22. #      找不到值时,返回 Color.new
  23. #
  24. #    模块方法:hex_code(code)
  25. #      接受一个字符串为参数,返回对应的颜色。
  26. #      code 可以是 "66ccff" 这样的
  27. #
  28. #    模块方法:text_color,normal_color 等等
  29. #      与 Window_Base 的对应方法相同。
  30. #      可以让 Sprite 类包含这个模块,使这些方法在 Sprite 类中也可用。
  31. #
  32. #----------------------------------------------------------------------------
  33.  
  34. module Taroxd end
  35.  
  36. module Taroxd::ColorExt
  37.   COLORS = {
  38.     aliceblue:            Color.new(240, 248, 255),
  39.     antiquewhite:         Color.new(250, 235, 215),
  40.     aqua:                 Color.new(0, 255, 255),
  41.     aquamarine:           Color.new(127, 255, 212),
  42.     azure:                Color.new(240, 255, 255),
  43.     beige:                Color.new(245, 245, 220),
  44.     bisque:               Color.new(255, 228, 196),
  45.     black:                Color.new(0, 0, 0),
  46.     blanchedalmond:       Color.new(255, 235, 205),
  47.     blue:                 Color.new(0, 0, 255),
  48.     blueviolet:           Color.new(138, 43, 226),
  49.     brown:                Color.new(165, 42, 42),
  50.     burlywood:            Color.new(222, 184, 135),
  51.     cadetblue:            Color.new(95, 158, 160),
  52.     chartreuse:           Color.new(127, 255, 0),
  53.     chocolate:            Color.new(210, 105, 30),
  54.     coral:                Color.new(255, 127, 80),
  55.     cornflowerblue:       Color.new(100, 149, 237),
  56.     cornsilk:             Color.new(255, 248, 220),
  57.     crimson:              Color.new(220, 20, 60),
  58.     cyan:                 Color.new(0, 255, 255),
  59.     darkblue:             Color.new(0, 0, 139),
  60.     darkcyan:             Color.new(0, 139, 139),
  61.     darkgoldenrod:        Color.new(184, 134, 11),
  62.     darkgray:             Color.new(169, 169, 169),
  63.     darkgreen:            Color.new(0, 100, 0),
  64.     darkkhaki:            Color.new(189, 183, 107),
  65.     darkmagenta:          Color.new(139, 0, 139),
  66.     darkolivegreen:       Color.new(85, 107, 47),
  67.     darkorange:           Color.new(255, 140, 0),
  68.     darkorchid:           Color.new(153, 50, 204),
  69.     darkred:              Color.new(139, 0, 0),
  70.     darksalmon:           Color.new(233, 150, 122),
  71.     darkseagreen:         Color.new(143, 188, 143),
  72.     darkslateblue:        Color.new(72, 61, 139),
  73.     darkslategray:        Color.new(47, 79, 79),
  74.     darkturquoise:        Color.new(0, 206, 209),
  75.     darkviolet:           Color.new(148, 0, 211),
  76.     deeppink:             Color.new(255, 20, 147),
  77.     deepskyblue:          Color.new(0, 191, 255),
  78.     dimgray:              Color.new(105, 105, 105),
  79.     dodgerblue:           Color.new(30, 144, 255),
  80.     firebrick:            Color.new(178, 34, 34),
  81.     floralwhite:          Color.new(255, 250, 240),
  82.     forestgreen:          Color.new(34, 139, 34),
  83.     fuchsia:              Color.new(255, 0, 255),
  84.     gainsboro:            Color.new(220, 220, 220),
  85.     ghostwhite:           Color.new(248, 248, 255),
  86.     gold:                 Color.new(255, 215, 0),
  87.     goldenrod:            Color.new(218, 165, 32),
  88.     gray:                 Color.new(128, 128, 128),
  89.     green:                Color.new(0, 128, 0),
  90.     greenyellow:          Color.new(173, 255, 47),
  91.     honeydew:             Color.new(240, 255, 240),
  92.     hotpink:              Color.new(255, 105, 180),
  93.     indianred:            Color.new(205, 92, 92),
  94.     indigo:               Color.new(75, 0, 130),
  95.     ivory:                Color.new(255, 255, 240),
  96.     khaki:                Color.new(240, 230, 140),
  97.     lavender:             Color.new(230, 230, 250),
  98.     lavenderblush:        Color.new(255, 240, 245),
  99.     lawngreen:            Color.new(124, 252, 0),
  100.     lemonchiffon:         Color.new(255, 250, 205),
  101.     lightblue:            Color.new(173, 216, 230),
  102.     lightcoral:           Color.new(240, 128, 128),
  103.     lightcyan:            Color.new(224, 255, 255),
  104.     lightgoldenrodyellow: Color.new(250, 250, 210),
  105.     lightgreen:           Color.new(144, 238, 144),
  106.     lightgrey:            Color.new(211, 211, 211),
  107.     lightpink:            Color.new(255, 182, 193),
  108.     lightsalmon:          Color.new(255, 160, 122),
  109.     lightseagreen:        Color.new(32, 178, 170),
  110.     lightskyblue:         Color.new(135, 206, 250),
  111.     lightslategray:       Color.new(119, 136, 153),
  112.     lightsteelblue:       Color.new(176, 196, 222),
  113.     lightyellow:          Color.new(255, 255, 224),
  114.     lime:                 Color.new(0, 255, 0),
  115.     limegreen:            Color.new(50, 205, 50),
  116.     linen:                Color.new(250, 240, 230),
  117.     magenta:              Color.new(255, 0, 255),
  118.     maroon:               Color.new(128, 0, 0),
  119.     mediumaquamarine:     Color.new(102, 205, 170),
  120.     mediumblue:           Color.new(0, 0, 205),
  121.     mediumorchid:         Color.new(186, 85, 211),
  122.     mediumpurple:         Color.new(147, 112, 219),
  123.     mediumseagreen:       Color.new(60, 179, 113),
  124.     mediumslateblue:      Color.new(123, 104, 238),
  125.     mediumspringgreen:    Color.new(0, 250, 154),
  126.     mediumturquoise:      Color.new(72, 209, 204),
  127.     mediumvioletred:      Color.new(199, 21, 133),
  128.     midnightblue:         Color.new(25, 25, 112),
  129.     mintcream:            Color.new(245, 255, 250),
  130.     mistyrose:            Color.new(255, 228, 225),
  131.     moccasin:             Color.new(255, 228, 181),
  132.     navajowhite:          Color.new(255, 222, 173),
  133.     navy:                 Color.new(0, 0, 128),
  134.     oldlace:              Color.new(253, 245, 230),
  135.     olive:                Color.new(128, 128, 0),
  136.     olivedrab:            Color.new(107, 142, 35),
  137.     orange:               Color.new(255, 165, 0),
  138.     orangered:            Color.new(255, 69, 0),
  139.     orchid:               Color.new(218, 112, 214),
  140.     palegoldenrod:        Color.new(238, 232, 170),
  141.     palegreen:            Color.new(152, 251, 152),
  142.     paleturquoise:        Color.new(175, 238, 238),
  143.     palevioletred:        Color.new(219, 112, 147),
  144.     papayawhip:           Color.new(255, 239, 213),
  145.     peachpuff:            Color.new(255, 218, 185),
  146.     peru:                 Color.new(205, 133, 63),
  147.     pink:                 Color.new(255, 192, 203),
  148.     plum:                 Color.new(221, 160, 221),
  149.     powderblue:           Color.new(176, 224, 230),
  150.     purple:               Color.new(128, 0, 128),
  151.     red:                  Color.new(255, 0, 0),
  152.     rosybrown:            Color.new(188, 143, 143),
  153.     royalblue:            Color.new(65, 105, 225),
  154.     saddlebrown:          Color.new(139, 69, 19),
  155.     salmon:               Color.new(250, 128, 114),
  156.     sandybrown:           Color.new(244, 164, 96),
  157.     seagreen:             Color.new(46, 139, 87),
  158.     seashell:             Color.new(255, 245, 238),
  159.     sienna:               Color.new(160, 82, 45),
  160.     silver:               Color.new(192, 192, 192),
  161.     skyblue:              Color.new(135, 206, 235),
  162.     slateblue:            Color.new(106, 90, 205),
  163.     slategray:            Color.new(112, 128, 144),
  164.     snow:                 Color.new(255, 250, 250),
  165.     springgreen:          Color.new(0, 255, 127),
  166.     steelblue:            Color.new(70, 130, 180),
  167.     tan:                  Color.new(210, 180, 140),
  168.     teal:                 Color.new(0, 128, 128),
  169.     thistle:              Color.new(216, 191, 216),
  170.     tomato:               Color.new(255, 99, 71),
  171.     turquoise:            Color.new(64, 224, 208),
  172.     violet:               Color.new(238, 130, 238),
  173.     wheat:                Color.new(245, 222, 179),
  174.     white:                Color.new(255, 255, 255),
  175.     whitesmoke:           Color.new(245, 245, 245),
  176.     yellow:               Color.new(255, 255, 0),
  177.     yellowgreen:          Color.new(154, 205, 50),
  178.   }
  179.   COLORS.default_proc = -> h, k { h[k] = hex_code(k.to_s) || Color.new }
  180.   module_function
  181.   #--------------------------------------------------------------------------
  182.   # ● 用颜色代码获取颜色
  183.   #--------------------------------------------------------------------------
  184.   def hex_code(code)
  185.     case code.size
  186.     when 3, 4
  187.       Color.new(*code.each_char.map {|c| c.hex * 0x11 })
  188.     when 6, 8
  189.       Color.new(*code.scan(/../).map(&:hex))
  190.     end
  191.   end
  192.   #--------------------------------------------------------------------------
  193.   # ● 获取窗口皮肤
  194.   #--------------------------------------------------------------------------
  195.   def windowskin
  196.     Cache.system("Window")
  197.   end
  198.   #--------------------------------------------------------------------------
  199.   # ● 获取文字颜色
  200.   #     n : 文字颜色编号(0..31)
  201.   #--------------------------------------------------------------------------
  202.   def text_color(n)
  203.     windowskin.get_pixel(64 + (n % 8) * 8, 96 + (n / 8) * 8)
  204.   end
  205.   #--------------------------------------------------------------------------
  206.   # ● 获取各种文字颜色
  207.   #--------------------------------------------------------------------------
  208.   def normal_color;      text_color(0);   end;
  209.   def system_color;      text_color(16);  end;
  210.   def crisis_color;      text_color(17);  end;
  211.   def knockout_color;    text_color(18);  end;
  212.   def gauge_back_color;  text_color(19);  end;
  213.   def hp_gauge_color1;   text_color(20);  end;
  214.   def hp_gauge_color2;   text_color(21);  end;
  215.   def mp_gauge_color1;   text_color(22);  end;
  216.   def mp_gauge_color2;   text_color(23);  end;
  217.   def mp_cost_color;     text_color(23);  end;
  218.   def power_up_color;    text_color(24);  end;
  219.   def power_down_color;  text_color(25);  end;
  220.   def tp_gauge_color1;   text_color(28);  end;
  221.   def tp_gauge_color2;   text_color(29);  end;
  222.   def tp_cost_color;     text_color(29);  end;
  223.   32.times {|i| COLORS[:"#{i}"] = text_color(i) }
  224. end
  225.  
  226. class Window_Base
  227.   #--------------------------------------------------------------------------
  228.   # ● 控制符的处理
  229.   #--------------------------------------------------------------------------
  230.   alias color_ext_process_escape_character process_escape_character
  231.   def process_escape_character(code, text, pos)
  232.     if code.casecmp('C').zero?
  233.       sym = text.slice!(/^\[\w+]/i)[1..-2].downcase.to_sym
  234.       change_color Taroxd::ColorExt::COLORS[sym]
  235.     else
  236.       color_ext_process_escape_character(code, text, pos)
  237.     end
  238.   end
  239. end





欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1