View difference between Paste ID: W9Q8AZGa and Au936aD5
SHOW: | | - or go back to the newest paste.
1
CHARACTER_FACING_INCREMENT = 2;
2
MAX_RACES = 18;
3
MAX_CLASSES_PER_RACE = 10; --Editar a 12 cuando se incluyan las DBC
4
NUM_CHAR_CUSTOMIZATIONS = 5;
5
MIN_CHAR_NAME_LENGTH = 2;
6
CHARACTER_CREATE_ROTATION_START_X = nil;
7
CHARACTER_CREATE_INITIAL_FACING = nil;
8
9
PAID_CHARACTER_CUSTOMIZATION = 1;
10
PAID_RACE_CHANGE = 2;
11
PAID_FACTION_CHANGE = 3;
12
PAID_SERVICE_CHARACTER_ID = nil;
13
PAID_SERVICE_TYPE = nil;
14
15
FACTION_BACKDROP_COLOR_TABLE = {
16
	["Alliance"] = {0.5, 0.5, 0.5, 0.09, 0.09, 0.19},
17
	["Horde"] = {0.5, 0.2, 0.2, 0.19, 0.05, 0.05},
18
};
19
FRAMES_TO_BACKDROP_COLOR = { 
20
	"CharacterCreateCharacterRace",
21
	"CharacterCreateCharacterClass",
22
--	"CharacterCreateCharacterFaction",
23
	"CharacterCreateNameEdit",
24
};
25
RACE_ICON_TCOORDS = {
26
	["HUMAN_MALE"]		= {0, 0.125, 0, 0.25},
27
	["DWARF_MALE"]		= {0.125, 0.25, 0, 0.25},
28
	["GNOME_MALE"]		= {0.25, 0.375, 0, 0.25},
29
	["NIGHTELF_MALE"]	= {0.375, 0.5, 0, 0.25},
30
	
31
	["TAUREN_MALE"]		= {0, 0.125, 0.25, 0.5},
32
	["SCOURGE_MALE"]	= {0.125, 0.25, 0.25, 0.5},
33
	["TROLL_MALE"]		= {0.25, 0.375, 0.25, 0.5},
34
	["ORC_MALE"]		= {0.375, 0.5, 0.25, 0.5},
35
36
	["HUMAN_FEMALE"]	= {0, 0.125, 0.5, 0.75},  
37
	["DWARF_FEMALE"]	= {0.125, 0.25, 0.5, 0.75},
38
	["GNOME_FEMALE"]	= {0.25, 0.375, 0.5, 0.75},
39
	["NIGHTELF_FEMALE"]	= {0.375, 0.5, 0.5, 0.75},
40
	
41
	["TAUREN_FEMALE"]	= {0, 0.125, 0.75, 1.0},   
42
	["SCOURGE_FEMALE"]	= {0.125, 0.25, 0.75, 1.0}, 
43
	["TROLL_FEMALE"]	= {0.25, 0.375, 0.75, 1.0}, 
44
	["ORC_FEMALE"]		= {0.375, 0.5, 0.75, 1.0}, 
45
46
	["BLOODELF_MALE"]	= {0.5, 0.625, 0.25, 0.5},
47
	["BLOODELF_FEMALE"]	= {0.5, 0.625, 0.75, 1.0}, 
48
49
	["DRAENEI_MALE"]	= {0.5, 0.625, 0, 0.25},
50
	["DRAENEI_FEMALE"]	= {0.5, 0.625, 0.5, 0.75}, 
51
52
	["GOBLIN_MALE"]		= {0.625, 0.75, 0.25, 0.5},
53
	["GOBLIN_FEMALE"]	= {0.625, 0.75, 0.75, 1.0},
54
55
	["VRYKUL_MALE"]		= {0.75, 0.875, 0.5, 0.75},
56
	["VRYKUL_FEMALE"]	= {0.875, 1.00, 0.75, 1.0},
57
58
	["FELORC_MALE"]		= {0.875, 1.00, 0.5, 0.75},
59
	["FELORC_FEMALE"]	= {0.875, 1.00, 0.5, 0.75},
60
61
	["FORESTTROLL_MALE"]	= {0.75, 0.875, 0.75, 1.0},
62
	["FORESTTROLL_FEMALE"]	= {0.25, 0.375, 0.75, 1.0}, 
63
64
	["HIGHELF_MALE"]	= {0.75, 0.875, 0, 0.25},
65
	["HIGHELF_FEMALE"]	= {0.875, 1.00, 0.25, 0.5},
66
67
	["NAGA__MALE"]		= {0.625, 0.75, 0, 0.25},
68
	["NAGA__FEMALE"]	= {0.625, 0.75, 0.5, 0.75},
69
70
	["BROKEN_MALE"]	        = {0.75, 0.875, 0.25, 0.5},
71
	["BROKEN_FEMALE"]	= {0.75, 0.875, 0.25, 0.5},
72
73
	["TUSKARR_MALE"]	= {0.875, 1.00, 0, 0.25},
74
	["TUSKARR_FEMALE"]	= {0.875, 1.00, 0, 0.25},
75
76
77
};
78
CLASS_ICON_TCOORDS = {
79
	["WARRIOR"]	= {0, 0.25, 0, 0.25},
80
	["MAGE"]	= {0.25, 0.49609375, 0, 0.25},
81
	["ROGUE"]	= {0.49609375, 0.7421875, 0, 0.25},
82
	["DRUID"]	= {0.7421875, 0.98828125, 0, 0.25},
83
	["HUNTER"]	= {0, 0.25, 0.25, 0.5},
84
	["SHAMAN"]	= {0.25, 0.49609375, 0.25, 0.5},
85
	["PRIEST"]	= {0.49609375, 0.7421875, 0.25, 0.5},
86
	["WARLOCK"]	= {0.7421875, 0.98828125, 0.25, 0.5},
87
	["PALADIN"]	= {0, 0.25, 0.5, 0.75},
88
	["DEATHKNIGHT"]	= {0.25, 0.49609375, 0.5, 0.75},
89
90
};
91
92
function CharacterCreate_OnLoad(self)
93
	self:SetSequence(0);
