-
Notifications
You must be signed in to change notification settings - Fork 6
/
TKM_ChoiceList.js
879 lines (793 loc) · 29.2 KB
/
TKM_ChoiceList.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
//=============================================================================
// TKM_ChoiceList.js
// by Tsukimi
// Last Updated: 2018.02.20
//=============================================================================
/*:
* @plugindesc TKM_ChoiceList
* @author Tsukimi
*
* @param use
* @text use TKM choice list
* @desc use TKM choice list or not.
* @type boolean
* @default true
*
* @param -- Choice settings --
* @desc
* @default
*
* @param image
* @text window image name
* @desc The custom image name of choices.
* blank -> use normal Window image.
* @default Window_subchoice
*
* @param tone
* @text selected-window's tone
* @desc the selected choice's tone
* in format of: 'r, g, b'. RGB range:(-255, 255)
* @default 100, -40, 40
*
* @param fontSize
* @text font size
* @desc default font size of choices.
* @default 28
*
* @param okFlashDuration
* @text ok flash duration
* @desc the flash duration after ok is pressed.(frame)
* @default 30
*
* @param okFlashFrequency
* @text ok flash frequency
* @desc the flash color changing frequency.(frame)
* @default 4
*
* @param textAlign
* @text text alignment
* @desc the alignment of text in choices.
* 0=left, 1=center, 2=right
* @default 0
*
* @param -- Advanced settings --
* @desc
* @default
*
* @param backOpacity
* @text window back Opacity
* @desc back opacity of choice window.
* MV default: 192
* @default 255
*
* @param fontOLWidth
* @text font outline width
* @desc font outline width of choices.
* decimal is OK.
* @default 3
*
* @param fontOLColor
* @text font outline color
* @desc font outline color.
* in format of: 'rgba(r, g, b, a)'.
* @default rgba(0, 0, 0, 0.5)
*
* @param vertiPadding
* @text outer vertical padding
* @desc padding between choices.
* @type number
* @min 0
* @default 8
*
* @param choiceHoriPadding
* @text inner horizontal padding
* @desc horizontal padding inside choice.
* @type number
* @min 0
* @default 32
*
* @param choiceVertiPadding
* @text inner vertical padding
* @desc vertical padding inside choice.
* @type number
* @min 0
* @default 5
*
* @param maxRows
* @text max rows
* @desc max number of shown choices.
* @type number
* @min 1
* @default 4
*
* @param maxRowsC
* @text max rows(center)
* @desc max number of shown choices when message window
* is located center.
* @type number
* @min 1
* @default 3
*
* @param mineLineWidth
* @text min line width
* @desc the minimum line width of choices.
* @type number
* @min 1
* @default 96
*
*
* @help
* TKM_ChoiceList
* Author Tsukimi
*
* Another style of Choice List.
* each choice has it's own window.
*
* -----------------
* Plugin Command
*
* choicelist_offset [number] [number]
* move the whole choice list.
*
* example: choicelist_offset 0 40
* move choice list up 40 pixels.
*
*
* choicelist_offset [x/y] [number]
* move the whole choice list on x/y coordinate.
*
* example: choicelist_offset x 30
* move choice list right 30 pixels.
*
*
*
* TKMchoicelist_setting [parameter name] [parameter]
* set plugin parameters dynamically.
*
* example: TKMchoicelist_setting backOpacity 128
* set back opacity to 128.
*
*/
/*:ja
* @plugindesc ツキミ式選択肢
* @author ツキミ
*
* @param use
* @text ツキミ式選択肢を使う
* @desc ツキミ式選択肢を使う
* @type boolean
* @default true
*
* @param -- Choice settings --
* @text -- 選択肢設定 --
* @desc
* @default
*
* @param image
* @text ウィンドウ画像名
* @desc 選択肢のウィンドウに使われる画像の名前
* @default Window_subchoice
*
* @param tone
* @text 選択された選択肢のトーン
* @desc 選択された選択肢のトーン
* 記入例: 'r, g, b'. RGB値の範囲:(-255, 255)
* @default 100, -40, 40
*
* @param fontSize
* @text フォントサイズ
* @desc デフォルトのフォントサイズ
* @default 28
*
* @param okFlashDuration
* @text 決定後フラッシュの持続時間
* @desc 決定キーで選択された選択肢をフラッシュさせる
* フラッシュの持続時間(単位:フレーム)
* @default 30
*
* @param okFlashFrequency
* @text 決定後フラッシュの頻度
* @desc 決定キーで選択された選択肢のフラッシュの変化速度
* @default 4
*
* @param textAlign
* @text 文字揃え
* @desc 文字の揃え位置を指定する。
* 0=左揃え, 1=中央揃え, 2=右揃え
* @default 0
*
* @param -- Advanced settings --
* @text -- 詳細設定 --
* @desc
* @default
*
* @param backOpacity
* @text ウィンドウ背景の不透明度
* @desc ウィンドウ背景の不透明度
* MV のデフォルトは 192。
* @default 255
*
* @param fontOLWidth
* @text 字の枠線の太さ
* @desc 字の枠線の太さ。小数点OK。
* @default 3
*
* @param fontOLColor
* @text 字の枠線の色
* @desc 字の枠線の色
* 記入例: 'rgba(r, g, b, a)'.
* @default rgba(0, 0, 0, 0.5)
*
* @param vertiPadding
* @text 選択肢間の余白
* @desc 選択肢間の余白
* @type number
* @min 0
* @default 8
*
* @param choiceHoriPadding
* @text 選択肢内の余白(横)
* @desc 選択肢内の横の余白
* @type number
* @min 0
* @default 32
*
* @param choiceVertiPadding
* @text 選択肢内の余白(縦)
* @desc 選択肢内の縦の余白
* @type number
* @min 0
* @default 5
*
* @param maxRows
* @text 表示される選択肢数の上限
* @desc 一度に表示される選択肢数の上限。
* この値を超えるとスクロールが出てきます。
* @type number
* @min 1
* @default 4
*
* @param maxRowsC
* @text 表示される選択肢数の上限(中央)
* @desc メッセージウィンドウの位置が中央にある時の
* 一度に表示される選択肢数の上限。
* @type number
* @min 1
* @default 3
*
* @param mineLineWidth
* @text 最小文字列幅
* @desc 文字列の幅の下限。これにより選択肢の幅が
* 一定以上であることが保証される。
* @type number
* @min 1
* @default 96
*
*
*
* @help
* ツキミ式選択肢ウィンドウ
* 作者 ツキミ
*
* ツキミ式の選択肢ウィンドウです。
* 一つの選択肢ウィンドウの代わりに、各選択肢が自分のウィンドウ
* を持ち、色々なエフェクトが使えます。
*
* -----------------
* プラグインコマンド:
* イベントコマンド「プラグインコマンド」から実行。
* (パラメータの間は半角スペースで区切る)
*
* choicelist_offset [数字] [数字]
* 選択肢ウィンドウをズレさせる。
*
* 例:Choicelist_offset 0 40
* 選択肢ウィンドウを上へ40ピクセルズレさせる。
*
*
* choicelist_offset [x/y] [数字]
* 選択肢ウィンドウをx/y軸にズレさせる。
*
* 例:Choicelist_offset x 20
* 選択肢ウィンドウを右へ20ピクセルズレさせる。
*
*
*
* TKMchoicelist_setting [parameter name] [parameter]
* 各パラメータの値を設定する。
*
* 例: TKMchoicelist_setting backOpacity 128
* ウィンドウ背景の不透明度を128にする。
*
* -----------------
*
*/
var Imported = Imported || {};
Imported.TKM_ChoiceList = true;
var $TKMvar = $TKMvar || {};
function Window_TKMChoiceList() {
this.initialize.apply(this, arguments);
}
Window_TKMChoiceList.prototype = Object.create(Window_ChoiceList.prototype);
Window_TKMChoiceList.prototype.constructor = Window_TKMChoiceList;
function Window_TKMChoice() {
this.initialize.apply(this, arguments);
}
Window_TKMChoice.prototype = Object.create(Window_Base.prototype);
Window_TKMChoice.prototype.constructor = Window_TKMChoice;
(function() {
'use strict';
var pluginName = 'TKM_ChoiceList';
var parameters = PluginManager.parameters(pluginName);
var getParam = function(paramNames) {
if (!Array.isArray(paramNames)) paramNames = [paramNames];
for (var i = 0; i < paramNames.length; i++) {
var name = PluginManager.parameters(pluginName)[paramNames[i]];
if (name) return name;
}
return '';
};
var getNumber = function(paramNames) {
var num = Number(getParam(paramNames)) || 0;
return num;
};
$TKMvar.choiceList = {};
var choiceList = $TKMvar.choiceList;
// PARAMETER
choiceList.use = (getParam("use") === 'true') ? true : false;
// *** window
choiceList.image = getParam("image");
if(choiceList.image === '') choiceList.image = 'Window';
choiceList.tone = getParam("tone").split(',');
for(var i = 0; i < choiceList.tone.length; i++)
choiceList.tone[i] = Number(choiceList.tone[i]) || 0;
choiceList.backOpacity = getNumber("backOpacity") || 192;
// *** font
choiceList.fontSize = getNumber("fontSize") || 28;
choiceList.fontOLWidth = getNumber("fontOLWidth") || 3;
choiceList.fontOLColor = getParam("fontOLColor");
// *** padding
choiceList.vertiPadding = getNumber("vertiPadding");
choiceList.choiceHoriPadding = getNumber("choiceHoriPadding");
choiceList.choiceVertiPadding = getNumber("choiceVertiPadding");
// *** flash after choosed
choiceList.okFlashDuration = getNumber("okFlashDuration"); // duration
choiceList.okFlashFrequency = getNumber("okFlashFrequency"); // frequency
// *** other
choiceList.maxRows = getNumber("maxRows") || 1;
choiceList.maxRowsC = getNumber("maxRowsC") || 1;
choiceList.mineLineWidth = getNumber("mineLineWidth") || 96;
choiceList.textAlign = getNumber("textAlign");
choiceList.offsetX = 0;
choiceList.offsetY = 0;
//=======================
// コマンドの処理
//=======================
var _Game_Interpreter_pluginCommand = Game_Interpreter.prototype.pluginCommand;
Game_Interpreter.prototype.pluginCommand = function (command, args) {
_Game_Interpreter_pluginCommand.call(this, command, args);
// command の処理
switch ((command || '').toUpperCase()) {
case 'CHOICELIST_OFFSET':
var coord = args[0].toUpperCase();
if(coord === 'X')
$TKMvar.choiceList.offsetX = Number(args[1]) || 0;
else if(coord === 'Y')
$TKMvar.choiceList.offsetY = Number(args[1]) || 0;
else {
$TKMvar.choiceList.offsetX = Number(args[0]) || 0;
$TKMvar.choiceList.offsetY = Number(args[1]) || 0;
}
break;
case 'TKMCHOICELIST_SETTING':
switch(args[0]) {
case 'use':
var use = (args[1] === 'true');
if(use !== $TKMvar.choiceList.use) {
$TKMvar.choiceList.use = use;
if(SceneManager._scene._messageWindow)
SceneManager._scene._messageWindow.recreateChoiceWindow();
}
break;
case 'image':
$TKMvar.choiceList.image = args[1];
if($TKMvar.choiceList.use && SceneManager._scene._messageWindow) {
var itemWindows = SceneManager._scene._messageWindow._choiceWindow._itemWindows;
for(var i = 0; i < itemWindows.length; i++) itemWindows[i].loadWindowskin();
}
break;
case 'tone':
$TKMvar.choiceList.tone = [];
var tone = args.slice(1).join(' ').split(',');
for(var i = 0; i < tone.length; i++)
$TKMvar.choiceList.tone[i] = Number(tone[i]) || 0;
break;
case 'fontOLColor':
$TKMvar.choiceList.fontOLColor = args.slice(1).join(' ');
break;
default:
$TKMvar.choiceList[args[0]] = Number(args[1]);
break;
}
break;
}
};
//-----------------------------------------------------------------------------
// Window_ChoiceList
//
// offset settings
var _Window_ChoiceList_updatePlacement = Window_ChoiceList.prototype.updatePlacement;
Window_ChoiceList.prototype.updatePlacement = function() {
_Window_ChoiceList_updatePlacement.apply(this, arguments);
this.x += $TKMvar.choiceList.offsetX;
this.y += $TKMvar.choiceList.offsetY;
};
//-----------------------------------------------------------------------------
// Window_TKMChoiceList
//
// The window used for the event command [Show Choices].
Window_TKMChoiceList.prototype.initialize = function(messageWindow) {
this._itemWindows = [];
this.previousTopIndex = null;
Window_ChoiceList.prototype.initialize.apply(this, arguments);
this._oked = false;
this._okWait = 0;
};
// set rect of each choice, including size, padding, etc.
Window_TKMChoiceList.prototype.itemRect = function(index) {
var rect = Window_ChoiceList.prototype.itemRect.apply(this, arguments);
var hp = this.horiPadding(), vp = this.vertiPadding();
rect.x += hp;
rect.y += vp;
rect.width -= hp*2;
rect.height -= vp*2;
return rect;
};
Window_TKMChoiceList.prototype.itemRectForText = function(index) {
var rect = Window_ChoiceList.prototype.itemRectForText.apply(this, arguments);
var hp = this.choiceHoriPadding(), vp = this.choiceVertiPadding();
rect.x += hp;
rect.y += vp;
rect.width -= hp*2;
rect.height -= vp*2;
return rect;
};
Window_TKMChoiceList.prototype.lineHeight = function() {
// var height = Window_ChoiceList.prototype.lineHeight.apply(this, arguments);
//return height + Min( ($TKMvar.choiceList.fontSize - 28), 0 );
return Math.max(($TKMvar.choiceList.fontSize + 8), 36);
};
Window_TKMChoiceList.prototype.itemHeight = function() {
var height = Window_ChoiceList.prototype.itemHeight.apply(this, arguments);
return height + (this.choiceVertiPadding() + this.vertiPadding()) * 2;
};
Window_TKMChoiceList.prototype.choiceHoriPadding = function() {
return $TKMvar.choiceList.choiceHoriPadding; // padding in choice - horizontal
};
Window_TKMChoiceList.prototype.choiceVertiPadding = function() {
return $TKMvar.choiceList.choiceVertiPadding; // padding in choice - vertical
};
Window_TKMChoiceList.prototype.horiPadding = function() {
return 0; // padding between choice - horizontal
};
Window_TKMChoiceList.prototype.vertiPadding = function() {
return $TKMvar.choiceList.vertiPadding; // padding between choice - vertical
};
Window_TKMChoiceList.prototype.fittingHeight = function(numLines) {
return numLines * this.itemHeight() + this.standardPadding() * 2;
};
// choice width
Window_TKMChoiceList.prototype.maxChoiceWidth = function() {
var maxWidth = Window_ChoiceList.prototype.maxChoiceWidth.apply(this, arguments);
maxWidth += (this.horiPadding() + this.choiceHoriPadding()) * 2;
var minWidth = $TKMvar.choiceList.mineLineWidth;
if(maxWidth < minWidth) maxWidth = minWidth;
return maxWidth;
};
Window_TKMChoiceList.prototype.numVisibleRows = function() {
var positionType = $gameMessage.positionType();
var choices = $gameMessage.choices();
var numLines = choices.length;
var maxLines = $TKMvar.choiceList.maxRows;
if (positionType === 1) {
maxLines = $TKMvar.choiceList.maxRowsC;
}
if (numLines > maxLines) {
numLines = maxLines;
}
return numLines;
};
/*
Window_TKMChoiceList.prototype.windowWidth = function() {
var width = Window_ChoiceList.prototype.windowWidth.apply(this, arguments);
width += this.choiceHoriPadding() * 2;
return Math.min(width, Graphics.boxWidth);
};*/
// open sub-windows instead of this window
Window_TKMChoiceList.prototype.open = function() {
Window_ChoiceList.prototype.open.apply(this, arguments);
this.openness = 255;
this._windowContentsSprite.opacity = 0;
var maxItems = this.maxPageItems();
for (var i = 0; i < maxItems; i++) {
if(this._itemWindows[i] && !this._itemWindows[i]._opening) {
this._itemWindows[i].openness = 0;
this._itemWindows[i].open();
}
}
};
Window_TKMChoiceList.prototype.close = function() {
Window_ChoiceList.prototype.close.apply(this, arguments);
this.previousTopIndex = null;
var maxItems = this.maxPageItems();
for(var i = 0; i < maxItems; i++) {
if(this._itemWindows[i] && !this._itemWindows[i]._closing) this._itemWindows[i].close();
}
};
Window_TKMChoiceList.prototype.updateOpen = function() {
if (this._opening) {
if (!this._itemWindows[0] || this._itemWindows[0].isOpen()) {
this._opening = false;
}
}
};
Window_TKMChoiceList.prototype.updateClose = function() {
if (this._closing) {
var index = this._index - this.topIndex();
if(index < 0 || index >= this._itemWindows.length) index = 0;
if (!this._itemWindows[index] || this._itemWindows[index].isClosed()) {
this._closing = false;
this.openness = 0;
}
}
};
Window_TKMChoiceList.prototype.isOpen = function() {
return ( !this._itemWindows[0] || this._itemWindows[0].isOpen() );
};
Window_TKMChoiceList.prototype.isClosed = function() {
var index = this._index - this.topIndex();
if(index < 0 || index >= this._itemWindows.length) index = 0;
return ( !this._itemWindows[index] || this._itemWindows[index].isClosed() );
};
Window_TKMChoiceList.prototype.setBackgroundType = function(type) {
Window_ChoiceList.prototype.setBackgroundType.apply(this, [2]);
for(var i = 0; i < this._itemWindows.length; i++) {
this._itemWindows[i].setBackgroundType(type);
}
};
Window_TKMChoiceList.prototype.drawAllItems = function() {
var topIndex = this.topIndex();
if(this.previousTopIndex !== topIndex) {
this.previousTopIndex = topIndex;
for(var i = 0; i < this._itemWindows.length; i++)
this._itemWindows[i]._windowContentsSprite.opacity = 96;
//this._windowContentsSprite.opacity = 96;
}
var i = 0;
for (; i < this.maxPageItems(); i++) {
var index = topIndex + i;
if (index < this.maxItems()) {
this.drawItemWindow(index, i);
//this.drawItem(index);
}
else break;
}
for(; i < this._itemWindows.length; i++) {
this._itemWindows[i].openness = 0;
}
};
/*
Window_TKMChoiceList.prototype.drawItem = function(index) {
var rect = this.itemRectForText(index);
this.drawTextEx(this.commandName(index), rect.x, rect.y+Math.max((28-$TKMvar.choiceList.fontSize)/2, 0) );
};
Window_TKMChoiceList.prototype.drawItemBackGround = function(index, i) {
var rect = this.itemRect(index);
var p = this.padding;
if(!this._itemWindows[i]) {
this._itemWindows[i] = new Window_TKMChoice();
this.addChildToBack(this._itemWindows[i]);
}
this._itemWindows[i].move(rect.x+p, rect.y+p, rect.width, rect.height);
};*/
Window_TKMChoiceList.prototype.drawItemWindow = function(index, i) {
var rect = this.itemRect(index);
var p = this.padding;
if(!this._itemWindows[i]) {
this._itemWindows[i] = new Window_TKMChoice();
this.addChildToBack(this._itemWindows[i]);
}
this._itemWindows[i].move(rect.x+p, rect.y+p, rect.width, rect.height);
this._itemWindows[i].refresh();
var centerPadding = Math.max((28-$TKMvar.choiceList.fontSize)/2, 0);
var hp = this.choiceHoriPadding(), vp = this.choiceVertiPadding();
var textWidth = this._itemWindows[i].textWidthEx(this.commandName(index));
var alignPadding = (rect.width-2*hp-textWidth)*$TKMvar.choiceList.textAlign/2;
this._itemWindows[i].drawTextEx(this.commandName(index), hp+alignPadding, vp+centerPadding );
};
// select changes sub-window's tone
Window_TKMChoiceList.prototype.select = function(index) {
var visualIndex = this._index - this.topIndex();
if(this._itemWindows[visualIndex]) this._itemWindows[visualIndex].unselect();
Window_ChoiceList.prototype.select.apply(this, arguments);
visualIndex = this._index - this.topIndex();
if(this._itemWindows[visualIndex]) this._itemWindows[visualIndex].select();
};
Window_TKMChoiceList.prototype.updateCursor = function() {
// Window_ChoiceList.prototype.updateCursor.apply(this, arguments);
};
// change font settings
// for measure text width
Window_TKMChoiceList.prototype.resetFontSettings = function() {
Window_ChoiceList.prototype.resetFontSettings.call(this);
this.contents.fontSize = $TKMvar.choiceList.fontSize;
};
Window_TKMChoiceList.prototype.refresh = function() {
//for(var i = 0; i < this._itemWindows.length; i++) this._itemWindows[i].contents.clear();
Window_ChoiceList.prototype.refresh.call(this);
};
/*
Window_TKMChoiceList.prototype.processHandling = function() {
if(this._oked) return;
Window_ChoiceList.prototype.processHandling.apply(this, arguments);
};*/
Window_TKMChoiceList.prototype.processOk = function() {
if (this.isCurrentItemEnabled()) {
this.playOkSound();
this.updateInputData();
// this.deactivate();
this.oked();
// this.callOkHandler();
} else {
this.playBuzzerSound();
}
};
Window_TKMChoiceList.prototype.oked = function() {
this._oked = true;
this._okWait = this.okFlashDuration();
var visualIndex = this._index - this.topIndex();
for(var i = 0; i < this._itemWindows.length; i++) {
if(i===visualIndex) continue;
this._itemWindows[i].close();
}
};
Window_TKMChoiceList.prototype.update = function() {
if(this._oked) {
Window.prototype.update.apply(this, arguments);
this.processAfterOk();
}
else {
Window_ChoiceList.prototype.update.apply(this, arguments);
}
};
Window_TKMChoiceList.prototype.processAfterOk = function() {
if(this._oked) {
var visualIndex = this._index - this.topIndex();
var item = this._itemWindows[visualIndex];
if(this._okWait <= 0) {
this._oked = false;
item.select();
this.deactivate();
this.callOkHandler();
}
else {
if( (this._okWait % this.okFlashFrequency()) === 0) {
if(item._selected) item.unselect();
else item.select();
}
this._okWait--;
}
}
};
Window_TKMChoiceList.prototype.okFlashDuration = function() {
return $TKMvar.choiceList.okFlashDuration;
};
Window_TKMChoiceList.prototype.okFlashFrequency = function() {
return $TKMvar.choiceList.okFlashFrequency;
};
//-----------------------------------------------------------------------------
// Window_Message
//
// create TKMChoiceWindow
var _Window_Message_createSubWindows = Window_Message.prototype.createSubWindows;
Window_Message.prototype.createSubWindows = function() {
_Window_Message_createSubWindows.apply(this, arguments);
this.recreateChoiceWindow();
};
Window_Message.prototype.recreateChoiceWindow = function() {
var old = this._choiceWindow;
if($TKMvar.choiceList.use) this._choiceWindow = new Window_TKMChoiceList(this);
else this._choiceWindow = new Window_ChoiceList(this);
if(old) {
var index = SceneManager._scene._windowLayer.children.indexOf(old);
if(index>=0) {
SceneManager._scene._windowLayer.removeChild(old);
SceneManager._scene._windowLayer.addChildAt(this._choiceWindow, index);
}
}
};
//-----------------------------------------------------------------------------
// Window_TKMChoice
//
// The sub window used for TKM Choice List.
Window_TKMChoice.prototype.initialize = function() {
Window_Base.prototype.initialize.call(this, 0, 0, 1, 1);
this.padding = 0;
this._selected = false;
var u = this._windowContentsSprite.update;
this._windowContentsSprite.update = function() {
u.apply(this, arguments);
if(this.opacity<255) this.opacity = (this.opacity+15).clamp(0, 255);
};
};
Window_TKMChoice.prototype.standardPadding = function() {
return 0;
};
Window_TKMChoice.prototype.loadWindowskin = function() {
if($TKMvar.choiceList.image === '') Window_Base.prototype.loadWindowskin.apply(this, arguments);
else this.windowskin = ImageManager.loadSystem($TKMvar.choiceList.image);
};
Window_TKMChoice.prototype.select = function() {
var tone = this.selectedTone();
this.setTone(tone[0], tone[1], tone[2]);
this._selected = true;
};
Window_TKMChoice.prototype.unselect = function() {
var tone = this.selectedTone();
this.setTone(0, 0, 0);
this._selected = false;
};
Window_TKMChoice.prototype.updateTone = function() {
// var tone = $gameSystem.windowTone();
// this.setTone(tone[0], tone[1], tone[2]);
};
Window_TKMChoice.prototype.refresh = function() {
if (this.contents) {
this.contents.clear();
this.contents.resize(this.width, this.height);
this.resetFontSettings();
}
this.updateBackOpacity();
};
Window_TKMChoice.prototype.selectedTone = function() {
return $TKMvar.choiceList.tone;
};
Window_TKMChoice.prototype.standardBackOpacity = function() {
return $TKMvar.choiceList.backOpacity;
};
Window_TKMChoice.prototype.resetFontSettings = function() {
Window_Base.prototype.resetFontSettings.call(this);
this.contents.fontSize = $TKMvar.choiceList.fontSize;
this.contents.outlineWidth = $TKMvar.choiceList.fontOLWidth; // CHANGED
this.contents.outlineColor = $TKMvar.choiceList.fontOLColor;
};
Window_TKMChoice.prototype.textWidthEx = function(text) {
return this.drawTextEx(text, 0, this.contents.height);
};
//-----------------------------------------------------------------------------
// Scene_Boot
//
// preload window image
var _Scene_Boot_loadSystemImages = Scene_Boot.loadSystemImages;
Scene_Boot.loadSystemImages = function() {
_Scene_Boot_loadSystemImages.apply(this, arguments);
ImageManager.reserveSystem($TKMvar.choiceList.image);
};
//-----------------------------------------------------------------------------
// DataManager
//
// make save/load contents
var makeSaveContents = DataManager.makeSaveContents;
DataManager.makeSaveContents = function() {
var contents = makeSaveContents.call(this);
contents.TKMvar_choiceList = $TKMvar.choiceList;
return contents;
};
// セーブデータの読み込み
// 生成時と同じ形でデータがcontentsに入っているので、変数に格納する
var extractSaveContents = DataManager.extractSaveContents;
DataManager.extractSaveContents = function(contents) {
extractSaveContents.call(this, contents);
if(contents.TKMvar_choiceList) $TKMvar.choiceList = contents.TKMvar_choiceList;
};
})();