From c830d8301eeb9bc104765041564c4f41ad84dc63 Mon Sep 17 00:00:00 2001 From: Killery Date: Sun, 17 Jul 2016 23:03:10 +0900 Subject: [PATCH] =?utf8?q?=E3=82=BB=E3=83=BC=E3=83=95=E3=82=99=E3=83=86?= =?utf8?q?=E3=82=99=E3=83=BC=E3=82=BF=E3=80=81=E3=83=9E=E3=83=83=E3=83=95?= =?utf8?q?=E3=82=9A=E3=82=B9=E3=82=AF=E3=83=AA=E3=83=95=E3=82=9A=E3=83=88?= =?utf8?q?=E4=BB=A5=E5=A4=96=E3=83=AD=E3=83=BC=E3=83=88=E3=82=99=E5=AE=8C?= =?utf8?q?=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Awars III/FieldScene.h | 8 ++ Awars III/FieldScene.m | 366 ++++++++++++++++++++++++++++++++++++++++++----- Awars III/SaveDataList.m | 32 +++-- 3 files changed, 361 insertions(+), 45 deletions(-) diff --git a/Awars III/FieldScene.h b/Awars III/FieldScene.h index 9917274..a4bf2f7 100755 --- a/Awars III/FieldScene.h +++ b/Awars III/FieldScene.h @@ -238,6 +238,7 @@ typedef struct _UNITD{ NSImage *img; struct _UNITCHIPD C; + struct _LOADCHIPD CL; }UNITD; typedef struct _UNION{ @@ -502,12 +503,14 @@ typedef struct _SAVEDATADAT{ bool wtRdy2; bool wtRdy3; + /*//容量を取るため省略か int chipNum[1002][1002]; int buildNum[1002][1002]; int unitNum[1002][1002]; int loadNum[1002][1002]; int buildTeam[1002][1002]; int unitTeam[1002][1002]; + */ //あったものを読み込むというよりは一部のデータをもとに再現するのにおよそ等しい struct _UNITD dU[dUMAX]; @@ -613,6 +616,8 @@ int mapChipDataLoadProc; int LFOLrow; char *datFilePath; +bool datFileLoadCompFromTitle; +bool datFileLoadCompFromField; @interface FieldScene : NSObject { @@ -966,6 +971,9 @@ char *datFilePath; -(void)initLoadFileOutputList; -(void)initFileOutPutListSet; +-(void)loadGameDataDat; + + @end FieldScene *fieldScene; diff --git a/Awars III/FieldScene.m b/Awars III/FieldScene.m index 96651c9..2cfd09c 100755 --- a/Awars III/FieldScene.m +++ b/Awars III/FieldScene.m @@ -255,11 +255,11 @@ sdd2[datRow].dB[r].z = (int)[self readInt:fp]; sdd2[datRow].dB[r].dead = (int)[self readInt:fp]; - + /* sdd2[datRow].dB[r].imgAdCnt = (int)[self readInt:fp]; sdd2[datRow].dB[r].imgAdFix = (int)[self readInt:fp]; sdd2[datRow].dB[r].img = [self readNSImage:fp imgOut:sdd2[datRow].dB[r].img dcnt:sdd2[datRow].dB[r].imgAdCnt dfix:sdd2[datRow].dB[r].imgAdFix]; - + */ [self readBuildChipD:fp val:&sdd2[datRow].dB[r].C]; } @@ -269,11 +269,13 @@ val->name = [self readNSString:fp strOut:val->name]; val->nameID = [self readNSString:fp strOut:val->nameID]; - fread(&val->S_C, sizeof(STATUS), 1, fp); + fread(&val->S_C, sizeof(BSTATUS), 1, fp); NSLog(@"awww man..."); } + + -(void)readUnitD:(FILE*)fp row:(int)r{ sdd2[datRow].dU[r].CPU = (int)[self readInt:fp]; @@ -304,12 +306,15 @@ sdd2[datRow].dU[r].targType2D = (int)[self readInt:fp]; sdd2[datRow].dU[r].army = [self readNSString:fp strOut:sdd2[datRow].dU[r].army]; + + /* sdd2[datRow].dU[r].imgAdCnt = (int)[self readInt:fp]; sdd2[datRow].dU[r].imgAdFix = (int)[self readInt:fp]; sdd2[datRow].dU[r].img = [self readNSImage:fp imgOut:sdd2[datRow].dU[r].img dcnt:sdd2[datRow].dU[r].imgAdCnt dfix:sdd2[datRow].dU[r].imgAdFix]; - + */ [self readUnitChipD:fp val:&sdd2[datRow].dU[r].C]; + [self readUnitChipLD:fp val:&sdd2[datRow].dU[r].CL]; } @@ -329,6 +334,20 @@ NSLog(@"creepy jude..."); } +-(void)readUnitChipLD:(FILE*)fp val:(LOADCHIPD*)val{ + + val->chipNumb = (int)[self readInt:fp]; + val->name = [self readNSString:fp strOut:val->name]; + val->nameID = [self readNSString:fp strOut:val->nameID]; + + + + fread(&val->R_C, sizeof(RESIST), 1, fp); + fread(&val->S_C, sizeof(STATUS2), 1, fp); + + NSLog(@"creepy jude...2"); +} + -(void)inputFileData{ [self saveStruct]; @@ -400,7 +419,7 @@ sdd.wtRdy = sdd2[datRow].wtRdy; sdd.wtRdy2 = sdd2[datRow].wtRdy2; sdd.wtRdy3 = sdd2[datRow].wtRdy3; - + /* for(int i = 0;i < 1002;i++) for(int j = 0;j < 1002;j++) sdd.chipNum[i][j] = sdd2[datRow].chipNum[i][j]; @@ -419,7 +438,7 @@ for(int i = 0;i < 1002;i++) for(int j = 0;j < 1002;j++) sdd.unitTeam[i][j] = sdd2[datRow].unitTeam[i][j]; - + */ for(int i = 0;i < registerNum-1;i++) sdd.dU[i] = sdd2[datRow].dU[i]; for(int i = 0;i < registerNumB-1;i++) @@ -479,7 +498,7 @@ [self writeInt:fpo val:sdd.wtRdy2]; [self writeInt:fpo val:sdd.wtRdy3]; - + /*//これやると容量が重くなる(24MB超えるので保存しない) for(int i = 0;i < 1002;i++) for(int j = 0;j < 1002;j++) [self writeInt:fpo val:sdd.chipNum[i][j]]; @@ -498,6 +517,7 @@ for(int i = 0;i < 1002;i++) for(int j = 0;j < 1002;j++) [self writeInt:fpo val:sdd.unitTeam[i][j]]; + */ for(int i = 0;i < registerNum-1;i++) [self writeUnitD:fpo row:i]; @@ -538,7 +558,7 @@ [self writeNSString:fp str:val.name]; [self writeNSString:fp str:val.nameID]; - fwrite(&val.S_C, sizeof(STATUS), 1, fp); + fwrite(&val.S_C, sizeof(BSTATUS), 1, fp); NSLog(@"gj folks..."); } @@ -645,6 +665,7 @@ [self writeUnitChipD:fp val:sdd.dU[r].C]; + [self writeUnitChipLD:fp val:sdd.dU[r].CL]; } @@ -664,6 +685,20 @@ NSLog(@"oops is right youre supposed to get..."); } +-(void)writeUnitChipLD:(FILE*)fp val:(LOADCHIPD)val{ + + [self writeInt:fp val:val.chipNumb]; + [self writeNSString:fp str:val.name]; + [self writeNSString:fp str:val.nameID]; + + + + fwrite(&val.R_C, sizeof(RESIST), 1, fp); + fwrite(&val.S_C, sizeof(STATUS2), 1, fp); + + NSLog(@"oops is right youre supposed to get...2"); +} + -(void)writeUnitDimage:(FILE*)fp row:(int)r{ FILE *fpx; @@ -794,7 +829,7 @@ sdd2[datRow].wtRdy2 = (int)[self readInt:fpi]; sdd2[datRow].wtRdy3 = (int)[self readInt:fpi]; - + /*//saveStructとワンセット容量の関係で読み込まない for(int i = 0;i < 1002;i++) for(int j = 0;j < 1002;j++) sdd2[datRow].chipNum[i][j] = (int)[self readInt:fpi]; @@ -813,7 +848,7 @@ for(int i = 0;i < 1002;i++) for(int j = 0;j < 1002;j++) sdd2[datRow].unitTeam[i][j] = (int)[self readInt:fpi]; - + */ for(int i = 0;i < registerNum-1;i++) [self readUnitD:fpi row:i]; for(int i = 0;i < registerNumB-1;i++) @@ -823,6 +858,7 @@ fclose(fpi); + } @@ -2154,6 +2190,7 @@ ahhh:{} } [self SetStatusFunc]; + if(initStatusFlag){ @@ -2289,7 +2326,27 @@ ahhh:{} [self initCSummonList]; } - if (initMapFlag && !initStatusFlag) { + if(initMapFlag && datFileLoadCompFromTitle){ + + [self initUnitStatusDat]; + [self initBuildStatusDat]; + [self initMapscript]; + //ここに進行したマップスクリプト値関数 + [self setTargetListDat]; + [self initGuildList]; + + initMapEventFlag = true; + fieldViewBattleInitFlag = true; + + for(int i = 0;i < 255;i++){ + AUN[i] = 0; + DUN[i] = 0; + } + cpuTurnEndFlag = false; + mapChipDataLoadProc = 0; + + datFileLoadCompFromTitle = false; + }else if (initMapFlag && !initStatusFlag) { registerNum = 0; registerNumB = 0; @@ -2328,11 +2385,11 @@ ahhh:{} mapChipDataLoadFail = true; } - [self setTargetList]; - - [self initMapscript]; + [self setTargetList]; + + initMapEventFlag = true; fieldViewBattleInitFlag = true; @@ -3611,7 +3668,164 @@ ahhh:{} return MS0; } - +-(void)setTargetListDat{ + targType1cnt[0] = -1; + targType1cnt[1] = -1; + targType2cnt[0] = -1; + targType2cnt[1] = -1; + targType2Lflag = false; + targType2Dflag = false; + + /* + MAPSCRIPT MS = MF[MFselectedRow+1].MS; + + while(1) { + + for (int i = 0;i < 64;i++) { + if(!MS.EGClight.etValue1[i]) break; + NSArray *array1 = [MS.EGClight.etValue1[i] componentsSeparatedByString:@"["]; + NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","]; + + int Tx = [[array2 objectAtIndex:0] intValue]; + int Ty = [[array2 objectAtIndex:1] intValue]; + if(MS.EGClight.endType1 == 3){ + U = UTop; + while (U) { + if(U->x == Tx && U->y == Ty){ + U->targType1L = true; + if(targType1cnt[0] < 0) + targType1cnt[0] = 0; + targType1cnt[0]++; + break; + } + U = U->next; + }U = UTop; + } + if(MS.EGClight.endType1 == 4){ + U = UTop; + while (U) { + if(U->x == Tx && U->y == Ty){ + U->targType2L = true; + if(targType2cnt[0] < 0) + targType2cnt[0] = 0; + targType2cnt[0]++; + break; + } + U = U->next; + }U = UTop; + } + } + for (int i = 0;i < 64;i++) { + if(!MS.EGClight.etValue2[i]) break; + NSArray *array1 = [MS.EGClight.etValue2[i] componentsSeparatedByString:@"["]; + NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","]; + + int Tx = [[array2 objectAtIndex:0] intValue]; + int Ty = [[array2 objectAtIndex:1] intValue]; + + if(MS.EGClight.endType2 == 3){ + U = UTop; + while (U) { + if(U->x == Tx && U->y == Ty){ + U->targType1L = true; + if(targType1cnt[0] < 0) + targType1cnt[0] = 0; + targType1cnt[0]++; + break; + } + U = U->next; + }U = UTop; + } + if(MS.EGClight.endType2 == 4){ + U = UTop; + while (U) { + if(U->x == Tx && U->y == Ty){ + U->targType2L = true; + if(targType2cnt[0] < 0) + targType2cnt[0] = 0; + targType2cnt[0]++; + break; + } + U = U->next; + }U = UTop; + } + } + for (int i = 0;i < 64;i++) { + if(!MS.EGCdark.etValue1[i]) break; + NSArray *array1 = [MS.EGCdark.etValue1[i] componentsSeparatedByString:@"["]; + NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","]; + + int Tx = [[array2 objectAtIndex:0] intValue]; + int Ty = [[array2 objectAtIndex:1] intValue]; + + if(MS.EGCdark.endType1 == 3){ + U = UTop; + while (U) { + if(U->x == Tx && U->y == Ty){ + U->targType1D = true; + if(targType1cnt[1] < 0) + targType1cnt[1] = 0; + targType1cnt[1]++; + break; + } + U = U->next; + }U = UTop; + } + if(MS.EGCdark.endType1 == 4){ + U = UTop; + while (U) { + if(U->x == Tx && U->y == Ty){ + U->targType2D = true; + if(targType2cnt[1] < 0) + targType2cnt[1] = 0; + targType2cnt[1]++; + break; + } + U = U->next; + }U = UTop; + } + } + for (int i = 0;i < 64;i++) { + if(!MS.EGCdark.etValue2[i]) break; + NSArray *array1 = [MS.EGCdark.etValue2[i] componentsSeparatedByString:@"["]; + NSArray *array2 = [[array1 objectAtIndex:1] componentsSeparatedByString:@","]; + + int Tx = [[array2 objectAtIndex:0] intValue]; + int Ty = [[array2 objectAtIndex:1] intValue]; + + if(MS.EGCdark.endType2 == 3){ + U = UTop; + while (U) { + if(U->x == Tx && U->y == Ty){ + U->targType1D = true; + if(targType1cnt[1] < 0) + targType1cnt[1] = 0; + targType1cnt[1]++; + break; + } + U = U->next; + }U = UTop; + } + if(MS.EGCdark.endType2 == 4){ + U = UTop; + while (U) { + if(U->x == Tx && U->y == Ty){ + U->targType2D = true; + if(targType2cnt[1] < 0) + targType2cnt[1] = 0; + targType2cnt[1]++; + break; + } + U = U->next; + }U = UTop; + } + } + break; + } +*/ + + +} -(void)setTargetList{ @@ -4468,6 +4682,52 @@ ahhh:{} } +-(void)initUnitStatusDat{ + U = NULL; + UTop = NULL; + for(int i = 0;i < registerNum;i++){ + if(i == 0){ + U = calloc(1, sizeof(UNIT)); + UTop = U; + } + if(i > 0) + U = U->next; + + U->x = sdd2[datRow].dU[i].x; + U->y = sdd2[datRow].dU[i].y; + U->number = sdd2[datRow].dU[i].number;; + U->chipNumber = sdd2[datRow].dU[i].chipNumber; + U->chipNumberL = sdd2[datRow].dU[i].chipNumberL; + U->C.chipNumb = sdd2[datRow].dU[i].C.chipNumb; + U->CL.chipNumb = sdd2[datRow].dU[i].C.chipNumb; + U->atkRange = 0; + U->dead = sdd2[datRow].dU[i].dead; + + U->team = sdd2[datRow].dU[i].team; + U->CPU = sdd2[datRow].dU[i].CPU; + U->joinArmyFromNext = sdd2[datRow].dU[i].joinArmyFromNext; + U->persuasion = sdd2[datRow].dU[i].persuasion; + + U->ix = sdd2[datRow].dU[i].ix; + U->iy = sdd2[datRow].dU[i].iy; + U->iz = sdd2[datRow].dU[i].iz; + + if(U->chipNumber >= 0) [self SetUnitStatus:U->chipNumber]; + if(U->chipNumberL >= 0) [self SetUnitStatus2:U->chipNumberL]; + + unitTeam[U->x][U->y] = U->team; + unitNum[U->x][U->y] = U->chipNumber; + loadNum[U->x][U->y] = U->chipNumberL; + + U->next = calloc(1, sizeof(UNIT)); + } + + if(U) U->next = NULL; + U = UTop; + +} + + -(void)initUnitStatus{ registerNum = 1; U = NULL; @@ -4555,6 +4815,37 @@ ahhh:{} U = UTop; } +-(void)initBuildStatusDat{ + B = NULL; + BTop = NULL; + for(int i = 0;i < registerNum;i++){ + if(i == 0){ + B = calloc(1, sizeof(BUILD)); + BTop = B; + } + if(i > 0) + B = B->next; + + B->x = sdd2[datRow].dB[i].x; + B->y = sdd2[datRow].dB[i].y; + B->number = sdd2[datRow].dB[i].number; + B->chipNumber = sdd2[datRow].dB[i].chipNumber; + B->makeLv = sdd2[datRow].dB[i].makeLv; + B->dead = sdd2[datRow].dB[i].dead; + + B->C = BC[B->chipNumber]; + + buildTeam[B->x][B->y] = B->team; + buildNum[B->x][B->y] = B->chipNumber; + + B->next = calloc(1, sizeof(BUILD)); + } + if(B) B->next = NULL; + B = BTop; + +} + + -(void)initBuildStatus{ B = NULL; BTop = NULL; @@ -14037,56 +14328,59 @@ SKIP1: wtRdy2 = sdd2[datRow].wtRdy2; wtRdy3 = sdd2[datRow].wtRdy3; - /* - P[0] = sdd.P[0]; - P[1] = sdd.P[1]; - P[2] = sdd.P[2]; - UTop = sdd.UTop; - BTop = sdd.BTop; - - - Uselected = sdd.Uselected; - unitBreak = sdd.unitBreak; - Utarget = sdd.Utarget; - +/* for(int i = 0;i < 1002;i++){ for(int j = 0;j < 1002;j++){ - chipNum[i][j] = sdd.chipNum[i][j]; + chipNum[i][j] = sdd2[datRow].chipNum[i][j]; } } for(int i = 0;i < 1002;i++){ for(int j = 0;j < 1002;j++){ - buildNum[i][j] = sdd.buildNum[i][j]; + buildNum[i][j] = sdd2[datRow].buildNum[i][j]; } } for(int i = 0;i < 1002;i++){ for(int j = 0;j < 1002;j++){ - unitNum[i][j] = sdd.unitNum[i][j]; + unitNum[i][j] = sdd2[datRow].unitNum[i][j]; } } for(int i = 0;i < 1002;i++){ for(int j = 0;j < 1002;j++){ - loadNum[i][j] = sdd.loadNum[i][j]; + loadNum[i][j] = sdd2[datRow].loadNum[i][j]; } } for(int i = 0;i < 1002;i++){ for(int j = 0;j < 1002;j++){ - buildTeam[i][j] = sdd.buildTeam[i][j]; + buildTeam[i][j] = sdd2[datRow].buildTeam[i][j]; } } for(int i = 0;i < 1002;i++){ for(int j = 0;j < 1002;j++){ - unitTeam[i][j] = sdd.unitTeam[i][j]; + unitTeam[i][j] = sdd2[datRow].unitTeam[i][j]; } } +*/ + + /* + P[0] = sdd.P[0]; + P[1] = sdd.P[1]; + P[2] = sdd.P[2]; + UTop = sdd.UTop; + BTop = sdd.BTop; + + + Uselected = sdd.Uselected; + unitBreak = sdd.unitBreak; + Utarget = sdd.Utarget; + + */ - */ } -(void)saveGameDataDat{ @@ -14141,7 +14435,7 @@ SKIP1: - + /* for(int i = 0;i < 1002;i++){ for(int j = 0;j < 1002;j++){ sdd.chipNum[i][j] = chipNum[i][j]; @@ -14177,7 +14471,7 @@ SKIP1: sdd.unitTeam[i][j] = unitTeam[i][j]; } } - + */ U = UTop; int r = 0; diff --git a/Awars III/SaveDataList.m b/Awars III/SaveDataList.m index cf05e5f..0c91ce5 100755 --- a/Awars III/SaveDataList.m +++ b/Awars III/SaveDataList.m @@ -10,18 +10,30 @@ @implementation SaveDataList -(IBAction)loadButton:(id)sender{ - [SDLPanel close]; - storyNumb = sdd.storyNumb; - scenarioNumb = sdd.scenarioNumb; + datFileLoadCompFromTitle = false; + + if(SDLrow < 0) + return; + + datRow = SDLrow; + + sdd.name = [saveListMA[SDLrow] objectForKey:@"name"]; + datFilePath = calloc(255, sizeof(char)); + strcpy(datFilePath, [sdd.name UTF8String]); - MFselectedRow = sdd.MFselectedRow; + [fieldScene loadGameDataDat]; esSceneProc = 0; evActive = true; saveDataLoadedFlag = true; + startES = true; + + datFileLoadCompFromTitle = true; + [NSApp stopModal]; + [SDLPanel close]; } -(IBAction)backButton:(id)sender{ [SDLPanel close]; @@ -66,8 +78,10 @@ SDLrow = (int)[saveListTV clickedRow]; - if(SDLrow < 0) return; - + if(SDLrow < 0) { + [IVsave setImage:nil]; + return; + } NSString *directoryPath; directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent]; @@ -191,9 +205,9 @@ strcpy(datFilePath, [SAV[i] UTF8String]); [fieldScene loadStruct]; datRow++; - }datRow = 0; - - + }datRow = -1; + [saveListAC setSelectionIndex:9999]; + SDLrow = -1; } -(void)saveSaveList{ -- 2.11.0