94
	self:SetCamera(0);
95
96
	CharacterCreate.numRaces = 0;
97
	CharacterCreate.selectedRace = 0;
98
	CharacterCreate.numClasses = 0;
99
	CharacterCreate.selectedClass = 0;
100
	CharacterCreate.selectedGender = 0;
101
102
	SetCharCustomizeFrame("CharacterCreate");
103
104
	for i=1, NUM_CHAR_CUSTOMIZATIONS, 1 do
105
		_G["CharacterCustomizationButtonFrame"..i.."Text"]:SetText(_G["CHAR_CUSTOMIZATION"..i.."_DESC"]);
106
	end
107
108
	-- Color edit box backdrop
109
	local backdropColor = FACTION_BACKDROP_COLOR_TABLE["Alliance"];
110
	CharacterCreateNameEdit:SetBackdropBorderColor(backdropColor[1], backdropColor[2], backdropColor[3]);
111
	CharacterCreateNameEdit:SetBackdropColor(backdropColor[4], backdropColor[5], backdropColor[6]);
112
end
113
114
function CharacterCreate_OnShow()
115
	for i=1, MAX_CLASSES_PER_RACE, 1 do
116
		local button = _G["CharacterCreateClassButton"..i];
117
		button:Enable();
118
		SetButtonDesaturated(button, false)
119
	end
120
	for i=1, MAX_RACES, 1 do
121
		local button = _G["CharacterCreateRaceButton"..i];
122
		button:Enable();
123
		SetButtonDesaturated(button, false)
124
	end
125
126
	if ( PAID_SERVICE_TYPE ) then
127
		CustomizeExistingCharacter( PAID_SERVICE_CHARACTER_ID );
128
		CharacterCreateNameEdit:SetText( PaidChange_GetName() );
129
	else
130
		--randomly selects a combination
131
		ResetCharCustomize();
132
		CharacterCreateNameEdit:SetText("");
133
		CharCreateRandomizeButton:Show();
