OSDN Git Service

命中表示修正
[awarsiii/AwarsIV.git] / Awars III / BuildChipList.m
1 //
2 //  BuildChipList.m
3 //  Awars III
4 //
5 //  Created by Killery on 2012/12/16.
6 //  Copyright (c) 2012年 Killery. All rights reserved.
7 //
8
9 #import "BuildChipList.h"
10
11 @implementation BuildChipList
12 - (void)dealloc
13 {
14     [super dealloc];
15 }
16
17 - (NSMutableArray*)buildChipListMA{
18     return buildChipListMA;
19 }
20 -(IBAction)submit:(id)sender{
21     [BCLPanel close];
22 }
23
24 -(void)awakeFromNib{
25     [buildChipListTV setTarget:self];
26     [buildChipListTV setDoubleAction:@selector(doubleClickBCL:)];
27     
28     [researchListTV setTarget:self];
29     [researchListTV setAction:@selector(clickRL:)];
30     
31     researchListMA = [NSMutableArray new];
32     unitListPU = [NSMutableArray new];
33 }
34 -(id)init{
35     [super init];
36     
37     if (self) {
38         [self initFileDirectory];
39         [self initBuildChipList];
40         BuildChipMax = (int)chipNumb/25+1;
41         Rtop = NULL;
42     }   
43     
44     return self;
45 }
46 NSInteger clickIndex;
47 -(void)doubleClickBCL:(id)sender{
48     clickIndex = [buildChipListTV clickedRow];
49     if( clickIndex>=0 ){
50         
51         [TFname setStringValue:BC[clickIndex].name];
52         [TFnameR setStringValue:BC[clickIndex].nameR];
53         [TFnameID setStringValue:BC[clickIndex].nameID];
54         [TFfix setIntValue:BC[clickIndex].dmgfix];
55         [TFWT setIntValue:BC[clickIndex].S_M.WT];
56         [TFDLv setIntValue:BC[clickIndex].defLv];
57         [TFHP setIntValue:BC[clickIndex].S_M.HP];
58         [TFRHP setIntValue:BC[clickIndex].recHP];
59         [TFRMP setIntValue:BC[clickIndex].recMP];
60         [TFREN setIntValue:BC[clickIndex].recEN];
61         [TFRHPL setIntValue:BC[clickIndex].recHPL];
62         [TFcostS setIntValue:BC[clickIndex].Csupply];
63         [TFcostF setIntValue:BC[clickIndex].Cfood];
64         [TFcostM setIntValue:BC[clickIndex].Cmoney];
65         [TFcostSn setIntValue:BC[clickIndex].CsupplyNext];
66         [TFcostFn setIntValue:BC[clickIndex].CfoodNext];
67         [TFcostMn setIntValue:BC[clickIndex].CmoneyNext];
68         [TFcostSe setIntValue:BC[clickIndex].Esupply];
69         [TFcostFe setIntValue:BC[clickIndex].Efood];
70         [TFcostMe setIntValue:BC[clickIndex].Emoney];
71         [TFWTE setIntValue:BC[clickIndex].S_M.WTE];
72         [TFWTN setIntValue:BC[clickIndex].S_M.WTN];
73         //[BC[clickIndex].img setFlipped:NO];
74         [IVimg setImage:BC[clickIndex].img];
75         [IVimgBig setImage:BC[clickIndex].imgb];
76         [PUPtype selectItemAtIndex:BC[clickIndex].type];
77         
78         [BTNinroads setIntValue:BC[clickIndex].inroadsFlag];
79         [BTNcapture setIntValue:BC[clickIndex].capture];
80         
81         //[PUPlinkD selectItemAtIndex:BC[clickIndex].linkDest];
82         //[PUPlinkN selectItemAtIndex:BC[clickIndex].linkNext];
83     }
84     
85     
86     BCLDpoint.x = [BCLPanel frame].origin.x + 50;
87     BCLDpoint.y = [BCLPanel frame].origin.y + 100;
88     [BCLDetailPanel setFrameOrigin:BCLDpoint];
89      [BCLDetailPanel makeKeyAndOrderFront:nil];
90 }
91
92 -(void)clickRL:(id)sender{
93     
94     RLrow = (int)[researchListTV clickedRow];
95     
96 }
97
98 -(IBAction)unitResearchBCL:(id)sender{
99     
100     [unitListPU removeAllObjects];
101     
102     for(int i = 0;i < UCN;i++){
103         [unitListPU addObject:UC[i].nameRecognition];
104     }
105     [PUunit addItemsWithTitles:unitListPU];
106     
107     [self initResearchList];
108     [BTNguild setState:BC[clickIndex].GuildFlag];
109     
110     BCLDpoint.x = [BCLDetailPanel frame].origin.x + 0;
111     BCLDpoint.y = [BCLDetailPanel frame].origin.y + 0;
112     [BCLUnitResearchPanel setFrameOrigin:BCLDpoint];
113     [BCLUnitResearchPanel makeKeyAndOrderFront:nil];
114 }
115 -(IBAction)unitResearchCloseBCL:(id)sender{
116     BC[clickIndex].GuildFlag = [BTNguild state];
117     [BCLUnitResearchPanel close];
118 }
119
120 -(IBAction)saveBCL:(id)sender{
121     BC[clickIndex].name = [[TFname stringValue] retain];
122     BC[clickIndex].nameR = [[TFnameR stringValue] retain];
123     BC[clickIndex].nameID = [[TFnameID stringValue] retain];
124     BC[clickIndex].S_M.WT = [TFWT intValue];
125     BC[clickIndex].dmgfix = [TFfix intValue];
126     BC[clickIndex].defLv = [TFDLv intValue];
127     BC[clickIndex].S_M.HP = [TFHP intValue];
128     BC[clickIndex].recHP = [TFRHP intValue];
129     BC[clickIndex].recMP = [TFRMP intValue];
130     BC[clickIndex].recEN = [TFREN intValue];
131     BC[clickIndex].recHPL = [TFRHPL intValue];
132     BC[clickIndex].Csupply = [TFcostS intValue];
133     BC[clickIndex].Cfood = [TFcostF intValue];
134     BC[clickIndex].Cmoney = [TFcostM intValue];
135     BC[clickIndex].CsupplyNext = [TFcostSn intValue];
136     BC[clickIndex].CfoodNext = [TFcostFn intValue];
137     BC[clickIndex].CmoneyNext = [TFcostMn intValue];
138     BC[clickIndex].Esupply = [TFcostSe intValue];
139     BC[clickIndex].Efood = [TFcostFe intValue];
140     BC[clickIndex].Emoney = [TFcostMe intValue];
141     BC[clickIndex].S_M.WTE = [TFWTE intValue];
142     BC[clickIndex].S_M.WTN = [TFWTN intValue];
143     BC[clickIndex].type = (int)[PUPtype indexOfSelectedItem];
144     BC[clickIndex].img = [[IVimg image] retain];
145     BC[clickIndex].imgb = [[IVimgBig image] retain];
146     
147     BC[clickIndex].inroadsFlag = [BTNinroads intValue];
148     BC[clickIndex].capture = [BTNcapture intValue];
149     
150     [buildChipListAC setValue:[NSString stringWithFormat:@"%@", BC[clickIndex].name] forKeyPath:@"selection.name"];
151     [buildChipListAC setValue:[NSString stringWithFormat:@"%d", BC[clickIndex].dmgfix] forKeyPath:@"selection.dmgfix"];
152     [buildChipListAC setValue:[NSString stringWithFormat:@"%d", BC[clickIndex].S_M.HP] forKeyPath:@"selection.HP"];
153     [buildChipListAC setValue:[NSString stringWithFormat:@"%d", BC[clickIndex].defLv] forKeyPath:@"selection.defLv"];
154     [buildChipListAC setValue:[NSString stringWithFormat:@"%d", BC[clickIndex].S_M.WT] forKeyPath:@"selection.WT"];
155     [buildChipListAC setValue:BC[clickIndex].img forKeyPath:@"selection.img"];
156     [buildChipListAC setValue:BC[clickIndex].imgb forKeyPath:@"selection.imgBig"];
157     
158     [self saveData];
159     [BCLDetailPanel close];
160 }
161 -(IBAction)cancelBCL:(id)sender{
162     [BCLDetailPanel close];
163 }
164
165 -(IBAction)optionBCL:(id)sender{
166     
167     BCLDpoint.x = [BCLDetailPanel frame].origin.x + 100;
168     BCLDpoint.y = [BCLDetailPanel frame].origin.y + 0;
169     [BCLDetailOptionPanel setFrameOrigin:BCLDpoint];
170     [BCLDetailOptionPanel makeKeyAndOrderFront:nil];
171 }
172
173 -(IBAction)optionCloseBCL:(id)sender{
174     [BCLDetailOptionPanel close];
175 }
176
177 -(void)initFileDirectory{
178     NSString *directoryPath;
179     
180     directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
181     [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
182     
183     char *cwd;
184     cwd = getcwd(NULL, 0);
185     
186     
187     NSData *InitialData = [NSData dataWithContentsOfFile:@"data/BuildChip/preset.txt"];
188     NSString *pathBC = @"data/BuildChip/img";
189     NSString *pathDATA2 = @"data/BuildChip/preset.txt";
190     NSString *pathBCP = @"data/BuildChip/preset.txt";
191     NSString *fileData = nil;
192     
193     if(!InitialData){
194         chipNumb = 23;
195         [[NSFileManager defaultManager] createDirectoryAtPath:pathBC withIntermediateDirectories:YES attributes:nil error:nil];
196         [[NSFileManager defaultManager] createFileAtPath:pathDATA2 contents:nil attributes:nil];
197
198         [[NSFileManager defaultManager] createFileAtPath:pathBCP contents:nil attributes:nil];
199         
200         //NSString *data0 = @"名前\n名前R\nID\nHP,WT,dmgfix,defLv,rcHP,rcMP,rcEN\nS,F,M,Sn,Fn,Mn,Se,Fe,Me,WTe,WTn\ninRoads,capture,type,linkD,linkN\img,imgb\n----\n1,0\n1,2\n1,3\n----";
201         
202         NSString *data1 = @"集落\n集落(一般)\nb1\n2000,2000,20,2,30,30,0\n0,500,0,500,500,0,100,100,0,1000,1000\n0,1,0,id,id\nbc1.png,bcb1.png\n----\n1,0,1\n1,2,1\n1,3,1\n----";
203         NSString *data2 = @"村\n村(一般)\nb2\n3000,2000,30,2,30,30,0\n500,1000,0,500,500,500,100,100,100,1000,1000\n0,1,0,id,id\nbc2.png,bcb2.png\n----\n1,0,1\n1,1,1\n1,2,1\n1,3,1\n1,4,1\n1,5,1\n1,6,1\n----";
204         NSString *data3 = @"町\n町(一般)\nb3\n5000,2000,30,3,30,30,0\n2000,2000,1000,500,500,500,100,100,100,1000,1000\n0,1,0,id,id\nbc3.png,bcb3.png\n----\n1,0,1\n1,1,1\n1,2,1\n1,3,1\n1,4,1\n1,5,1\n1,6,1\n1,7,1\n1,8,1\n1,10,1\n1,11,1\n1,12,1\n1,13,1\n1,14,1\n1,15,1\n1,16,1\n1,17,1\n----";
205         NSString *data4 = @"街\n街(一般)\nb4\n8000,2000,30,3,30,30,0\n2500,2500,2500,500,500,500,100,100,100,1000,1000\n0,1,0,id,id\nbc4.png,bcb4.png\n----\n1,0,1\n1,1,1\n1,2,1\n1,3,1\n1,4,1\n1,5,1\n1,6,1\n1,7,1\n1,8,1\n1,9,1\n1,11,1\n1,12,1\n1,13,1\n1,16,1\n1,17,1\n1,18,1\n1,19,1\n1,22,1\n1,23,1\n1,24,1\n1,25,1\n1,26,1\n----";
206         NSString *data5 = @"城\n城(一般)\nb5\n9000,2000,30,4,30,30,0\n3000,3000,4000,500,500,500,100,100,100,1000,1000\n0,1,0,id,id\nbc5.png,bcb5.png\n----\n1,7,1\n1,18,1\n1,19,1\n1,20,1\n1,21,1\n1,28,1\n1,29,1\n1,34,1\n1,35,1\n1,36,1\n1,37,1\n----";
207         NSString *data6 = @"都市\n都市(一般)\nb6\n15000,2000,30,5,30,30,0\n5000,5000,5000,500,500,500,100,100,100,1000,1000\n0,1,0,id,id\nbc6.png,bcb6.png\n----\n1,0,1\n1,1,1\n1,2,1\n1,3,1\n1,4,1\n1,5,1\n1,6,1\n1,7,1\n1,8,1\n1,9,1\n1,10,1\n1,11,1\n1,12,1\n1,13,1\n1,14,1\n1,15,1\n1,16,1\n1,17,1\n1,18,1\n1,19,1\n1,20,1\n1,21,1\n1,22,1\n1,23,1\n1,24,1\n1,25,1\n1,26,1\n1,27,1\n1,28,1\n1,29,1\n1,30,1\n1,31,1\n1,32,1\n1,33,1\n1,38,1\n----";
208         NSString *data7 = @"首都\n首都(一般)\nb7\n20000,2000,30,5,30,30,0\n10000,10000,15000,500,500,500,100,100,100,1000,1000\n0,1,0,id,id\nbc7.png,bcb7.png\n----\n1,0,1\n1,16,1\n1,18,1\n1,19,1\n1,20,1\n1,21,1\n1,22,1\n1,23,1\n1,24,1\n1,25,1\n1,26,1\n1,27,1\n1,28,1\n1,29,1\n1,30,1\n1,31,1\n1,32,1\n1,33,1\n1,34,1\n1,35,1\n1,36,1\n1,37,1\n1,38,1\n1,39,1\n1,40,1\n1,41,1\n1,42,1\n----";
209         NSString *data8 = @"町の中心\n町の中心(一般)\nb8\n5000,2000,30,4,30,30,0\n2000,1000,500,500,500,500,100,100,100,1000,1000\n0,1,0,id,id\nbc8.png,bcb8.png\n----\n1,0,1\n1,43,1\n----";
210         NSString *data9 = @"城壁\n城壁(一般)\nb9\n2500,2000,30,5,30,30,0\n500,500,0,0,0,0,0,0,0,0,0\n0,0,0,id,id\nbc9.png,bcb9.png\n----\n----";
211         NSString *data10 = @"瓦礫\n瓦礫(一般)\nb10\n1000,2000,30,5,30,30,0\n500,500,0,0,0,0,0,0,0,0,0\n0,0,0,id,id\nbc10.png,bcb10.png\n----\n----";
212         NSString *data11 = @"工場\n工場(一般)\nb11\n1600,2000,30,5,30,30,0\n500,500,0,0,0,0,0,0,0,0,0\n0,1,0,id,id\nbc11.png,bcb11.png\n----\n----";
213         NSString *data12 = @"港\n港(一般)\nb12\n1500,2000,30,5,30,30,0\n500,500,0,0,0,0,0,0,0,0,0\n0,1,2,id,id\nbc12.png,bcb12.png\n----\n----";
214         NSString *data13 = @"空港\n空港(一般)\nb13\n1800,2000,30,5,30,30,0\n500,500,0,0,0,0,0,0,0,0,0\n0,1,0,id,id\nbc13.png,bcb13.png\n----\n----";
215         NSString *data14 = @"学校\n学校(一般)\nb14\n1500,2000,30,5,30,30,0\n500,500,0,0,0,0,0,0,0,0,0\n0,1,0,id,id\nbc14.png,bcb14.png\n----\n----";
216         NSString *data15 = @"病院\n病院(一般)\nb15\n2000,2000,30,5,30,30,0\n500,500,0,0,0,0,0,0,0,0,0\n0,1,0,id,id\nbc15.png,bcb15.png\n----\n----";
217         NSString *data16 = @"保安所\n保安所(一般)\nb16\n2000,2000,30,5,30,30,0\n500,500,0,0,0,0,0,0,0,0,0\n0,1,0,id,id\nbc16.png,bcb16.png\n----\n----";
218         NSString *data17 = @"研究所\n研究所(一般)\nb17\n2400,2000,30,5,30,30,0\n500,500,0,0,0,0,0,0,0,0,0\n0,1,0,id,id\nbc17.png,bcb17.png\n----\n----";
219         NSString *data18 = @"統制機構\n統制機構(一般)\nb18\n5000,2000,30,5,30,30,0\n500,500,0,0,0,0,0,0,0,0,0\n0,1,0,id,id\nbc18.png,bcb18.png\n----\n----";
220         NSString *data19 = @"魔物の巣\n魔物の巣(一般)\nb19\n3000,2000,30,5,30,30,0\n500,500,0,0,0,0,0,0,0,0,0\n0,1,0,id,id\nbc19.png,bcb19.png\n----\n----";
221         NSString *data20 = @"魔法陣\n魔法陣(一般)\nb20\n1000,2000,30,5,30,30,0\n500,500,0,0,0,0,0,0,0,0,0\n0,1,0,id,id\nbc20.png,bcb20.png\n----\n----";
222         NSString *data21 = @"伐採所\n伐採所(一般)\nb21\n1000,1000,20,2,0,0,0\n200,0,0,0,0,0,50,0,0,0,0\n0,1,1,id,id\nbc21.png,bcb21.png\n----\n----";
223         NSString *data22 = @"農家\n農家(一般)\nb22\n1000,1000,20,2,0,0,0\n300,0,0,0,0,0,0,50,0,0,0\n0,1,0,id,id\nbc22.png,bcb22.png\n----\n----";
224         NSString *data23 = @"市場\n市場(一般)\nb23\n1000,1000,20,2,0,0,0\n400,0,0,0,0,0,0,0,50,0,0\n0,1,0,id,id\nbc23.png,bcb23.png\n----\n----";
225         
226         for (int i=0; i<chipNumb; i++) {
227         NSString *fdata = @"data/BuildChip/BCdata";
228         
229         fdata = [fdata stringByAppendingFormat:@"%d.txt", i+1];
230             
231             switch (i) {
232                 case 0:
233                     [data1 writeToFile:fdata atomically:YES encoding:NSUTF8StringEncoding error:nil];
234                     break;
235                 case 1:
236                     [data2 writeToFile:fdata atomically:YES encoding:NSUTF8StringEncoding error:nil];
237                     break;
238                 case 2:
239                     [data3 writeToFile:fdata atomically:YES encoding:NSUTF8StringEncoding error:nil];
240                     break;
241                 case 3:
242                     [data4 writeToFile:fdata atomically:YES encoding:NSUTF8StringEncoding error:nil];
243                     break;
244                 case 4:
245                     [data5 writeToFile:fdata atomically:YES encoding:NSUTF8StringEncoding error:nil];
246                     break;
247                 case 5:
248                     [data6 writeToFile:fdata atomically:YES encoding:NSUTF8StringEncoding error:nil];
249                     break;
250                 case 6:
251                     [data7 writeToFile:fdata atomically:YES encoding:NSUTF8StringEncoding error:nil];
252                     break;
253                 case 7:
254                     [data8 writeToFile:fdata atomically:YES encoding:NSUTF8StringEncoding error:nil];
255                     break;
256                 case 8:
257                     [data9 writeToFile:fdata atomically:YES encoding:NSUTF8StringEncoding error:nil];
258                     break;
259                 case 9:
260                     [data10 writeToFile:fdata atomically:YES encoding:NSUTF8StringEncoding error:nil];
261                     break;
262                 case 10:
263                     [data11 writeToFile:fdata atomically:YES encoding:NSUTF8StringEncoding error:nil];
264                     break;
265                 case 11:
266                     [data12 writeToFile:fdata atomically:YES encoding:NSUTF8StringEncoding error:nil];
267                     break;
268                 case 12:
269                     [data13 writeToFile:fdata atomically:YES encoding:NSUTF8StringEncoding error:nil];
270                     break;
271                 case 13:
272                     [data14 writeToFile:fdata atomically:YES encoding:NSUTF8StringEncoding error:nil];
273                     break;
274                 case 14:
275                     [data15 writeToFile:fdata atomically:YES encoding:NSUTF8StringEncoding error:nil];
276                     break;
277                 case 15:
278                     [data16 writeToFile:fdata atomically:YES encoding:NSUTF8StringEncoding error:nil];
279                     break;
280                 case 16:
281                     [data17 writeToFile:fdata atomically:YES encoding:NSUTF8StringEncoding error:nil];
282                     break;
283                 case 17:
284                     [data18 writeToFile:fdata atomically:YES encoding:NSUTF8StringEncoding error:nil];
285                     break;
286                 case 18:
287                     [data19 writeToFile:fdata atomically:YES encoding:NSUTF8StringEncoding error:nil];
288                     break;
289                 case 19:
290                     [data20 writeToFile:fdata atomically:YES encoding:NSUTF8StringEncoding error:nil];
291                     break;
292                 case 20:
293                     [data21 writeToFile:fdata atomically:YES encoding:NSUTF8StringEncoding error:nil];
294                     break;
295                 case 21:
296                     [data22 writeToFile:fdata atomically:YES encoding:NSUTF8StringEncoding error:nil];
297                     break;
298                 case 22:
299                     [data23 writeToFile:fdata atomically:YES encoding:NSUTF8StringEncoding error:nil];
300                     break;
301
302                 default:
303                     break;
304             }
305         
306         }
307         
308         NSString *fileData = @"";
309         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", (int)chipNumb]] stringByAppendingString:@"\n"];
310         
311         NSString *path = @"data/BuildChip/preset.txt";
312         [fileData writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];
313     }
314     
315     if(InitialData){
316         NSString *fileData = @"";
317         NSString *path = @"data/BuildChip/preset.txt";
318         fileData = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
319         fileDataArray = [fileData componentsSeparatedByString:@"\n"];
320         
321         chipNumb = [[fileDataArray objectAtIndex:0] intValue];
322     }
323     
324     for (int j=0; j<chipNumb; j++) {
325         NSString *fdata = @"data/BuildChip/BCdata";
326         
327         fdata = [fdata stringByAppendingFormat:@"%d.txt", j+1];
328         
329         fileData = [NSString stringWithContentsOfFile:fdata encoding:NSUTF8StringEncoding error:nil];
330         fileDataArray = [fileData componentsSeparatedByString:@"\n"];
331     
332             BC[j].chipNumb = j;
333         
334             BC[j].name = [[fileDataArray objectAtIndex:0] retain];
335             BC[j].nameR = [[fileDataArray objectAtIndex:1] retain];
336             BC[j].nameID = [[fileDataArray objectAtIndex:2] retain];
337         
338             NSArray *items = [[fileDataArray objectAtIndex:3] componentsSeparatedByString:@","];
339         
340             BC[j].S_M.HP = [[items objectAtIndex:0] intValue];
341             BC[j].S_M.WT = [[items objectAtIndex:1] intValue];
342             BC[j].dmgfix = [[items objectAtIndex:2] intValue];
343             BC[j].defLv = [[items objectAtIndex:3] intValue];
344             BC[j].recHP = [[items objectAtIndex:4] intValue];
345             BC[j].recMP = [[items objectAtIndex:5] intValue];
346             BC[j].recEN = [[items objectAtIndex:6] intValue];
347             if([items count] > 7) BC[j].recHPL = [[items objectAtIndex:7] intValue];
348             
349             items = [[fileDataArray objectAtIndex:4] componentsSeparatedByString:@","];
350             
351             BC[j].Csupply = [[items objectAtIndex:0] intValue];
352             BC[j].Cfood = [[items objectAtIndex:1] intValue];
353             BC[j].Cmoney = [[items objectAtIndex:2] intValue];
354             BC[j].CsupplyNext = [[items objectAtIndex:3] intValue];
355             BC[j].CfoodNext = [[items objectAtIndex:4] intValue];
356             BC[j].CmoneyNext = [[items objectAtIndex:5] intValue];
357             BC[j].Esupply = [[items objectAtIndex:6] intValue];
358             BC[j].Efood = [[items objectAtIndex:7] intValue];
359             BC[j].Emoney = [[items objectAtIndex:8] intValue];
360             BC[j].S_M.WTE = [[items objectAtIndex:9] intValue];
361             BC[j].S_M.WTN = [[items objectAtIndex:10] intValue];
362             
363             items = [[fileDataArray objectAtIndex:5] componentsSeparatedByString:@","];
364             
365             BC[j].inroadsFlag = [[items objectAtIndex:0] intValue];
366             BC[j].capture = [[items objectAtIndex:1] intValue];
367             BC[j].type = [[items objectAtIndex:2] intValue];
368             BC[j].linkDest = [[items objectAtIndex:3] retain];
369             BC[j].linkNext = [[items objectAtIndex:4] retain];
370             if([items count] > 5) BC[j].GuildFlag = [[items objectAtIndex:5] intValue];
371             
372             items = [[fileDataArray objectAtIndex:6] componentsSeparatedByString:@","];
373             
374             BC[j].iName = [[items objectAtIndex:0] retain];
375             BC[j].iNameb = [[items objectAtIndex:1] retain];
376         
377             //NSLog(@"iName = %@\n", BC[j].iName);
378         
379             NSString *imgName = @"bc";
380             imgName = [imgName stringByAppendingFormat:@"%d", j+1];
381             BC[j].img = [[NSImage imageNamed:imgName] retain];
382             
383             imgName = [NSString stringWithFormat:@"bcb"];
384             imgName = [imgName stringByAppendingFormat:@"%d", j+1];
385             BC[j].imgb = [[NSImage imageNamed:imgName] retain];
386             
387             
388             NSString *imagePath = @"data/BuildChip/img/bc";
389             imagePath = [imagePath stringByAppendingFormat:@"%d", j+1];
390             NSData *imgData = [NSData dataWithContentsOfFile:imagePath];
391             
392             if(imgData)
393                 BC[j].img = [[[NSImage alloc] initWithData:[[NSFileHandle fileHandleForReadingAtPath:imagePath] readDataToEndOfFile]] retain];
394             
395             imagePath = [NSString stringWithFormat:@"data/BuildChip/img/bcb"];
396             imagePath = [imagePath stringByAppendingFormat:@"%d", j+1];
397             imgData = [NSData dataWithContentsOfFile:imagePath];
398             
399             if(imgData)
400                 BC[j].imgb = [[[NSImage alloc] initWithData:[[NSFileHandle fileHandleForReadingAtPath:imagePath] readDataToEndOfFile]] retain];
401             
402             //items = [[fileDataArray objectAtIndex:7] componentsSeparatedByString:@","];
403             int omanko = 0;
404             for(int k = 8;k < [fileDataArray count];k++){
405                 NSString *str = [fileDataArray objectAtIndex:k];
406                 NSRange rangeSearch;
407                 NSArray *rangeArray;
408                 static int cnt = 0;
409                 rangeSearch = [str rangeOfString:@"----"];
410                 rangeArray = [str componentsSeparatedByString:@","];
411                 
412                 if (rangeSearch.location != NSNotFound) {
413                     cnt = 0;
414                     //UNITCHIP *UCR = Rtop->U;
415                     if(omanko != 0) BC[j].R = Rtop;
416                     break;
417                 
418                 }else{
419                     if(cnt == 0) {
420                         BC[j].R = (RESEARCH*)malloc(sizeof(RESEARCH));
421                     }
422                     BC[j].R->type = [[rangeArray objectAtIndex:0] intValue];
423                     BC[j].R->numb = [[rangeArray objectAtIndex:1] intValue];
424                     BC[j].R->Lv = [[rangeArray objectAtIndex:2] intValue];
425                     if([rangeArray count] > 3)
426                         BC[j].R->UCLflag = [[rangeArray objectAtIndex:3] intValue];
427                     
428                     if(BC[j].R->type == 1) {
429                         BC[j].R->U = &UC[BC[j].R->numb];
430                         BC[j].R->R = NULL;
431                         BC[j].R->O = NULL;
432                     }
433                     if(BC[j].R->type == 2){
434                         BC[j].R->U = NULL;
435                         BC[j].R->R = NULL;
436                         BC[j].R->O = NULL;
437                     }
438                     if(BC[j].R->type == 3){
439                         BC[j].R->U = NULL;
440                         BC[j].R->R = NULL;
441                         BC[j].R->O = NULL;
442                     }
443                     
444                     BC[j].R->next = (RESEARCH*)malloc(sizeof(RESEARCH));
445                     if(cnt == 0) Rtop = BC[j].R;
446                     cnt++;
447                     NSString *str2 = [fileDataArray objectAtIndex:k+1];
448                     NSRange rangeSearch2 = [str2 rangeOfString:@"----"];
449                     if(rangeSearch2.location != NSNotFound){
450                         BC[j].R->next = NULL;
451                     }else{
452                         BC[j].R = BC[j].R->next;
453                     }
454                 }
455                 omanko++;
456             }
457         BC[j].S_M.name = [BC[j].name retain];
458         BC[j].S_C = BC[j].S_M;
459     }
460     
461     
462     
463     BuildChipNum = (int)chipNumb;
464
465 }
466
467 -(void)initBuildChipList{
468
469     
470     buildChipListMA = [NSMutableArray new];
471     
472     
473     
474     
475     for(int i = 0;i < chipNumb;i++){
476         NSMutableDictionary* dict = [NSMutableDictionary new];
477         
478         
479         if(!BC[i].nameID){
480             BC[i].name = [NSString stringWithFormat:@"新規建物"];
481             BC[i].name = [BC[i].name stringByAppendingFormat:@"%d",i+1];
482             BC[i].nameID = @"bc";
483             BC[i].nameID = [BC[i].nameID stringByAppendingFormat:@"%d",i+1];
484             BC[i].nameR = @"新規建物";
485             BC[i].nameR = [BC[i].nameR stringByAppendingFormat:@"%d",i+1];
486             BC[i].iName = @"bc";
487             BC[i].iName = [BC[i].iName stringByAppendingFormat:@"%d",i+1];
488             BC[i].iNameb = @"bcb";
489             BC[i].iNameb = [BC[i].iNameb stringByAppendingFormat:@"%d",i+1];
490         }
491         
492         [dict setValue:BC[i].img forKey:@"img"];
493         [dict setValue:BC[i].imgb forKey:@"imgBig"];
494         [dict setValue:[NSString stringWithFormat:@"%@", BC[i].name] forKey:@"name"];
495         [dict setValue:[NSString stringWithFormat:@"%d", BC[i].S_M.HP] forKey:@"HP"];
496         [dict setValue:[NSString stringWithFormat:@"%d", BC[i].S_M.WT] forKey:@"WT"];
497         [dict setValue:[NSString stringWithFormat:@"%d", BC[i].dmgfix] forKey:@"dmgfix"];
498         [dict setValue:[NSString stringWithFormat:@"%d", BC[i].defLv] forKey:@"defLv"];
499         [self willChangeValueForKey:@"buildChipListMA"];
500         [buildChipListMA addObject:dict];
501         [self didChangeValueForKey:@"buildChipListMA"];
502     }
503     
504     [self saveData];
505 }
506
507 -(void)savePreset{
508     NSString *directoryPath;
509     
510     directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
511     [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
512
513     NSString *fileData = @"";
514     fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", (int)chipNumb]] stringByAppendingString:@"\n"];
515     
516     NSString *path = @"data/BuildChip/preset.txt";
517     [fileData writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:nil];
518 }
519
520 -(void)saveData{
521     NSString *directoryPath;
522     
523     directoryPath = [[[NSBundle mainBundle] bundlePath] stringByDeletingLastPathComponent];
524     [[NSFileManager defaultManager] changeCurrentDirectoryPath:directoryPath];
525     
526     char *cwd;
527     cwd = getcwd(NULL, 0);
528     
529     for (int i = 0;i < chipNumb;i++) {
530         NSString *fileData = @"";
531         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%@", BC[i].name]] stringByAppendingString:@"\n"];
532         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%@", BC[i].nameR]] stringByAppendingString:@"\n"];
533         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%@", BC[i].nameID]] stringByAppendingString:@"\n"];
534         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].S_M.HP]] stringByAppendingString:@","];
535         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].S_M.WT]] stringByAppendingString:@","];
536         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].dmgfix]] stringByAppendingString:@","];
537         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].defLv]] stringByAppendingString:@","];
538         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].recHP]] stringByAppendingString:@","];
539         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].recMP]] stringByAppendingString:@","];
540         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].recEN]] stringByAppendingString:@","];
541         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].recHPL]] stringByAppendingString:@"\n"];
542         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].Csupply]] stringByAppendingString:@","];
543         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].Cfood]] stringByAppendingString:@","];
544         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].Cmoney]] stringByAppendingString:@","];
545         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].CsupplyNext]] stringByAppendingString:@","];
546         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].CfoodNext]] stringByAppendingString:@","];
547         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].CmoneyNext]] stringByAppendingString:@","];
548         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].Esupply]] stringByAppendingString:@","];
549         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].Efood]] stringByAppendingString:@","];
550         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].Emoney]] stringByAppendingString:@","];
551         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].S_M.WTE]] stringByAppendingString:@","];
552         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].S_M.WTN]] stringByAppendingString:@"\n"];
553         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].inroadsFlag]] stringByAppendingString:@","];
554         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].capture]] stringByAppendingString:@","];
555         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].type]] stringByAppendingString:@","];
556         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%@", BC[i].linkDest]] stringByAppendingString:@","];
557         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%@", BC[i].linkNext]] stringByAppendingString:@","];
558         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].GuildFlag]] stringByAppendingString:@"\n"];
559         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%@", BC[i].iName]] stringByAppendingString:@","];
560         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%@", BC[i].iNameb]] stringByAppendingString:@"\n"];
561         fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"----"]] stringByAppendingString:@"\n"];
562         
563         NSData *f2Data = [BC[i].img TIFFRepresentation];
564         NSBitmapImageRep *brep = [NSBitmapImageRep imageRepWithData:f2Data];
565         f2Data = [brep representationUsingType:NSPNGFileType properties:nil];
566         
567         NSString *bcPath = @"data/BuildChip/img/bc";
568         bcPath = [bcPath stringByAppendingFormat:@"%d", i + 1];
569         
570         [f2Data writeToFile:bcPath atomically:YES];
571         
572         f2Data = [BC[i].imgb TIFFRepresentation];
573         brep = [NSBitmapImageRep imageRepWithData:f2Data];
574         f2Data = [brep representationUsingType:NSPNGFileType properties:nil];
575         
576         bcPath = @"data/BuildChip/img/bcb";
577         bcPath = [bcPath stringByAppendingFormat:@"%d", i + 1];
578         
579         [f2Data writeToFile:bcPath atomically:YES];
580         
581         RESEARCH *rTop = BC[i].R;
582         while(BC[i].R){
583             fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].R->type]] stringByAppendingString:@","];
584             fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].R->numb]]
585                         stringByAppendingString:@","];
586             fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].R->Lv]]
587                         stringByAppendingString:@","];
588             fileData = [[fileData stringByAppendingString:[NSString stringWithFormat:@"%d", BC[i].R->UCLflag]]
589                         stringByAppendingString:@"\n"];
590             BC[i].R = BC[i].R->next;
591         }BC[i].R = rTop;
592         fileData = [fileData stringByAppendingString:[NSString stringWithFormat:@"----"]];
593         if(i != chipNumb - 1) fileData = [fileData stringByAppendingString:[NSString stringWithFormat:@"\n"]];
594         
595         NSString *pathBCP = @"data/BuildChip/BCdata";
596         pathBCP = [pathBCP stringByAppendingFormat:@"%d.txt", i + 1];
597         [fileData writeToFile:pathBCP atomically:YES encoding:NSUTF8StringEncoding error:nil];
598     
599     
600     
601     }
602     
603 }
604
605 -(IBAction)registBCL:(id)sender{
606     [TFchipNumb setIntValue:(int)chipNumb];
607     [BCLregisterPanel makeKeyAndOrderFront:nil];
608 }
609 -(IBAction)registSaveBCL:(id)sender{
610     chipNumb = [TFchipNumb intValue];
611     if(chipNumb > 128) chipNumb = 128;
612     BuildChipMax = (int)chipNumb/25+1;
613     
614     [self savePreset];
615     [self initBuildChipList];
616     [self initFileDirectory];
617     [self saveData];
618     [BCLregisterPanel close];
619 }
620 -(IBAction)registCancelBCL:(id)sender{
621     [BCLregisterPanel close];
622 }
623
624 -(IBAction)researchListUnitInsert:(id)sender{
625
626     RLunitNumb = (int)[PUunit indexOfSelectedItem] - 1;
627     
628     if(RLunitNumb < 0) return;
629     
630     int R = RLunitNumb;
631     
632     NSMutableDictionary *dict = [NSMutableDictionary new];
633     [dict setValue:[NSString stringWithFormat:@"新規研究"] forKey:@"name"];
634     
635     Rtop = BC[clickIndex].R;
636     
637     if(RLrow < 0){
638         BC[clickIndex].R = Rtop;
639         if([researchListMA count] == 0){
640             BC[clickIndex].R = (RESEARCH*)malloc(sizeof(RESEARCH));
641             //INIT 処理
642             BC[clickIndex].R->type = 1;
643             BC[clickIndex].R->numb = R;
644             BC[clickIndex].R->Lv = 0;
645             BC[clickIndex].R->U = &UC[R];
646             BC[clickIndex].R->O = NULL;
647             BC[clickIndex].R->R = NULL;
648             BC[clickIndex].R->next = NULL;
649             Rtop = BC[R].R;
650         }else{
651             while(BC[clickIndex].R->next) BC[clickIndex].R = BC[clickIndex].R->next;
652             BC[clickIndex].R->next = (RESEARCH*)malloc(sizeof(RESEARCH));
653             BC[clickIndex].R = BC[clickIndex].R->next;
654             //INIT 処理
655             BC[clickIndex].R->type = 1;
656             BC[clickIndex].R->numb = R;
657             BC[clickIndex].R->Lv = 0;
658             BC[clickIndex].R->U = &UC[R];
659             BC[clickIndex].R->O = NULL;
660             BC[clickIndex].R->R = NULL;
661             //UNITCHIP *uTest = (UNITCHIP*)BC[clickIndex].R->U;
662             BC[clickIndex].R->next = NULL;
663             BC[clickIndex].R = Rtop;
664         }
665         
666         [dict setValue:[NSString stringWithFormat:@"%@", UC[R].name] forKey:@"name"];
667         [dict setValue:[NSString stringWithFormat:@"資%d 食%d 金%d", UC[R].S_M.cSupply, UC[R].S_M.cFood, UC[R].S_M.cMoney] forKey:@"cost"];
668         [dict setValue:[NSString stringWithFormat:@"%d", UC[R].S_M.cWT] forKey:@"WT"];
669         
670         [self willChangeValueForKey:@"researchListMA"];
671         [researchListMA insertObject:dict atIndex:[researchListMA count]];
672         [self didChangeValueForKey:@"researchListMA"];
673         [researchListAC setSelectionIndex:999];
674         RLrow = -1;
675     }else{
676         BC[clickIndex].R = Rtop;
677         if([researchListMA count] == 0){
678             BC[clickIndex].R = (RESEARCH*)malloc(sizeof(RESEARCH));
679             //INIT 処理
680             BC[clickIndex].R->type = 1;
681             BC[clickIndex].R->numb = R;
682             BC[clickIndex].R->Lv = 0;
683             BC[clickIndex].R->U = &UC[R];
684             BC[clickIndex].R->O = NULL;
685             BC[clickIndex].R->R = NULL;
686             BC[clickIndex].R->next = NULL;
687             Rtop = BC[clickIndex].R;
688         }else if(RLrow > 0){
689             for (int i = 0; i < RLrow-1;i++)
690                 BC[clickIndex].R = BC[clickIndex].R->next;
691             RESEARCH *tmp = (RESEARCH*)malloc(sizeof(RESEARCH));
692             *tmp = *BC[clickIndex].R->next;
693             BC[clickIndex].R->next = (RESEARCH*)malloc(sizeof(RESEARCH));
694             BC[clickIndex].R->next->next = tmp;
695             BC[clickIndex].R = BC[clickIndex].R->next;
696             //INIT 処理
697             BC[clickIndex].R->type = 1;
698             BC[clickIndex].R->numb = R;
699             BC[clickIndex].R->Lv = 0;
700             BC[clickIndex].R->U = &UC[R];
701             BC[clickIndex].R->O = NULL;
702             BC[clickIndex].R->R = NULL;
703             BC[clickIndex].R = Rtop;
704         }else{
705             RESEARCH *tmp = (RESEARCH*)malloc(sizeof(RESEARCH));
706             tmp->next = BC[clickIndex].R;
707             // INIT 処理[self InitAttack:tmp];
708             tmp->type = 1;
709             tmp->numb = R;
710             tmp->Lv = 1;
711             tmp->U = &UC[R];
712             tmp->O = NULL;
713             tmp->R = NULL;
714             Rtop = tmp;
715             BC[clickIndex].R = Rtop;
716         }
717     
718         [dict setValue:[NSString stringWithFormat:@"%@", UC[R].name] forKey:@"name"];
719         [dict setValue:[NSString stringWithFormat:@"資%d 食%d 金%d", UC[R].S_M.cSupply, UC[R].S_M.cFood, UC[R].S_M.cMoney] forKey:@"cost"];
720         [dict setValue:[NSString stringWithFormat:@"%d", UC[R].S_M.cWT] forKey:@"WT"];
721         
722         [self willChangeValueForKey:@"researchListMA"];
723         [researchListMA insertObject:dict atIndex:RLrow];
724         [self didChangeValueForKey:@"researchListMA"];
725         [researchListAC setSelectionIndex:RLrow];
726     }
727
728 }
729
730 -(IBAction)researchListResearchInsert:(id)sender{
731
732 }
733
734 -(IBAction)researchListUnionInsert:(id)sender{
735
736 }
737
738 -(IBAction)researchListDelete:(id)sender{
739     
740     Rtop = BC[clickIndex].R;
741     
742     if(RLrow == -1){
743         RLrow = (int)[researchListMA count] - 1;
744     }
745     
746     if([researchListMA count] > 0){
747     
748     if(RLrow == 0){
749         BC[clickIndex].R = Rtop;
750         BC[clickIndex].R = BC[clickIndex].R->next;
751         Rtop = BC[clickIndex].R;
752     }else if(RLrow == [researchListMA count] - 1){
753         BC[clickIndex].R = Rtop;
754         while(BC[clickIndex].R->next->next){
755             BC[clickIndex].R = BC[clickIndex].R->next;
756         }
757         BC[clickIndex].R->next = NULL;
758     }else{
759         BC[clickIndex].R = Rtop;
760         for (int i = 0; i < RLrow - 1;i++)
761             BC[clickIndex].R = BC[clickIndex].R->next;
762         BC[clickIndex].R->next = BC[clickIndex].R->next->next;
763     }
764     
765     [self willChangeValueForKey:@"researchListMA"];
766     [researchListMA removeObjectAtIndex:RLrow];
767     [self didChangeValueForKey:@"researchListMA"];
768     [researchListAC setSelectionIndex:RLrow-1];
769     if(RLrow < 0) [researchListAC setSelectionIndex:[researchListMA count]-1];
770     if(RLrow == 0) [researchListAC setSelectionIndex:0];
771     if(RLrow > 0) RLrow--;
772     }
773     BC[clickIndex].R = Rtop;
774
775 }
776
777 -(void)initResearchList{
778     
779     [self willChangeValueForKey:@"researchListMA"];
780     [researchListMA removeAllObjects];
781     [self didChangeValueForKey:@"researchListMA"];
782     
783     RESEARCH *rTop = BC[clickIndex].R;
784     while(BC[clickIndex].R){
785         NSMutableDictionary* dict = [NSMutableDictionary new];
786         
787         UNITCHIP *uc = BC[clickIndex].R->U;
788         
789         [dict setValue:[NSString stringWithFormat:@"%@", uc->name] forKey:@"name"];
790         [dict setValue:[NSString stringWithFormat:@"%d", uc->S_M.cWT] forKey:@"WT"];
791         [dict setValue:[NSString stringWithFormat:@"資%d 食%d 金%d", uc->S_M.cSupply, uc->S_M.cFood, uc->S_M.cMoney] forKey:@"cost"];
792         [self willChangeValueForKey:@"researchListMA"];
793         [researchListMA addObject:dict];
794         [self didChangeValueForKey:@"researchListMA"];
795         
796         BC[clickIndex].R = BC[clickIndex].R->next;
797     }BC[clickIndex].R = rTop;
798     
799     
800 }
801
802 @end