-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrpgRuntime.cpp
7623 lines (4757 loc) · 191 KB
/
rpgRuntime.cpp
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
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
#include "DxLib.h"
#include <stdio.h> // セーブ用
#pragma warning(disable:4996) // fopen
#include <math.h> // 切り上げ計算で使用
int zenkaiBcKasol_1[10];
int zenkaiBcKasol_2[10];
int koudouKiroku[10];
int koudouAtk = 0; int koudouMgk = 1;
int magicKiroku[10];
int sentouNaninme =0;
int magicSel = 0;
int magicAtkDef[15] = {1000,100};
TCHAR magicList[15][30] = {
{TEXT("ファイア")},
{TEXT("アイス")}
};
struct magic_def
{
int def_id;
TCHAR def_name[30];
int power;
};
static struct magic_def magic_def_list[8];
int mapEneNum = 1;
int buyrange = 0;
int waitheal = 0; // 回復の表示中の長さ
int damepyon = 0; // 戦闘中にダメージをピョンと動かすアレ
int tekidame = 0; // 敵のダメージ受けてる間だけオン
int mikatadame = 0; // mikataのダメージ受けてる間だけオン
int senkaFlag = 0;
// ウィンドウ色のデフォ値を定数化。カスタム機能をつける場合は別途に新たな変数を用意せよ。
const int wind1R = 50;
const int wind1G = 50;
const int wind1B = 150;
const int window1color = GetColor(wind1R, wind1G, wind1B); // ウィンドウのほか、カーソルのベース色でも使う可能性があるので変数化。
void window1Draw(int X1, int Y1, int X2, int Y2) {
DrawBox(X1, Y1, X2, Y2,
window1color, 1);
DrawBox(X1, Y1, X2, Y2, GetColor(255, 255, 255), 0);
}
const int darkwindow1color = GetColor(wind1R / 2, wind1G / 2, wind1B / 2);
void darkwindow1Draw(int X1, int Y1, int X2, int Y2) {
DrawBox(X1, Y1, X2, Y2,
darkwindow1color, 1);
DrawBox(X1, Y1, X2, Y2, GetColor(255 / 2, 255 / 2, 255 / 2), 0);
}
int debugFlag = 0;
const int casolu1R = 250; // l と 1 の区別のため u 追加
const int casolu1G = 150;
const int casolu1B = 150;
const int KasolColor = GetColor(casolu1R, casolu1G, casolu1B);
void redCasol1(int X1, int Y1, int X2, int Y2) {
DrawBox(X1, Y1, X2, Y2,
KasolColor, 1);
}
int TimeKasolCount = 0;
void tenmetu(int X1, int Y1, int X2, int Y2) {
double redVal = 0;
double spanBlink = 120.0;
if (TimeKasolCount < (int)spanBlink) {
redVal = TimeKasolCount;
}
if (TimeKasolCount >= (int)spanBlink) {
redVal = spanBlink * 2 - TimeKasolCount;
}
const int whiteMax = 180;
DrawBox(X1, Y1, X2, Y2,
GetColor(wind1R + (whiteMax - wind1R) * (redVal / spanBlink),
wind1G + (whiteMax - wind1G) * (redVal / spanBlink),
wind1B + 1 * (whiteMax - wind1B) * (redVal / spanBlink)),
1);
DrawBox(X1, Y1, X2, Y2, GetColor(255, 255, 255), 0);
TimeKasolCount = TimeKasolCount + 1;
if (TimeKasolCount > spanBlink * 2) {
TimeKasolCount = 0;
}
}
void tenmetuStop(int X1, int Y1, int X2, int Y2) {
double redVal = 0;
double spanBlink = 120.0;
if (TimeKasolCount < (int)spanBlink) {
redVal = TimeKasolCount;
}
if (TimeKasolCount >= (int)spanBlink) {
redVal = spanBlink * 2 - TimeKasolCount;
}
redVal = spanBlink / 2;
const int whiteMax = 180;
DrawBox(X1, Y1, X2, Y2,
GetColor(wind1R + (whiteMax - wind1R) * (redVal / spanBlink),
wind1G + (whiteMax - wind1G) * (redVal / spanBlink),
wind1B + 1 * (whiteMax - wind1B) * (redVal / spanBlink)),
1);
if (TimeKasolCount > spanBlink * 2) {
TimeKasolCount = 0;
}
}
int Key[256]; // キーが押されているフレーム数を格納する
// キーの入力状態を更新する
int gpUpdateKey() {
char tmpKey[256]; // 現在のキーの入力状態を格納する
GetHitKeyStateAll(tmpKey); // 全てのキーの入力状態を得る
for (int i = 0; i < 256; i++) {
if (tmpKey[i] != 0) { // i番のキーコードに対応するキーが押されていたら
Key[i]++; // 加算
}
else { // 押されていなければ
Key[i] = 0; // 0にする
}
}
return 0;
}
int jumpRyoku1 = 50;
static int selecting_mainmenu = 1;
int battlewait = 30;
//int battleTraFlag = 0;
int keyHaijyo = 0;
int monPosiX[5] = { 4,6 }; int monPosiY[5] = { 3,2 };
int monPosiX1 = 4; int monPosiY1 = 3; // マップ上でモンスターのいる座標
int monPosiX2 = 6; int monPosiY2 = 2;
int map1table[10][10] = {
{ 1,1,1,1,1,1,1,1,1,1 }, //0 y
{ 1,0,0,0,0,0,0,0,0,1 }, //1
{ 1,0,0,0,0,0,0,0,0,1 }, //2
{ 1,0,0,0,0,0,0,0,0,1 }, //3
{ 1,0,0,0,0,0,0,0,0,1 }, //4
{ 1,0,0,0,0,0,0,0,0,1 }, //5
{ 1,1,1,1,1,1,0,0,1,1 } //6
};
int maptreetable[20][20] = {
{ 0,0,0,0,0,0,0,0,0,0 }, //0 y
{ 0,0,0,0,0,0,0,0,0,0 }, //1
{ 0,0,0,0,0,0,0,0,0,0 }, //2
{ 0,0,0,0,0,0,0,0,0,0 }, //3
{ 0,0,0,0,0,0,0,0,0,0 }, //4
{ 0,0,0,0,0,0,0,0,0,0 }, //5
{ 0,0,0,0,0,0,0,0,0,0 } //6
};
int maptukotable[20][20] = {
{ 0,0,0,0,0,0,0,0,0,0 }, //0 y
{ 0,0,0,0,0,0,0,0,0,0 }, //1
{ 0,0,0,0,0,0,0,0,0,0 }, //2
{ 0,0,0,0,0,0,0,0,0,0 }, //3
{ 0,0,0,0,0,0,0,0,0,0 }, //4
{ 0,0,0,0,0,0,0,0,0,0 }, //5
{ 0,0,0,0,0,0,0,0,0,0 } //6
};
int maptreelayer[20][20] = {
{ 0,0,0,0,0,0,0,0,0,0 }, //0 y
{ 0,0,0,0,0,0,0,0,0,0 }, //1
{ 0,0,0,0,0,0,0,0,0,0 }, //2
{ 0,0,0,0,0,0,0,0,0,0 }, //3
{ 0,0,0,0,0,0,0,0,0,0 }, //4
{ 0,0,0,0,0,0,0,0,0,0 }, //5
{ 0,0,0,0,0,0,0,0,0,0 } //6
};
int x_mapDraw = 0;
int y_mapDraw = 0;
int hero1HPnow = 20;
int hero1HPmax = 50;
int hero2HPnow = 14;
int hero2HPmax = 30;
int toubouTyokugo1 = 0;
int toubouTyokugo[5] = { 0,0,0 };
int xPosi = 2;
int yPosi = 2;
int moving = 0; //キャラチップ画像が移動中なら0
int keyEnableUp = 0;
int keyEnableDown = 0;
int keyEnableRight = 0;
int keyEnableLeft = 0;
int keyEnableUpRight = 0;
int keyEnableX = 0;
int keyEnableZ = 0;
const int waitTime1 = 40;
const int waitTime2 = 30;
int nyuuryokuMatiLR = waitTime1;
int nyuuryokuMatiUD = waitTime1;
int nyuuryokuMatiX = waitTime1;
int nyuuryokuMatiZ = waitTime1;
int nyuuryokuMatiUp = waitTime1;
int nyuuryokuMatiDown = waitTime1;
int nyuuryokuMatiRight = waitTime1;
int nyuuryokuMatiLeft = waitTime1;
int waitKasol = waitTime1;
int kasol2Target = 0;
int kasol3Target = 0;
int tempHandle;
int destMovable;
int shopMijissou = 1;
enum direction { upward, rightward, downward, leftward };
enum direction hero1_direction = downward;
enum mode {
MODE_OP, MODE_LOAD, MODE_INITIAL, MODE_MAP,
MODE_TOWN,
MODE_Shop_Main, MODE_Shop_weapon_main, MODE_Shop_weapon_buy, MODE_Shop_weapon_sell, MODE_Shop_weapon_buyOld,
MODE_Shop_armor_main, MODE_Shop_armor_buy, MODE_Shop_armor_sell, MODE_Shop_armor_buyOld,
MODE_Shop_akusesari_main, MODE_Shop_item_main,
MODE_MENU,
MODE_narabikae_select1, MODE_narabikae_select2,
MODE_ITEM_TYPE, MODE_ITEM_MENU, MODE_ITEM_MENU_FRONT,
MODE_ITEMweapon_MENU, MODE_ITEMweapon_MENU_FRONT, MODE_ITEM_WHOM, MODE_ITEM_WHOM_FRONT,
MODE_EQUIP_MAIN, MODE_EQUIP_EDIT, MODE_EQUIP_EDIT2,
MODE_SAVE_MENU, MODE_saving_Now,
MODE_BATTLE_COMMAND, MODE_BATTLE_COMMAND2, MODE_BATTLE_MAGIC,
MODE_BATTLE_NOW, MODE_BATTLE_WIN, BATTLE_Agility_proc,
MODE_Guild_Main, MODE_Guild_Responce, MODE_Guild_Remove,
itemModeMain, itemModeTarget, skillMode,
};
enum mode mode_scene = MODE_MAP;
// 残骸だけど、検証めんどいので残す
enum mode2 {
MODE2_EQUIP_UnDef, // 未定義対応
MODE2_EQUIP_HAND1,
MODE2_EQUIP_SHIELD,
MODE2_EQUIP_HELM,
MODE2_EQUIP_ARMOR
};
enum mode2 mode2_scene = MODE2_EQUIP_HAND1;
int mode3_scene = 0;
int NaraSele1 = 0;
int NaraSele2 = 0;
int uketKyara = 1; // 戦闘中で、何人目がダメージ受けてるか。「1」で1人目。
int pageSyori = 0;
// アイテム種類番号
const int itemOffset = 10;// 0~9番はシステム処理用に確保
const int siyouType = itemOffset; // =10
const int soubiOffset = 11; // wepoTypeと同番号だが、拡張性や可読性を考え、別変数を用意
const int wepoType = soubiOffset; // 11
const int tateType = soubiOffset + 1; // 12;
const int kabutoType = soubiOffset + 2; // 13;
int PorEflag[20];
int tempPass = 0;
// これは文字数バッファなど。(モード番号ではない。)
#define MAX_LOADSTRING 100
#define MAX_LENGTH 300 // 要素数に注意
int afterShop = 0;
int shopAct = 0;
int sinamonoList = 0;
int popFlagTown = 0;
TCHAR popMsg[MAX_LENGTH] = TEXT("aaaa");
const int partymax = 3; // 本当は4だけどテストのため1時的に3
int whatuse = 0;
int beforeselect = 1; // なんらかの選択肢で直前に選んだ選択肢の番号。画面更新用に使う。
int whatedit1 = 0; // 装備コマンドなど、編集をするいろいろな作業用
int whatedit2 = 0; // ひとつの画面内に、前画面用カーソルを残す場合の処理変数
int uwadumeFlag = 1; // 1なら上詰めする。0ならオフ。デバッグモード用 // バグッたら0に戻すこと
int akikosuu;
int akiHairetu[5];
int itemHairetu[50];
int itemTypeHairetu[50];
int event_tekiFast = 0;
int event_tekiSoutou = 0;
int uwagaki = 0;
int goukeiItem = 0;
int whomCHARA = 1;
int whomTargetID1 = 0;
int whomTargetID2 = 0;
int whomTargetID3 = 0;
int whomTargetID4 = 0;
int whomTargetID5 = 0;
int whomTargetID1party = 0;
int whomTargetID1hikae = 0;
int filterFlag = 0;
int FontYoffset = 30;
int idTemp = 0;
int battleID = 0;
int sentoKoudoCount = 0;
int timerFlag = 0;
int enemyAlldeadFlag = 0;// 0なら、敵はまだ全滅してない。1で敵が全滅。
int whoAction = 5; // 0 なら主人公の攻撃。1なら敵の攻撃。試作用のとりあえずのフラグ。
int tourokuMapChip = 2;
int sankaAgility[BATTLE_Agility_proc]; // 素早さ配列
int iremonoAgilityHairetu[BATTLE_Agility_proc]; // 入れ物すばやさ配列
int actionOrder[BATTLE_Agility_proc]; // 行動順配列
int iremonoOrderHairetu[BATTLE_Agility_proc]; // 入れ物こうどうじゅん配列
int mikataAgility[BATTLE_Agility_proc]; // 味方の隊列での素早さ配列。「並び替え」で隊列順が変わるので。
int tekiTairetuAgility[BATTLE_Agility_proc]; // 敵の隊列での素早さ配列。戦闘時のソートで使うので。
// 装備の材質:
enum item_material
{
mateWood,
mateLether,
mateCopper,
mateBronze,
mateIron,
mateRichMetal,
mateElse,
mateNothing,
};
enum equip_type
{
sword,
spear,
axe,
crab,
bow,
rod,
typeNothing,
typeElse,
};
// グローバル変数:
int IsNewGame = 1; // 初めてこのゲームを起動するとき、1である。一度でもセーブすれば2になる。
int battleTimeFlag = 0; // 戦闘中のコマンド決定後の自動進行に使用。1だと自動進行。0で停止。
enum resource_embedded_flag { on, off };
enum resource_embedded_flag resource_embedded_var = off;
int makeNakamaNinzu = 5; // プログラマーの作った仲間キャラの人数
int tourokuNakama = 4 - 1; // 実際の人数より1少ない // ギルドに登録されてる仲間の人数なので変数
int partyNinzuDone = 2, enemyNinzu = 1;
int partyNinzuTemp = partyNinzuDone;
int sankaNinzu = partyNinzuDone + enemyNinzu;
int hikaeNinzu = 2;
int partyNarabi_ID[15] = { 0,1,-1,-1, -1 }; // パーティ隊列の並び替えの処理に使う予定
int partyNarabi_IDBefore[15];
int partyNarabi_IDAfter[15];
int hikaeNarabi_ID[10] = { 2,3,-1, -1, -1 }; // ギルドの処理に使う予定
int monsterNarabijyun[5] = { 0,1,2,3,4 }; // モンスターの戦闘中の行動順の処理に使う予定
int guildResFlag = 0;
struct item_def
{
int def_id;
TCHAR def_name[MAX_LENGTH];
int healti;
int power;
int item_type;
};
struct item_have
{
int have_def_id;
int have_kosuu;
};
struct weapon_have
{
int have_def_id;
int have_kosuu;
};
struct soubi_have
{
int have_type;
int have_def_id;
int have_kosuu;
};
struct soubi_def
{
int def_type;
int def_id;
TCHAR def_name[MAX_LENGTH];
int material;
int equip_type;
int equipPower[20];// 攻撃力や防御力などに使用
};
struct weapon_def
{
int def_id;
TCHAR def_name[MAX_LENGTH];
int material;
int equip_type;
int equipPower;// 攻撃力
};
struct shield_def
{
int def_id;
TCHAR def_name[MAX_LENGTH];
int material;
int equip_type;
int equipPower;// 攻撃力
};
struct shield_have
{
int have_def_id;
int have_kosuu;
};
struct helm_def
{
int def_id;
TCHAR def_name[MAX_LENGTH];
int material;
int equip_type;
int equipPower;// 攻撃力
};
struct helm_have
{
int have_def_id;
int have_kosuu;
};
struct armor_def
{
int def_id;
TCHAR def_name[MAX_LENGTH];
int material;
int equip_type;
int equipPower;// 攻撃力
};
struct armor_have
{
int have_def_id;
int have_kosuu;
};
int equipWeaponPower;
int bouguyaSina[10][10]; //
struct monster_def
{
int monster_id;
TCHAR monster_name[MAX_LENGTH];
int mon_hp_max;
int mon_agility;
int mon_attackPower;
int mon_gold;
int mon_exp;
};
int healflag = 0;
int healti = 0;
int healkioku = 0; // 回復したあと、数秒の表示を記憶するため。
// 味方パーティ構造体 (モンスター構造体の流用)
struct heros_def
{
int heros_id;
TCHAR heros_name[MAX_LENGTH];
int heros_hp;
int heros_hpdiff;
int heros_hp_max;
int heros_agility;
int heros_gold; // ウィザードリィみたいに各キャラごとにゴールドを持てるようになってる。
int heros_exp;
int heros_HP0_flag;
int PartyIn;
int heroSoubi[20];
int heroSoubiKasol[20];
// 装備品 // 不要
int heros_weapon1;
int heros_weapon2;
int heros_shield;
int heros_helm;
int heros_yoroi;
int heros_kote;
int heros_sousyoku1;
int heros_sousyoku2;
int heros_sousyoku3;
int heros_bukiKougekiRyoku;
int heros_subiRyoku;
int heros_para[20]; // 攻撃力や守備力の用を合計20、用意。
};
int kougekiPara = 1;
int syubiPara = 2;
enum next_attack_flag { next_is_hero, next_is_enemy };
enum next_attack_flag next_attack_var = next_is_hero;
static int encount_monsters_id = 2;
struct monsterTairetu_def
{
int monsterTairetu[10];
};
static int selecting_item = 1;
static int selecting_item_x = 1;
static int selecting_item_y = 1;
static int selecting_itemBefore = 1;
static int selecting_itemAfter = 1;
// 戦闘中に使用する変数。 モンスター定義とは別物。
static TCHAR monster_name[30];
static int monster_hp = 10;
static int enemy_alive[2] = { 1, 1 }; // 1なら生きてる。0なら死亡。とりあえず2匹ぶん
// カッコ内は敵の番号。0番から数えている。
static int encount_mons_alive = 1;
HINSTANCE hInst; // 現在のインターフェイス
WCHAR szTitle[MAX_LOADSTRING]; // タイトル バーのテキスト
WCHAR szWindowClass[MAX_LOADSTRING]; // メイン ウィンドウ クラス名
TCHAR mojibuf[MAX_LENGTH] = TEXT("はじめから");
// 装備欄の記述用に、3つbufを確保
TCHAR mojibuf1[MAX_LENGTH] = TEXT("はじめから");
TCHAR mojibuf2[MAX_LENGTH] = TEXT("はじめから");
TCHAR mojibuf3[MAX_LENGTH] = TEXT("はじめから");
void textFunc1(int x, int y) {
DrawFormatString(x, y, GetColor(255, 255, 255), mojibuf);
}
#define GREEN 10,250,10
void textFuncHeal(int x, int y) {
DrawFormatString(x, y, GetColor(GREEN), mojibuf);
}
static TCHAR filename_temp[100]; // ファイル読み書きで使う一時的なファイル名
static int mode2_mode_scene = 0;
static int selecting_OP = 1;
static int cursol_stop;
//static
int your_money = 10000; // これstatic にすると、戦闘終了後にバグる。
static TCHAR drawTalkString1[MAX_LENGTH] = TEXT("temp_talk1"); // 会話欄の1行目
static TCHAR drawTalkString2[MAX_LENGTH] = TEXT("temp_talk2"); // 会話欄の2行目
static TCHAR drawTalkString3[MAX_LENGTH] = TEXT("temp_talk3"); // 会話欄の3行目
static int game_event1_end;
static int game_event2_end;
static int game_event1_end_dummuy;
static int key_remain = 1;
static int chara_x;
static int chara_y;
static int before_chara_x; // 退却処理で1歩前に戻るときに使う。
static int before_chara_y; //
static int start_x = 4;
static int start_y = 3;
// マップのサイズの変数
static int map_x_size = 10;
static int map_y_size = 7;
// 進行先の壁判定のアルゴリズム用の変数
static int desti_x; // 進行先(destination)の壁判定のためのx座標変数 "desiti" means the destination.
static int desti_y; // 進行先の壁判定のためのx座標変数
// maptable の初期化 // 中身はとりあえず0. 安全のため、オーバーフロー時の影響を防ぐ。
static int maptable[10][10] = {
{ 0,0,0,0,0,0,0,0,0,0 }, //0 y
{ 0,0,0,0,0,0,0,0,0,0 }, //1
{ 0,0,0,0,0,0,0,0,0,0 }, //2
{ 0,0,0,0,0,0,0,0,0,0 }, //3
{ 0,0,0,0,0,0,0,0,0,0 }, //4
{ 0,0,0,0,0,0,0,0,0,0 }, //5
{ 0,0,0,0,0,0,0,0,0,0 } //6
};
struct map_def
{
int map_table[10][10];
//int mapTransGoto[10][10][10];
};
static struct map_def map_def_list[8];
int MapTrans_position_x_map1to_map2 = 7;
int MapTrans_position_y_map1to_map2 = 6;
int town_X = 3;
int town_Y = 5;
static int MapTrans_position_x = MapTrans_position_x_map1to_map2;
static int MapTrans_position_y = MapTrans_position_y_map1to_map2;
struct MapTrans_def
{
int MapTrans_id;
int in_Where_Map;
int to_Where_Map;
int positionX; // その遷移のあるX座標
int positionY;
int chara_positionX; // 遷移先マップでのキャラの開始時点でのX座標
int chara_positionY;
};
// マップ遷移用の構造体変数の作成
static struct MapTrans_def MapTrans_def_list[8];
// map2 のデータ
int map2table[10][10] = {
{ 1,1,0,1,0,0,0,0,0,1 }, //0 x
{ 0,0,0,0,0,0,0,0,0,0 }, //1
{ 0,0,0,0,0,0,0,0,0,0 }, //2
{ 0,0,0,0,0,0,0,0,0,1 }, //3
{ 0,0,0,0,0,0,0,0,0,0 }, //4
{ 0,0,0,0,0,0,0,0,0,0 }, //5
{ 0,1,1,1,1,1,0,0,1,0 } //6
};
static int selecting_battle_mainmenu = 1;
static int where_map = 1; // 最初のマップ
static int mapTrans_flag_is = 1;
// モンスターの位置。とりあえず2匹ぶん // なおフィールドマップにいる
static int positionX_enemy[5];
static int positionY_enemy[5];
int tekiSuu = 2; // イベント処理用に、このエリアの敵パーティ数を算出。
int gekiha_tekiSuu = 0;
static int TimeCount = 0; // 主に自動進行(敵の行動など)に使用
static int keyCount = 0; // 主にキー入力の時間制限に使用
int dameKei = 0; // ダメージ計算を1回数だけ行うためのフラグ
// アイテムメニューでのカーソル位置の計算用
void item_select() {
if (selecting_item < 1 || goukeiItem == 0) {
selecting_item = 1;
}
else if (selecting_item > goukeiItem) {
selecting_item = goukeiItem;
}
selecting_item_x = ((selecting_item - 1) % 2) + 1;
selecting_item_y = ((selecting_item - 1) / 2) + 1;
// 矢印キーの入力前後でカーソルが同じ位置のままだったら、画面を更新しないための処理
selecting_itemAfter = selecting_item;
// 矢印キーの入力前後でカーソルが同じ位置のままだったら、画面を更新しない
// 画面のチラツキ防止のため
if (selecting_itemBefore != selecting_itemAfter) {
//InvalidateRect(hWnd, NULL, FALSE);
//UpdateWindow(hWnd); // winAPI用に残す
}
}
// アイテム処理の構造体変数の作成
static struct item_def item_def_list[8]; // アイテム処理の構造体配列の宣言
static struct item_have item_have_list[8];
// 装備品の処理の構造体配列の作成
static struct weapon_def weapon_def_list[15]; // 武器処理の構造体配列の宣言
static struct weapon_have weapon_have_list[15];
static struct shield_def shield_def_list[15]; // シールド処理の構造体配列の宣言
static struct shield_have shield_have_list[15];
static struct helm_def helm_def_list[15]; // カブト処理の構造体配列の宣言
static struct helm_have helm_have_list[15];
static struct armor_def armor_def_list[15]; // ヨロイ処理の構造体配列の宣言
static struct armor_have armor_have_list[15];
// 戦闘遭遇用の構造体変数の作成
static struct monster_def monster_def_list[8];
static struct heros_def heros_def_list[8];
static struct monsterTairetu_def monsterTairetu_def_list[50];
int darkFlag = 0;
void menu_CharaSelectDraw() {
// 画像の読み込み「image2」は変数名。これが背景フィルター。
if (filterFlag == 0) {
// 画像の描画。 ダミー変数 graphics を仲介して描画する必要がある.
filterFlag = 1;
}
int winX1 = 10;
int winY1 = 100;
int winX2 = 300;
int winY2 = 200;
int StatsHPbaseX = winX1 + 120; int StatsHPbaseY = winY1 + 30;
int offsetY = 120;
for (int j = 0; j <= partyNinzuDone - 1; ++j) {
// 背景の青
window1Draw(winX1, winY1 + offsetY * j,
winX2, winY2 + offsetY * j);
if (mode_scene == MODE_ITEM_WHOM) {
// カーソル
if (whomTargetID1 == j) {
tenmetu(winX1, winY1 + offsetY * (whomTargetID1),
winX2, winY2 + offsetY * (whomTargetID1));
//MessageBox(NULL, TEXT("デバッグ。"), TEXT("テスト"), MB_OK);
}
}
_stprintf_s(mojibuf, MAX_LENGTH, TEXT("%s fgh"), heros_def_list[partyNarabi_ID[j]].heros_name);