134
	end
135
136
	CharacterCreateEnumerateRaces(GetAvailableRaces());
137
	SetCharacterRace(GetSelectedRace());
138
	
139
	CharacterCreateEnumerateClasses(GetAvailableClasses());
140
	local_,_,index = GetSelectedClass();
141
	SetCharacterClass(index);
142
143
	SetCharacterGender(GetSelectedSex())
144
	
145
	-- Hair customization stuff
146
	CharacterCreate_UpdateHairCustomization();
147
148
	SetCharacterCreateFacing(-15);
149
	
150
	if ( ALLOW_RANDOM_NAME_BUTTON ) then
151
		CharacterCreateRandomName:Show();
152
	end
153
	
154
	-- setup customization
155
	CharacterChangeFixup();
156
end
157
158
function CharacterCreate_OnHide()
159
	PAID_SERVICE_CHARACTER_ID = nil;
160
	PAID_SERVICE_TYPE = nil;
161
end
162
163
function CharacterCreateFrame_OnMouseDown(button)
164
	if ( button == "LeftButton" ) then
165
		CHARACTER_CREATE_ROTATION_START_X = GetCursorPosition();
166
		CHARACTER_CREATE_INITIAL_FACING = GetCharacterCreateFacing();
167
	end
168
end
169
170
function CharacterCreateFrame_OnMouseUp(button)
171
	if ( button == "LeftButton" ) then
172
		CHARACTER_CREATE_ROTATION_START_X = nil
173
	end
174
end
175
176
function CharacterCreateFrame_OnUpdate()
177
	if ( CHARACTER_CREATE_ROTATION_START_X ) then
178
		local x = GetCursorPosition();
179
		local diff = (x - CHARACTER_CREATE_ROTATION_START_X) * CHARACTER_ROTATION_CONSTANT;
180
		CHARACTER_CREATE_ROTATION_START_X = GetCursorPosition();
181
		SetCharacterCreateFacing(GetCharacterCreateFacing() + diff);
182
	end
183
end
184
185
function CharacterCreateEnumerateRaces(...)
186
	CharacterCreate.numRaces = select("#", ...)/3;
187
	if ( CharacterCreate.numRaces > MAX_RACES ) then
188
		message("Too many races!  Update MAX_RACES");
189
		return;
190
	end
191
	local coords;
192
	local index = 1;
193
	local button;
194
	local gender;
195
	local selectedSex = GetSelectedSex();
196
	if ( selectedSex == SEX_MALE ) then
197
		gender = "MALE";
198
	elseif ( selectedSex == SEX_FEMALE ) then
199
		gender = "FEMALE";
200
	end
201
	for i=1, select("#", ...), 3 do
202
		coords = RACE_ICON_TCOORDS[strupper(select(i+1, ...).."_"..gender)];
203
GlueDialog_Show("ACCOUNT_MSG", "Selected : "..i+1.." Gender: "..gender);
204
GlueDialog_Show("ACCOUNT_MSG", "Selected : "..strupper(select(i+1, ...).."_"..gender));
205
		_G["CharacterCreateRaceButton"..index.."NormalTexture"]:SetTexCoord(coords[1], coords[2], coords[3], coords[4]);
206
		_G["CharacterCreateRaceButton"..index.."PushedTexture"]:SetTexCoord(coords[1], coords[2], coords[3], coords[4]);
207
		button = _G["CharacterCreateRaceButton"..index];
208
		button:Show();
209
		if ( select(i+2, ...) == 1 ) then
210
			button.enable = true;
211
			SetButtonDesaturated(button);
212
			button.name = select(i, ...);
213
			button.tooltip = select(i, ...);
214
		else
215
			button.enable = false;
216
			SetButtonDesaturated(button, 1);
217
			button.name = select(i, ...);
218
			button.tooltip = _G[strupper(select(i+1, ...).."_".."DISABLED")];
219
		end
220
		index = index + 1;
221
	end
222
	for i=CharacterCreate.numRaces + 1, MAX_RACES, 1 do
