View difference between Paste ID: CVWzyn1d and JgM9DSQ8
SHOW: | | - or go back to the newest paste.
1
#==============================================================================
2
# ** Window_CreateChar
3
#------------------------------------------------------------------------------
4
#  Esta classe lida com a janela de criação de personagem.
5
#------------------------------------------------------------------------------
6
#  Autor: Valentine
7
#==============================================================================
8
9
class Window_CreateChar < Window_Base2
10
  
11
  
12
  HAIRTYPES = [
13
  [279,280,281], #masculino
14
  [282,283,284] #feminino
15
  ]
16
  
17
  HAIRARMORIDS = [70,76,82]
18
  
19
  
20
  def initialize
21
    # Quando a resolução é alterada, as coordenadas x e y
22
    #são reajustadas no adjust_windows_position da Scene_Map
23
    super(adjust_x, adjust_y,'Wcreate') #401, 288
24
    self.visible = false
25
    @dragable =  false
26
    create_buttons
27
  end
28
  
29
  def adjust_x
30
    Graphics.width / 2 - 300
31
  end
32
  
33
  def adjust_y
34
    Graphics.height / 2 - 200
35
  end
36
  
37
  def max_classes
38
    $network.vip? ? Configs::MAX_VIP_CLASSES : Configs::MAX_DEFAULT_CLASSES
39
  end
40
  
41
  def class_names
42
    (1..max_classes).collect { |class_id| $data_classes[class_id].name }
43
 end
44
  
45
46
 
47
  def create_buttons
48
    @name_box = Text_Box.new(self, 245, 45, 115, Configs::MAX_CHARACTERS) { enable_create_button }
49
    #@class_box = Combo_Box.new(self, 265, 20, 120, class_names) { change_class } if max_classes > 1
50
    @next_sex = Image_Button.new(self, 572, 280, 'Right') { change_sex(Enums::Sex::FEMALE) }
51
    @prev_sex = Image_Button.new(self, 460, 280, 'Left') { change_sex(Enums::Sex::MALE) }
52
    @next_char = Image_Button.new(self, 572, 220, 'Right') { next_character }
53
    @prev_char = Image_Button.new(self, 460, 220, 'Left') { prev_character }
54
    @create_button = Image_Button.new(self, 250, 257, 'criar') { create_actor}
55
    #classes buttons========================================#
56
    @class1 = Image_Button.new(self, 29, 50,'cl1') {protetor}
57
    @class2 = Image_Button.new(self, 29, 120,'cl2') {guardiao}
58
    #==cabelos============================#
59
    #==============posição,ideo do icones#
60
    @hair0 =Icon.new(self, 100,100, 279) { change_hair_type(0) }#cada tipo de cabelo
61
    @hair1 =Icon.new(self, 150,100, 280) { change_hair_type(1) }
62
    @hair2 =Icon.new(self, 200,100, 281) { change_hair_type(2) }
63
    #cor dos cabelos 
64
    Icon.new(self, 200, 200, 252) { change_hair_color(0) }#black
65
    Icon.new(self, 250, 200, 253) { change_hair_color(1) }#brown
66
    Icon.new(self, 300, 200, 254) { change_hair_color(2) }#yellow
67
    Icon.new(self, 200, 250, 268) { change_hair_color(3) }#pink
68
    Icon.new(self, 250, 250, 269) { change_hair_color(4) }#blue
69
    Icon.new(self, 300, 250, 270) { change_hair_color(5) }#red
70
    #=======================================================#
71
    #@create_button = Button.new(self, 168, 254, Vocab::Create, 64) { create_actor }
72
    #@rem_hp = Button.new(self, 19, 147, '-', 26) { remove_param(0) }
73
    #@rem_mp = Button.new(self, 19, 171, '-', 26) { remove_param(1) }
74
    #@rem_atk = Button.new(self, 19, 195, '-', 26) { remove_param(2) }
75
    #@remo_agi = Button.new(self, 19, 219, '-', 26) { remove_param(3) }
76
    #@add_hp = Button.new(self, 166, 147, '+', 26) { add_param(0) }
77
    #@add_mp = Button.new(self, 166, 171, '+', 26) { add_param(1) }
78
    #@add_atk = Button.new(self, 166, 195, '+', 26) { add_param(2) }
79
    #@add_agi = Button.new(self, 166, 219, '+', 26) { add_param(3) }
80
    #@rem_def = Button.new(self, 211, 147, '-', 26) { remove_param(4) }
81
    #@remo_mat = Button.new(self, 211, 171, '-', 26) { remove_param(5) }
