OSDN Git Service

ver0.631
[awarsiii/AwarsIV.git] / Awars III / EventScene.m
1 //
2 //  EventScene.m
3 //  Awars III
4 //
5 //  Created by Killery on 2013/02/18.
6 //  Copyright (c) 2013年 Killery. All rights reserved.
7 //
8
9 #import "EventScene.h"
10 #import "FieldScene.h"
11
12 @implementation EventScene
13 -(void)awakeFromNib{
14
15 }
16 -(id)init
17 {
18     [super init];
19     if (self) {
20         timer = [NSTimer
21                  scheduledTimerWithTimeInterval:1.0/30
22                  target:self selector:@selector(EventLoopES:)
23                  userInfo:nil repeats:YES
24                  ];
25         dialogLengh = 1;
26         dialogNumber = 1;
27     }
28     return self;
29 }
30
31
32 -(void)EventLoopES:(NSTimer *)timer{
33
34     [self EventFunc];
35 }
36
37
38 -(void)EventFunc{
39     
40     
41     if(!startES) return;
42     ST = NULL;
43     static bool seFlag;
44     
45     if(gameOverFlag2){
46         
47         dialogNumber = 1;
48         
49         startOrEndFlag = false;
50         seFlag = false;
51         startES = false;
52         gameOverFlag2 = false;
53         return;
54         
55     }
56     
57     if(backTitleFlag2){
58         
59         dialogNumber = 1;
60         
61         startOrEndFlag = false;
62         seFlag = false;
63         startES = false;
64         backTitleFlag2 = false;
65         return;
66         
67     }
68     
69     if(startOrEndFlag){
70         if(!seFlag){
71             stringInitFlag = true;
72             StringText *stringText = [[StringText alloc] init];
73             [stringText InitStringList];
74             stringInitFlag = false;
75             seFlag = true;
76         }
77     }
78     
79    int dCount = 0;
80     ST = evSTtop;
81     if(!ST){
82         if(!startOrEndFlag){
83             mapInitFlag = true;
84             
85             [MapViewInst loadMapChip];
86             mapInitFlag = false;
87             [nameTF setStringValue:@""];
88             [dialogTF setStringValue:@""];
89             [faceIV setImage:nil];
90             [wallIV setImage:nil];
91             [fsWindow makeKeyAndOrderFront:nil];
92             [esWindow close];
93             FieldSceneInitFlag = true;
94             EventViewDraw = true;
95             UTop = NULL;
96             if(MF[MFselectedRow+1].MS.battleSetMode){
97                 setBattleModeFlag = true;
98                 NSPoint windowPoint;
99                 windowPoint.x = [esWindow frame].origin.x;
100                 windowPoint.y = [esWindow frame].origin.y;
101                 [bsWindow setFrameOrigin:windowPoint];
102                 [bsWindow makeKeyAndOrderFront:nil];
103             }
104             startOrEndFlag = true;
105             startES = false;
106             return;
107         }else{
108             seFlag = false;
109             startES = false;
110             EventViewDraw = true;
111             startOrEndFlag = false;
112             [nameTF setStringValue:@""];
113             [dialogTF setStringValue:@""];
114             [faceIV setImage:nil];
115             [wallIV setImage:nil];
116             [titleWindow makeKeyAndOrderFront:nil];
117             [esWindow close];
118             return;
119         }
120     }
121     
122     if(jumpFlag){
123         dialogNumber = 1;
124         while(![jumpName isEqualToString:ST->labelName]) {
125             dialogNumber++;
126             ST = ST->next;
127             if(!ST){
128                 break;
129                 dialogNumber -=1;
130             }
131         }
132         dialogNumber--;
133         jumpFlag = false;
134         ST = evSTtop;
135     }
136     
137     while(dialogNumber > dCount) {dCount++;
138         ST = ST->next;
139     }
140
141     int textMax;
142     NSString *text;
143     NSString *tName;
144     
145     static float fiValue = 0;
146     static float foValue = 1.0;
147     static bool fadeFlag;
148     static bool fadeOutRdy;
149     static bool fadeInRdy;
150     static bool omankoFlag;
151     static bool ochinchinFlag;
152     static bool blackGroundFlag;
153     static NSImage *postImageWall;
154     static int cnt = 0;
155     if(cnt == 0){
156         postImageWall = ST->imgWall;
157         cnt++;
158         if(!ST->imgWall){
159             blackGroundFlag = true;
160         }
161     }
162     
163     
164     
165     
166     if(gameOverFlag){
167         
168         dialogNumber = 1;
169         fiValue = 0;
170         foValue = 1.0;
171         fadeFlag = false;
172         fadeOutRdy = false;
173         fadeInRdy = false;
174         omankoFlag = false;
175         ochinchinFlag = false;
176         blackGroundFlag = false;
177         postImageWall = NULL;
178         evActive = false;
179         EventViewDraw = true;
180         startOrEndFlag = false;
181         cnt = 0;
182         seFlag = false;
183         startES = false;
184         return;
185         
186     }
187     
188     if(evActiveEnd){evActiveEnd = false;
189         
190         if(startOrEndFlag){
191             
192             dialogNumber = 1;
193             fiValue = 0;
194             foValue = 1.0;
195             fadeFlag = false;
196             fadeOutRdy = false;
197             fadeInRdy = false;
198             omankoFlag = false;
199             ochinchinFlag = false;
200             blackGroundFlag = false;
201             postImageWall = NULL;
202             evActive = false;
203             
204             startOrEndFlag = false;
205             EventViewDraw = true;
206             cnt = 0;
207             seFlag = false;
208             startES = false;
209             [nameTF setStringValue:@""];
210             [dialogTF setStringValue:@""];
211             [faceIV setImage:nil];
212             [wallIV setImage:nil];
213             [titleWindow makeKeyAndOrderFront:nil];
214             [esWindow close];
215             return;
216         }
217         
218         fadeFlag = false;
219         mapInitFlag = true;
220         [MapViewInst loadMapChip];
221         mapInitFlag = false;
222         [fsWindow makeKeyAndOrderFront:nil];
223         [esWindow close];
224         UTop = NULL;
225         if(MF[MFselectedRow+1].MS.battleSetMode){
226             setBattleModeFlag = true;
227             NSPoint windowPoint;
228             windowPoint.x = [esWindow frame].origin.x;
229             windowPoint.y = [esWindow frame].origin.y;
230             [bsWindow setFrameOrigin:windowPoint];
231             [bsWindow makeKeyAndOrderFront:nil];
232         }
233         dialogNumber = 1;
234         fiValue = 0;
235         foValue = 1.0;
236         fadeFlag = false;
237         fadeOutRdy = false;
238         fadeInRdy = false;
239         omankoFlag = false;
240         ochinchinFlag = false;
241         blackGroundFlag = false;
242         postImageWall = NULL;
243         evActive = true;
244         FieldSceneInitFlag = true;
245         
246         startOrEndFlag = true;
247         cnt = 0;
248         seFlag = false;
249         startES = false;
250         [nameTF setStringValue:@""];
251         [dialogTF setStringValue:@""];
252         [faceIV setImage:nil];
253         [wallIV setImage:nil];
254         //[titleWindow makeKeyAndOrderFront:nil];
255         return;
256     }
257     
258     
259     if(namingFlag){
260         [selectionDialog makeKeyAndOrderFront:nil];
261         return;
262     }
263     
264     if(selectionFlag){
265         [trueSelectionDialog makeKeyAndOrderFront:nil];
266         return;
267     }
268     
269     NSString *oopsString = @"";
270     //任意文字列置換
271     NSArray *oopsArray = [ST->string componentsSeparatedByString:@"$$"];
272     if([oopsArray count] > 1){
273         NVALUE *NVtop = ST->N;
274         while (ST->N) {
275                 if([[oopsArray objectAtIndex:1] isEqualToString:ST->N->key]){
276                     oopsString = [oopsString stringByAppendingString:ST->N->value];
277                 break;
278             }
279             ST->N = ST->N->next;
280         }
281         oopsString = [oopsString stringByAppendingString:[oopsArray objectAtIndex:2]];
282         ST->string = [[NSString stringWithString:oopsString] retain];
283         //NSLog(@"%@", oopsString);
284         ST->N = NVtop;
285     }
286     
287     NSString *omfgString = @"";
288     //任意文字列置換
289     NSArray *omfgArray = [ST->name componentsSeparatedByString:@"$$"];
290     if([omfgArray count] > 1){
291         NVALUE *NVtop = ST->N;
292         while (ST->N) {
293             if([[omfgArray objectAtIndex:1] isEqualToString:ST->N->key] ){
294                 omfgString = [omfgString stringByAppendingString:ST->N->value];
295                 break;
296             }
297             ST->N = ST->N->next;
298         }
299         ST->name = [[NSString stringWithString:omfgString] retain];
300         //NSLog(@"%@", omfgString);
301         ST->N = NVtop;
302     }
303     
304     if(ST->imgWall){
305         blackGroundFlag = false;
306         if(ST->wallFadeIn && fiValue == 0){
307             fadeInRdy = true;
308         }
309         
310         if(foValue == 0){
311             fadeOutRdy = false;
312         }
313         postImageWall = ST->imgWall;
314     }
315     
316     if(evActive && !evActiveEnd){
317         textMax = (int)[ST->string length];
318         text = ST->string;
319         tName = ST->name;
320         [nameTF setStringValue:tName];
321         [dialogTF setStringValue:[text substringToIndex:dialogLengh - 1]];
322         [faceIV setImage:ST->img];
323         [faceIV setImageScaling:NSScaleToFit];
324         [wallIV setImage:ST->imgWall];
325         [wallIV setImageScaling:NSScaleToFit];
326         [backIV setImageScaling:NSScaleToFit];
327         
328         if(ST->iNameWallSort){
329         
330             [self saveWalltoGallery];
331         }
332         
333         if(fadeInRdy && fiValue < 1.0){fadeFlag = true;
334             fiValue += 0.1;
335             if(fiValue > 1.0) fiValue = 1.0;
336             [wallIV setAlphaValue:fiValue];
337             return;
338         }
339         
340         static int pointerCnt = 0;
341         if(dialogLengh < textMax){
342             dialogLengh++;
343             [textPointer setHidden:YES];
344         }else{
345             
346             if(pointerCnt < 5){
347                 pointerCnt++;
348             }
349             
350             if(pointerCnt >= 5){
351             
352                 if([textPointer isHidden]){
353                     [textPointer setHidden:NO];
354                 }else{
355                     [textPointer setHidden:YES];
356                 }
357                 pointerCnt = 0;
358             }
359         }
360         
361         if(ST->next)
362         if(evMouseClicked && dialogLengh == textMax && postImageWall != ST->next->imgWall && ST->wallFadeOut){
363             fadeOutRdy = true;
364             omankoFlag = true;
365         }
366         if(ST->next)
367         if(evMouseClicked && dialogLengh == textMax && postImageWall != ST->next->imgWall && ST->next->wallFadeIn){
368             fadeInRdy = true;
369             ochinchinFlag = true;
370         }
371         
372         if(ST->next)
373         if(evMouseClicked && dialogLengh == textMax && postImageWall != ST->next->imgWall){
374             omankoFlag = true;
375         }
376         
377         if(fadeOutRdy && foValue > 0){fadeFlag = true;
378             
379             foValue -= 0.1;
380             if(foValue < 0) foValue = 0;
381             [wallIV setAlphaValue:foValue];
382             return;
383         }
384         
385         if(!fadeInRdy && !fadeOutRdy && ST->wallChanged){
386             [wallIV setAlphaValue:1.0];
387         }
388         
389         if(omankoFlag){omankoFlag = false;
390             foValue = 1.0;
391         }if(ochinchinFlag){ochinchinFlag = false;
392             fiValue = 0;
393             fadeInRdy = true;
394         }
395         
396         fadeOutRdy = false;
397         
398         if(blackGroundFlag) {
399             [wallIV setAlphaValue:0];
400         }
401         
402         if(evMouseClicked){evMouseClicked = false;//マウスかグリックされたとき
403             
404             if(dialogNumber <= evDialogMax && dialogLengh == [text length]) {//テキストがマックスのとき
405                 dialogNumber++;
406                 dialogLengh = 1;
407                 pointerCnt = 0;
408                 [textPointer setHidden:YES];
409                 
410                 if(ST->jumpName){
411                     jumpFlag = true;
412                     jumpName = [ST->jumpName retain];
413                 }
414                 if(ST->N){
415                     
416                     NSArray *omgArray = [ST->namingName componentsSeparatedByString:@"≠≠"];
417                     if([omgArray count] > 1){
418                     
419                         if(ST->N->title){
420                         namingFlag = true;
421                         namingName = [ST->N->title retain];
422                         }
423                     }
424                 }
425                 
426                 
427                 if(namingFlag && ST->N){
428                     if(ST->N->title)
429                         [selectionDialog setTitle:ST->N->title];
430                     else
431                         [selectionDialog setTitle:@""];
432                     [selectionDialog makeKeyAndOrderFront:nil];
433                     
434                 }
435                 
436                 
437                 if(ST->S){
438                     selectionFlag = true;
439                     Slists = calloc(1, sizeof(SVALUE));
440                     *Slists = *ST->S;
441                     SlistsTop = Slists;
442                     
443                     [BTN1 setTransparent:YES];
444                     [BTN1 setEnabled:NO];
445                     [BTN2 setTransparent:YES];
446                     [BTN2 setEnabled:NO];
447                     [BTN3 setTransparent:YES];
448                     [BTN3 setEnabled:NO];
449                     [BTN4 setTransparent:YES];
450                     [BTN4 setEnabled:NO];
451                     [BTN5 setTransparent:YES];
452                     [BTN5 setEnabled:NO];
453                     [BTN6 setTransparent:YES];
454                     [BTN6 setEnabled:NO];
455                     [BTN7 setTransparent:YES];
456                     [BTN7 setEnabled:NO];
457                     [BTN8 setTransparent:YES];
458                     [BTN8 setEnabled:NO];
459                     [BTN9 setTransparent:YES];
460                     [BTN9 setEnabled:NO];
461                     
462                     SVALUE *STStop = ST->S;
463                     while (1) {
464                         if(ST->S) {
465                             Slists->next = calloc(1, sizeof(SVALUE));
466                             Slists = Slists->next;
467                             *Slists = *ST->S;
468                             
469                             [BTN1 setTitle:ST->S->slct];
470                             [BTN1 setTransparent:NO];
471                             [BTN1 setEnabled:YES];
472                             [trueSelectionDialog setFrame:NSMakeRect([NSScreen mainScreen].frame.size.width/2-200, [NSScreen mainScreen].frame.size.height/2, 400, 80) display:YES];
473                         }ST->S = ST->S->next;
474                         if(!ST->S) break;
475                         if(ST->S) {
476                             Slists->next = calloc(1, sizeof(SVALUE));
477                             Slists = Slists->next;
478                             *Slists = *ST->S;
479                             
480                             [BTN2 setTitle:ST->S->slct];
481                             [BTN2 setTransparent:NO];
482                             [BTN2 setEnabled:YES];
483                             [trueSelectionDialog setFrame:NSMakeRect([NSScreen mainScreen].frame.size.width/2-200, [NSScreen mainScreen].frame.size.height/2, 400, 105) display:YES];
484                         }ST->S = ST->S->next;
485                         if(!ST->S) break;
486                         if(ST->S) {
487                             Slists->next = calloc(1, sizeof(SVALUE));
488                             Slists = Slists->next;
489                             *Slists = *ST->S;
490                             
491                             [BTN3 setTitle:ST->S->slct];
492                             [BTN3 setTransparent:NO];
493                             [BTN3 setEnabled:YES];
494                             [trueSelectionDialog setFrame:NSMakeRect([NSScreen mainScreen].frame.size.width/2-200, [NSScreen mainScreen].frame.size.height/2, 400, 140) display:YES];
495                         }ST->S = ST->S->next;
496                         if(!ST->S) break;
497                         if(ST->S) {
498                             Slists->next = calloc(1, sizeof(SVALUE));
499                             Slists = Slists->next;
500                             *Slists = *ST->S;
501                             
502                             [BTN4 setTitle:ST->S->slct];
503                             [BTN4 setTransparent:NO];
504                             [BTN4 setEnabled:YES];
505                             [trueSelectionDialog setFrame:NSMakeRect([NSScreen mainScreen].frame.size.width/2-200, [NSScreen mainScreen].frame.size.height/2, 400, 155) display:YES];
506                         }ST->S = ST->S->next;
507                         if(!ST->S) break;
508                         if(ST->S) {
509                             Slists->next = calloc(1, sizeof(SVALUE));
510                             Slists = Slists->next;
511                             *Slists = *ST->S;
512                             
513                             [BTN5 setTitle:ST->S->slct];
514                             [BTN5 setTransparent:NO];
515                             [BTN5 setEnabled:YES];
516                             [trueSelectionDialog setFrame:NSMakeRect([NSScreen mainScreen].frame.size.width/2-200, [NSScreen mainScreen].frame.size.height/2, 400, 180) display:YES];
517                         }ST->S = ST->S->next;
518                         if(!ST->S) break;
519                         if(ST->S) {
520                             Slists->next = calloc(1, sizeof(SVALUE));
521                             Slists = Slists->next;
522                             *Slists = *ST->S;
523                             
524                             [BTN6 setTitle:ST->S->slct];
525                             [BTN6 setTransparent:NO];
526                             [BTN6 setEnabled:YES];
527                             [trueSelectionDialog setFrame:NSMakeRect([NSScreen mainScreen].frame.size.width/2-200, [NSScreen mainScreen].frame.size.height/2, 400, 205) display:YES];
528                         }ST->S = ST->S->next;
529                         if(!ST->S) break;
530                         if(ST->S) {
531                             Slists->next = calloc(1, sizeof(SVALUE));
532                             Slists = Slists->next;
533                             *Slists = *ST->S;
534                             
535                             [BTN7 setTitle:ST->S->slct];
536                             [BTN7 setTransparent:NO];
537                             [BTN7 setEnabled:YES];
538                             [trueSelectionDialog setFrame:NSMakeRect([NSScreen mainScreen].frame.size.width/2-200, [NSScreen mainScreen].frame.size.height/2, 400, 230) display:YES];
539                         }ST->S = ST->S->next;
540                         if(!ST->S) break;
541                         if(ST->S) {
542                             Slists->next = calloc(1, sizeof(SVALUE));
543                             Slists = Slists->next;
544                             *Slists = *ST->S;
545                             
546                             [BTN8 setTitle:ST->S->slct];
547                             [BTN8 setTransparent:NO];
548                             [BTN8 setEnabled:YES];
549                             [trueSelectionDialog setFrame:NSMakeRect([NSScreen mainScreen].frame.size.width/2-200, [NSScreen mainScreen].frame.size.height/2, 400, 255) display:YES];
550                         }ST->S = ST->S->next;
551                         if(!ST->S) break;
552                         if(ST->S) {
553                             Slists->next = calloc(1, sizeof(SVALUE));
554                             Slists = Slists->next;
555                             *Slists = *ST->S;
556                             
557                             [BTN9 setTitle:ST->S->slct];
558                             [BTN9 setTransparent:NO];
559                             [BTN9 setEnabled:YES];
560                             [trueSelectionDialog setFrame:NSMakeRect([NSScreen mainScreen].frame.size.width/2-200, [NSScreen mainScreen].frame.size.height/2, 400, 280) display:YES];
561                         }ST->S = ST->S->next;
562                         break;
563                     }ST->S = STStop;
564                     [trueSelectionDialog makeKeyAndOrderFront:nil];
565                     
566                     Slists = SlistsTop;
567                     
568                 }
569                 
570             }else if(dialogLengh != [text length]){//テキストが途中のとき
571                 dialogLengh = (int)[text length];
572             }
573         }
574         
575         if(dialogNumber > evDialogMax){
576             evActive = false;
577             evActiveEnd = true;
578             evInitMap = true;
579         }
580     }
581 }
582
583 -(void)saveWalltoGallery{
584
585     NSString *directoryPath;
586     
587     directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
588     [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
589     
590     NSString *pathDATA = @"data/StringList/preset.txt";
591     
592     NSString *data = @"";
593     
594     data = [NSString stringWithContentsOfFile:pathDATA encoding:NSUTF8StringEncoding error:nil];
595     
596     NSArray *dataArray = [data componentsSeparatedByString:@"\n"];
597     for(int i = 0;i < [dataArray count];i++){
598         NSArray *item = [[dataArray objectAtIndex:i] componentsSeparatedByString:@","];
599         if([[item objectAtIndex:0] isEqualToString:ST->iNameWall]){
600             return;
601         }
602     }
603     data = [[data stringByAppendingFormat:@"%@,%@\n", ST->iNameWall, ST->iNameWallSort] retain];
604     
605     [data writeToFile:pathDATA atomically:YES encoding:NSUTF8StringEncoding error:nil];
606     
607 }
608
609
610 -(IBAction)selectionSubmit:(id)sender{
611     
612     if(ST->N)
613     ST->N->value = [[NSString stringWithString:[selectionTF stringValue]] retain];
614     
615     namingFlag = false;
616     [selectionDialog close];
617 }
618
619 -(IBAction)btn1:(id)sender{
620
621     jumpName = [[NSString stringWithString:Slists->jump] retain];
622     jumpFlag = true;
623     selectionFlag = false;
624     [trueSelectionDialog close];
625     
626 }
627 -(IBAction)btn2:(id)sender{
628     jumpName = [[NSString stringWithString:Slists->jump] retain];
629     jumpFlag = true;
630     selectionFlag = false;
631     [trueSelectionDialog close];
632 }
633 -(IBAction)btn3:(id)sender{
634     jumpName = [[NSString stringWithString:Slists->jump] retain];
635     jumpFlag = true;
636     selectionFlag = false;
637     [trueSelectionDialog close];
638 }
639 -(IBAction)btn4:(id)sender{
640     jumpName = [[NSString stringWithString:Slists->jump] retain];
641     jumpFlag = true;
642     selectionFlag = false;
643     [trueSelectionDialog close];
644 }
645 -(IBAction)btn5:(id)sender{
646     jumpName = [[NSString stringWithString:Slists->jump] retain];
647     jumpFlag = true;
648     selectionFlag = false;
649     [trueSelectionDialog close];
650 }
651 -(IBAction)btn6:(id)sender{
652     jumpName = [[NSString stringWithString:Slists->jump] retain];
653     jumpFlag = true;
654     selectionFlag = false;
655     [trueSelectionDialog close];
656 }
657 -(IBAction)btn7:(id)sender{
658     jumpName = [[NSString stringWithString:Slists->jump] retain];
659     jumpFlag = true;
660     selectionFlag = false;
661     [trueSelectionDialog close];
662 }
663 -(IBAction)btn8:(id)sender{
664     jumpName = [[NSString stringWithString:Slists->jump] retain];
665     jumpFlag = true;
666     selectionFlag = false;
667     [trueSelectionDialog close];
668 }
669 -(IBAction)btn9:(id)sender{
670     jumpName = [[NSString stringWithString:Slists->jump] retain];
671     jumpFlag = true;
672     selectionFlag = false;
673     [trueSelectionDialog close];
674 }
675 @end