223
		_G["CharacterCreateRaceButton"..i]:Hide();
224
	end
225
end
226
227
function CharacterCreateEnumerateClasses(...)
228
	CharacterCreate.numClasses = select("#", ...)/3;
229
	if ( CharacterCreate.numClasses > MAX_CLASSES_PER_RACE ) then
230
		message("Too many classes!  Update MAX_CLASSES_PER_RACE");
231
		return;
232
	end
233
	local coords;
234
	local index = 1;
235
	local button;
236
	for i=1, select("#", ...), 3 do
237
		coords = CLASS_ICON_TCOORDS[strupper(select(i+1, ...))];
238
		_G["CharacterCreateClassButton"..index.."NormalTexture"]:SetTexCoord(coords[1], coords[2], coords[3], coords[4]);
239
		_G["CharacterCreateClassButton"..index.."PushedTexture"]:SetTexCoord(coords[1], coords[2], coords[3], coords[4]);
240
		button = _G["CharacterCreateClassButton"..index];
241
		button:Show();
242
		if ( (select(i+2, ...) == 1) and (IsRaceClassValid(CharacterCreate.selectedRace, index)) ) then
243
			button.enable = true;
244
			button:Enable();
245
			SetButtonDesaturated(button);
246
			button.name = select(i, ...)
247
			button.tooltip = select(i, ...);
248
			_G["CharacterCreateClassButton"..index.."DisableTexture"]:Hide();
249
		else
250
			button.enable = false;
251
			button:Disable();
252
			SetButtonDesaturated(button, 1);
253
			button.name = select(i, ...)
254
			button.tooltip = _G[strupper(select(i+1, ...).."_".."DISABLED")];
255
			_G["CharacterCreateClassButton"..index.."DisableTexture"]:Show();
256
		end
257
		index = index + 1;
258
	end
259
	for i=CharacterCreate.numClasses + 1, MAX_CLASSES_PER_RACE, 1 do
260
		_G["CharacterCreateClassButton"..i]:Hide();
261
	end
262
end
263
264
function SetCharacterRace(id)
265
	CharacterCreate.selectedRace = id;
266
	local selectedButton;
267
	for i=1, CharacterCreate.numRaces, 1 do
268
		local button = _G["CharacterCreateRaceButton"..i];
269
		if ( i == id ) then
270
			_G["CharacterCreateRaceButton"..i.."Text"]:SetText(button.name);
271
			button:SetChecked(1);
272
			selectedButton = button;
273
		else
274
			_G["CharacterCreateRaceButton"..i.."Text"]:SetText("");
275
			button:SetChecked(0);
276
		end
277
	end
278
279
	-- Set Faction
280
	local name, faction = GetFactionForRace(CharacterCreate.selectedRace);
281
282
	-- Set Race
283
	local race, fileString = GetNameForRace();
284
285
	CharacterCreateRaceLabel:SetText(race);
286
	fileString = strupper(fileString);
287
	if ( GetSelectedSex() == SEX_MALE ) then
288
		gender = "MALE";
289
	else
290
		gender = "FEMALE";
291
	end
292
	local coords = RACE_ICON_TCOORDS[fileString.."_"..gender];
293
	CharacterCreateRaceIcon:SetTexCoord(coords[1], coords[2], coords[3], coords[4]);
294
	local raceText = _G["RACE_INFO_"..fileString];
295
	local abilityIndex = 1;
296
	local tempText = _G["ABILITY_INFO_"..fileString..abilityIndex];
297
	abilityText = "";
298
	while ( tempText ) do
299
		abilityText = abilityText..tempText.."\n\n";
300
		abilityIndex = abilityIndex + 1;
301
		tempText = _G["ABILITY_INFO_"..fileString..abilityIndex];
302
	end
303
304
	CharacterCreateRaceScrollFrameScrollBar:SetValue(0);
305
	CharacterCreateRaceText:SetText(GetFlavorText("RACE_INFO_"..strupper(fileString), GetSelectedSex()).."|n|n");
306
	if ( abilityText and abilityText ~= "" ) then