82
    #@rem_mdf = Button.new(self, 211, 195, '-', 26) { remove_param(6) }
83
    #@rem_luk = Button.new(self, 211, 219, '-', 26) { remove_param(7) }
84
    #@add_def = Button.new(self, 356, 147, '+', 26) { add_param(4) }
85
    #@add_mat = Button.new(self, 356, 171, '+', 26) { add_param(5) }
86
   # @add_mdf = Button.new(self, 356, 195, '+', 26) { add_param(6) }
87
   # @add_luk = Button.new(self, 356, 219, '+', 26) { add_param(7) }
88
    #@points_bar = Progress_Bar.new(self, 18, 121, 365, Configs::START_POINTS) if Configs::START_POINTS > 0
89
  end
90
  
91
  def show(actor_id)
92
    bg
93
    @actor_id = actor_id
94
    @sex = Enums::Sex::MALE
95
    @points = Configs::START_POINTS
96
    @class_id = 1
97
    @sprite_index = 0
98
    refresh_character
99
    @params = Array.new(8, 0)
100
    @name_box.clear
101
    @hair_type = 0 
102
    @hair_color = 0
103
	@classname = "wprotetor"
104
    refresh_hair
105
   create_buttons
106
  #@class_box.index = 0 if max_classes > 1
107
    super()
108
    # Ativa a caixa de texto após a janela ficar visível
109
    @name_box.active = true
110
    enable_buttons
111
  end
112
  
113
  def bg
114
    @bg1 = Sprite.new
115
    @bg1.bitmap = Cache.system("wprotetor")
116
    @bg1.x = Graphics.width / 2 
117
    @bg1.y = Graphics.height / 2 
118
 end
119
  
120
  def hide
121
    super
122
    $windows[:alert].hide
123
    $windows[:use_char].show
124
    @bg1.bitmap.dispose
125
    @bg1.dispose
126
  end
127
  
128
  def invalid_name?
129
    @name_box.text =~ /[^A-Za-z0-9 ]/
130
  end
131
  
132
  def illegal_name?