307
		CharacterCreateRaceAbilityText:SetText(abilityText);
308
	else
309
		CharacterCreateRaceAbilityText:SetText("");
310
	end
311
312
	-- Set backdrop colors based on faction
313
	local backdropColor = FACTION_BACKDROP_COLOR_TABLE[faction];
314
	local frame;
315
	for index, value in pairs(FRAMES_TO_BACKDROP_COLOR) do
316
		frame = _G[value];
317
		frame:SetBackdropColor(backdropColor[4], backdropColor[5], backdropColor[6]);
318
	end
319
	CharacterCreateConfigurationBackground:SetVertexColor(backdropColor[4], backdropColor[5], backdropColor[6]);
320
321
	local backgroundFilename = GetCreateBackgroundModel();
322
	SetBackgroundModel(CharacterCreate, backgroundFilename);
323
end
324
325
function SetCharacterClass(id)
326
	CharacterCreate.selectedClass = id;
327
	for i=1, CharacterCreate.numClasses, 1 do
328
		local button = _G["CharacterCreateClassButton"..i];
329
		if ( i == id ) then
330
			CharacterCreateClassName:SetText(button.name);
331
			button:SetChecked(1);
332
		else
333
			button:SetChecked(0);
334
		end
335
	end
336
	
337
	local className, classFileName, _, tank, healer, damage = GetSelectedClass();
338
	local abilityIndex = 0;
339
	local tempText = _G["CLASS_INFO_"..classFileName..abilityIndex];
340
	abilityText = "";
341
	while ( tempText ) do
342
		abilityText = abilityText..tempText.."\n\n";
343
		abilityIndex = abilityIndex + 1;
344
		tempText = _G["CLASS_INFO_"..classFileName..abilityIndex];
345
	end
346
	local coords = CLASS_ICON_TCOORDS[classFileName];
347
	CharacterCreateClassIcon:SetTexCoord(coords[1], coords[2], coords[3], coords[4]);
348
	CharacterCreateClassLabel:SetText(className);
349
	CharacterCreateClassRolesText:SetText(abilityText);	
350
	CharacterCreateClassText:SetText(GetFlavorText("CLASS_"..strupper(classFileName), GetSelectedSex()).."|n|n");
351
	CharacterCreateClassScrollFrameScrollBar:SetValue(0);
352
end
353
354
function CharacterCreate_OnChar()
355
end
356
357
function CharacterCreate_OnKeyDown(key)
358
	if ( key == "ESCAPE" ) then
359
		CharacterCreate_Back();
360
	elseif ( key == "ENTER" ) then
361
		CharacterCreate_Okay();
362
	elseif ( key == "PRINTSCREEN" ) then
363
		Screenshot();
364
	end
365
end
366
367
function CharacterCreate_UpdateModel(self)
368
	UpdateCustomizationScene();
369
	self:AdvanceTime();
370
end
371
372
function CharacterCreate_Okay()
373
	if ( PAID_SERVICE_TYPE ) then
374
		GlueDialog_Show("CONFIRM_PAID_SERVICE");
375
	else
376
		CreateCharacter(CharacterCreateNameEdit:GetText());
377
	end
378
	PlaySound("gsCharacterCreationCreateChar");
379
end
380
381
function CharacterCreate_Back()
382
	PlaySound("gsCharacterCreationCancel");
383
	SetGlueScreen("charselect");
384
end
385
386
function CharacterClass_OnClick(id)
387
	PlaySound("gsCharacterCreationClass");
388
	local _,_,currClass = GetSelectedClass();
389
	if ( currClass ~= id and IsRaceClassValid(GetSelectedRace(), id) ) then
390
		SetSelectedClass(id);
391
		SetCharacterClass(id);
392
	 	SetCharacterRace(GetSelectedRace());
393
		CharacterChangeFixup();
394
	end
395
end
396
397
function CharacterRace_OnClick(self, id)
398
	PlaySound("gsCharacterCreationClass");
399
	if ( not self:GetChecked() ) then
400
		self:SetChecked(1);
401
		return;
402
	end
403
	if ( GetSelectedRace() ~= id ) then
404
		SetSelectedRace(id);
405
		SetCharacterRace(id);
406
		SetSelectedSex(GetSelectedSex());
407
		SetCharacterCreateFacing(-15);
408
		CharacterCreateEnumerateClasses(GetAvailableClasses());
409
		local _,_,classIndex = GetSelectedClass();
410
		if ( PAID_SERVICE_TYPE ) then
411
			classIndex = PaidChange_GetCurrentClassIndex();
412
		end
413
		SetCharacterClass(classIndex);
414
		
415
		-- Hair customization stuff
416
		CharacterCreate_UpdateHairCustomization();
417
			
418
		CharacterChangeFixup();
419
	end
420
end
421
422
function SetCharacterGender(sex)
423
	local gender;
424
	SetSelectedSex(sex);
425
	if ( sex == SEX_MALE ) then
426
		gender = "MALE";
427
		CharacterCreateGender:SetText(MALE);
428
		CharacterCreateGenderButtonMale:SetChecked(1);
429
		CharacterCreateGenderButtonFemale:SetChecked(nil);
430
	elseif ( sex == SEX_FEMALE ) then
431
		gender = "FEMALE";
432
		CharacterCreateGender:SetText(FEMALE);
433
		CharacterCreateGenderButtonMale:SetChecked(nil);
434
		CharacterCreateGenderButtonFemale:SetChecked(1);
435
	end
436
437
	-- Update race images to reflect gender
438
	CharacterCreateEnumerateRaces(GetAvailableRaces());
439
	CharacterCreateEnumerateClasses(GetAvailableClasses());
440
 	SetCharacterRace(GetSelectedRace());
441
	
442
	local _,_,classIndex = GetSelectedClass();
443
	if ( PAID_SERVICE_TYPE ) then
444
		classIndex = PaidChange_GetCurrentClassIndex();
445
	end
446
	SetCharacterClass(classIndex);
447
448
	CharacterCreate_UpdateHairCustomization();
449
450
	-- Update right hand race portrait to reflect gender change
451
	-- Set Race
452
	local race, fileString = GetNameForRace();
453
	CharacterCreateRaceLabel:SetText(race);
454
	fileString = strupper(fileString);
455
	local coords = RACE_ICON_TCOORDS[fileString.."_"..gender];
456
	CharacterCreateRaceIcon:SetTexCoord(coords[1], coords[2], coords[3], coords[4]);
457
	
458
	CharacterChangeFixup();
459
end
460
461
function CharacterCustomization_Left(id)
462
	PlaySound("gsCharacterCreationLook");
463
	CycleCharCustomization(id, -1);
464
end
465
466
function CharacterCustomization_Right(id)
467
	PlaySound("gsCharacterCreationLook");
468
	CycleCharCustomization(id, 1);
469
end
470
471
function CharacterCreate_Randomize()
472
	PlaySound("gsCharacterCreationLook");
473
	RandomizeCharCustomization();
474
end
475
476
function CharacterCreateRotateRight_OnUpdate(self)
477
	if ( self:GetButtonState() == "PUSHED" ) then
478
		SetCharacterCreateFacing(GetCharacterCreateFacing() + CHARACTER_FACING_INCREMENT);
479
	end
480
end
481
482
function CharacterCreateRotateLeft_OnUpdate(self)
483
	if ( self:GetButtonState() == "PUSHED" ) then
484
		SetCharacterCreateFacing(GetCharacterCreateFacing() - CHARACTER_FACING_INCREMENT);
485
	end
486
end
487
488
function CharacterCreate_UpdateHairCustomization()
489
	CharacterCustomizationButtonFrame3Text:SetText(_G["HAIR_"..GetHairCustomization().."_STYLE"]);
490
	CharacterCustomizationButtonFrame4Text:SetText(_G["HAIR_"..GetHairCustomization().."_COLOR"]);
491
	CharacterCustomizationButtonFrame5Text:SetText(_G["FACIAL_HAIR_"..GetFacialHairCustomization()]);		