133
    Configs::FORBIDDEN_NAMES.any? { |word| @name_box.text =~ /#{word}/i }
134
  end
135
  
136
  def refresh
137-
    bitmap = Cache.system("wprotetor")
137+
138
    bitmap = Cache.system(@classname)
139
    contents.blt(0,0, bitmap, bitmap.rect)
140
    draw_shadow(274, 80)
141
    draw_character(@character_name, @character_index, 290, 135)
142
    draw_paperdoll(@hair_name , @hair_index, @sex, 290, 135)
143
    change_color(normal_color)
144
    #draw_text(4, 8, 45, line_height, "#{Vocab::Name}:")
145
    #draw_text(196, 8, 60, line_height, Vocab::Class)
146
    draw_text(260, 8, 150, line_height, $data_classes[@class_id].name) if max_classes == 1
147
    #draw_text(4, 35, 45, line_height, Vocab::Sex)
148
    draw_text(490, 255, 55, line_height, @sex == Enums::Sex::MALE ? Vocab::Male : Vocab::Female, 1)
149
    #draw_text(4, 62, 70, line_height, Vocab::Graphic)
150
    #draw_text(119, 130, 25, line_height, @params[0] * 10 + $data_classes[@class_id].params[0, 1], 2)
151
    #draw_text(119, 161, 25, line_height, @params[1] * 10 + $data_classes[@class_id].params[1, 1], 2)
152
    word_wrap($data_actors[@class_id].description.delete("\n"), 210).each_with_index do |text, i|
153
      draw_text(190, line_height * i +280, contents_width, line_height, text)
154
    end
155
    #(2...8).each do |param_id|
156
     # draw_text(param_id / 4 * 189 + 119, param_id % 4 * 24 + 137, 25, line_height, $data_classes[@class_id].params[param_id, 1] + @params[param_id], 2)
157
    #end
158
    #change_color(system_color)
159
    #(0...8).each do |param_id|
160
      # Largura suficiente para os termos não abreviados
161
     # draw_text(param_id / 4 * 193 + 47, param_id % 4 * 24 + 137, 100, line_height, "#{Vocab::param(param_id)}:")
162
    #end
163
    if @points_bar
164
      @points_bar.index = @points
165
      @points_bar.text = "#{@points}/#{Configs::START_POINTS}"
166
    end
167
    @next_char.visible = @prev_char.visible = $data_classes[@class_id].graphics[@sex].size > 1
168
  end
169
  
170
  def refresh_character
171
    @character_name = $data_classes[@class_id].graphics[@sex][@sprite_index][0]
172
    @character_index = $data_classes[@class_id].graphics[@sex][@sprite_index][1]
173
  end
174
  
175
  def create_actor
176
    #return unless @create_button.enable
177
    if illegal_name? && $network.standard_group?
178
      $windows[:alert].show(Vocab::InvalidName)
179
    elsif invalid_name?
180
      $windows[:alert].show(Vocab::ForbiddenCharacter)
181
    else
182
     $network.send_create_actor(@actor_id, @name_box.text, @sprite_index, @class_id, @sex, @params, @hair_type, @hair_color)
183
    end
184
  end
185
  
186
  def change_sex(sex)
187
    @sex = sex
188
    @sprite_index = 0
189
    refresh_character
190
    refresh
191
  end
192
  
193
  def change_class
194
    @class_id = @class_box.index + 1
195
    @sprite_index = 0
196
    refresh_character
197
    refresh
198
  end
199
  
200
 def next_character
201
    @sprite_index = @sprite_index < $data_classes[@class_id].graphics[@sex].size - 1 ? @sprite_index + 1 : 0
202
    refresh_character
203
    refresh
204
  end
205
  
206
  def prev_character
207
    @sprite_index = @sprite_index > 0 ? @sprite_index - 1 : @sprite_index = $data_classes[@class_id].graphics[@sex].size - 1
208
    refresh_character
209
    refresh
210
  end
211
  
212
  
213
  #def add_param(param_id)
214
  #  @points -= 1
215
   # @params[param_id] += 1
216
  #  refresh
217
  #  enable_buttons
218
 # end
219
  
220
 # def remove_param(param_id)
221
  #  @points += 1
222
   # @params[param_id] -= 1
223
   # refresh
224
  #  enable_buttons
225
 # end
226
  
227
  def enable_buttons
228
#    @create_button.enable = enable
229
    #@rem_hp.enable = @params[0] > 0
230
    #@rem_mp.enable = @params[1] > 0
231
    #@rem_atk.enable = @params[2] > 0
232
    #@remo_agi.enable = @params[3] > 0
233
    #@rem_def.enable = @params[4] > 0
234
    #@remo_mat.enable = @params[5] > 0
235
    #@rem_mdf.enable = @params[6] > 0
236
   # @rem_luk.enable = @params[7] > 0
237
    #enable = @points > 0
238
    #@add_hp.enable = enable
239
   # @add_mp.enable = enable
240
   # @add_atk.enable = enable
241
   # @add_agi.enable = enable
242
    #@add_def.enable = enable
243
   # @add_mat.enable = enable
244
    #@add_mdf.enable = enable
245
    #@add_luk.enable = enable
246
  end
247
  
248
  def enable_create_button
249
    @create_button.enable = @name_box.text.strip.size >= Configs::MIN_CHARACTERS
250
  end
251
  
252
  def update
253
    super
254
    close_windows
255
    ok if Input.trigger?(:C)
256
  end
257
  
258
  def close_windows
259
    return unless Input.trigger?(:B)
260
    if $windows[:alert].visible || $windows[:config].visible
261
      $windows[:alert].hide
262
      $windows[:config].hide
263
    else
264
      hide
265
    end
266
  end
267
  
268
  def ok
269
    $windows[:alert].visible ? $windows[:alert].hide : create_actor
270
  end
271
272
#========def buttons classe==========#
273
274-
    bitmap = Cache.system("wprotetor")
274+
275
    @classname = "wprotetor"
276
    #@sprite_index = 0
277
    @class_id = 1
278
    refresh_character
279
    refresh
280
  end
281
282-
  bitmap = Cache.system("wguardiao")
282+
283
  @classname = "wguardiao"
284
   # @sprite_index = 0
285
    @class_id = 2
286
    refresh_character
287
    refresh
288
  end
289
  
290
#=======================================#
291
  def change_hair_type(id)
292
    @hair_type = id
293
    refresh_hair
294
    refresh
295
    
296
297
  end
298
  
299
  def change_hair_color(id)
300
    @hair_color = id
301
    refresh_hair
302
    refresh
303
  end
304
  
305
  def refresh_hair
306
    @hair_name = $data_armors[ (HAIRARMORIDS[@hair_type] + @hair_color)].paperdoll_name
307
    @hair_index = $data_armors[ (HAIRARMORIDS[@hair_type] + @hair_color)].paperdoll_index
308
  end
309
  
310
  
311
 #====================================================# 
312
end
313