492
end
493
494
function SetButtonDesaturated(button, desaturated, r, g, b)
495
	if ( not button ) then
496
		return;
497
	end
498
	local icon = button:GetNormalTexture();
499
	if ( not icon ) then
500
		return;
501
	end
502
	local shaderSupported = icon:SetDesaturated(desaturated);
503
504
	if ( not desaturated ) then
505
		r = 1.0;
506
		g = 1.0;
507
		b = 1.0;
508
	elseif ( not r or not shaderSupported ) then
509
		r = 0.5;
510
		g = 0.5;
511
		b = 0.5;
512
	end
513
	
514
	icon:SetVertexColor(r, g, b);
515
end
516
517
function GetFlavorText(tagname, sex)
518
	local primary, secondary;
519
	if ( sex == SEX_MALE ) then
520
		primary = "";
521
		secondary = "_FEMALE";
522
	else
523
		primary = "_FEMALE";
524
		secondary = "";
525
	end
526
	local text = _G[tagname..primary];
527
	if ( (text == nil) or (text == "") ) then
528
		text = _G[tagname..secondary];
529
	end
530
	return text;
531
end
532
533
function CharacterCreate_DeathKnightSwap(self)
534
	local _, classFilename = GetSelectedClass();
535
	if ( classFilename == "DEATHKNIGHT" ) then
536
		if (self.currentModel ~= "DEATHKNIGHT") then
537
			self.currentModel = "DEATHKNIGHT";
538
			self:SetNormalTexture("Interface\\Glues\\Common\\Glue-Panel-Button-Up-Blue");
539
			self:SetPushedTexture("Interface\\Glues\\Common\\Glue-Panel-Button-Down-Blue");
540
			self:SetHighlightTexture("Interface\\Glues\\Common\\Glue-Panel-Button-Highlight-Blue");
541
		end
542
	else
543
		if (self.currentModel == "DEATHKNIGHT") then
544
			self.currentModel = nil;
545
			self:SetNormalTexture("Interface\\Glues\\Common\\Glue-Panel-Button-Up");
546
			self:SetPushedTexture("Interface\\Glues\\Common\\Glue-Panel-Button-Down");
547
			self:SetHighlightTexture("Interface\\Glues\\Common\\Glue-Panel-Button-Highlight");
548
		end
549
	end
550
end
551
552
function CharacterChangeFixup()
553
	if ( PAID_SERVICE_TYPE ) then
554
		for i=1, MAX_CLASSES_PER_RACE, 1 do
555
			if (CharacterCreate.selectedClass ~= i) then
556
				local button = _G["CharacterCreateClassButton"..i];
557
				button:Disable();
558
				SetButtonDesaturated(button, true)
559
			end
560
		end
561
562
		for i=1, MAX_RACES, 1 do
563
			local allow = false;
564
			if ( PAID_SERVICE_TYPE == PAID_FACTION_CHANGE ) then
565
				local faction = GetFactionForRace(PaidChange_GetCurrentRaceIndex());
566
				if ( (i == PaidChange_GetCurrentRaceIndex()) or ((GetFactionForRace(i) ~= faction) and (IsRaceClassValid(i,CharacterCreate.selectedClass))) ) then
567
					allow = true;
568
				end
569
			elseif ( PAID_SERVICE_TYPE == PAID_RACE_CHANGE ) then
570
				local faction = GetFactionForRace(PaidChange_GetCurrentRaceIndex());
571
				if ( (i == PaidChange_GetCurrentRaceIndex()) or ((GetFactionForRace(i) == faction) and (IsRaceClassValid(i,CharacterCreate.selectedClass))) ) then
572
					allow = true
573
				end
574
			elseif ( PAID_SERVICE_TYPE == PAID_CHARACTER_CUSTOMIZATION ) then
575
				if ( i == CharacterCreate.selectedRace ) then
576
					allow = true
577
				end
578
			end
579
			if (not allow) then
580
				local button = _G["CharacterCreateRaceButton"..i];
581
				button:Disable();
582
				SetButtonDesaturated(button, true)
583
			end
584
		end
585
	end
586
end