OSDN Git Service

CPU射程距離ミス修正
authorKillery <Killery@kiritani-no-mac-mini.local>
Sat, 2 Jan 2016 00:24:05 +0000 (09:24 +0900)
committer桐谷 諭史 <Killery@kiritani-no-Mac-mini.local>
Sat, 2 Jan 2016 00:24:05 +0000 (09:24 +0900)
Awars III/FieldScene.m
Awars III/FieldView.m

index 470de57..2bf0b5b 100755 (executable)
                     unitBreak = U;
                     possionX = unitBreak->x;
                     possionY = unitBreak->y;
+                    //おまんちん
+                    stanbyFlag = false;
                     
                     
                     if(buildNum[U->x][U->y] >= 0){
@@ -6277,6 +6279,7 @@ w000p:
             UA = NULL;
             wtRdy = false;
             Utarget = NULL;
+            //おまんちん
             cpuIsAttackingFlag = false;
             for(int g = 0;g < chipWidth;g++){
                 for(int k = 0;k < chipHeight;k++){
index da45bd1..037af8b 100755 (executable)
@@ -67,6 +67,8 @@
 
 -(void)EventLoopFV:(NSTimer*)timer{
     
+    //if(unitBreak) NSLog(@"unitBreakAtkrange %d", unitBreak->atkRange);
+    
     
     if(evInitMap) {evInitMap = false;
         //[self loadMesh:SC[storyNumb].nameMAP index:scenarioNumb];
     
 }
 
+
+-(void)checkRangeAttack:(int)startX startY:(int)startY leftPow:(int)leftPow pieceType:(int)pieceType aMap:(int[][1002])aMap aPiece:(UNITCHIP*)aPiece i:(int)i{
+    
+    int i0 = i;
+    if(leftPow <= i0) return;
+    
+    int chipTeam;
+    if(Uselected) chipTeam = Uselected->team;
+    
+    if(startX < 0) startX = 0;
+    if(startY < 0) startY = 0;
+    
+    aMap[startY][startX] = i0;    //広がる範囲
+    i0++;  // 上
+
+    if( leftPow > i0 ){
+        [self checkRangeAttack:startX startY:startY - 1 leftPow:leftPow pieceType:pieceType aMap:aMap aPiece:aPiece i:i0];
+    }
+    
+    // 下
+    if( leftPow > i0 ){
+        [self checkRangeAttack:startX startY:startY + 1 leftPow:leftPow pieceType:pieceType aMap:aMap aPiece:aPiece i:i0];
+    }
+    
+    // 右
+    if( leftPow > i0 ){
+        [self checkRangeAttack:startX - 1 startY:startY leftPow:leftPow pieceType:pieceType aMap:aMap aPiece:aPiece i:i0];
+    }
+    
+    // 左
+    if( leftPow > i0 ){
+        [self checkRangeAttack:startX + 1 startY:startY leftPow:leftPow pieceType:pieceType aMap:aMap aPiece:aPiece i:i0];
+    }
+    
+}
+
+
+
 -(void)LookupAttackRangeExtent:(int)startX startY:(int)startY aPiece:(UNITCHIP*)aPiece turnSide:(BOOL)turnSide
 {
     
             if(coolTime)
                 return;
             
+            if(stanbyFlag)
+                return;
+            
             if(unitMoveEndFlag){
                 pushStanbyFlag = true;
                 UA = NULL;
             pushStanbyFlag = false;
             [self makeEnemyAI];
             [self cpuSearchEnemy];
+            if(Utarget) NSLog(@"Utarg %d", Utarget->number);
             cpuModeMOVEflag = true;
             if(unitNoMoveStanbyFlag){
                 static int waitTimer = 50;
                 unitCPUAttackFlag = true;
                 cpuMODE = MODE_CPU_BATTLE;
                 wtAttackedFlag = true;
+                battleFlag = true;
                 return;
             }
             break;
                 return;
             }
             
+            
+            //おまんちん
             U = UTop;
             while (U->number != wtUnitNum) {
                 U = U->next;
             CPUAttackFlag2 = false;
             unitNoMoveFlag = false;
             cpuMODE = MODE_CPU_IDLE;
-            
+            if(Utarget) NSLog(@"Utarg2 %d", Utarget->number);
             break;
         default:
             cpuMODE = MODE_CPU_IDLE;
     
 }
 
+
+
 -(void)cpuEmployment{
 
     B = BTop;
                 g_attackRangeTheta[y][x] = 0;
             }
         }
-        [self checkAttackRange:U->y startY:U->x leftPow:unitBreak->atkRange+1 pieceType:U->C.S_C.typeMONS aMap:g_attackRangeTheta aPiece:&U->C];
+        [self checkRangeAttack:U->y startY:U->x leftPow:unitBreak->atkRange+1 pieceType:U->C.S_C.typeMONS aMap:g_attackRangeTheta aPiece:&U->C i:0];
         
         ATTACK *AT = unitBreak->C.A;
         for(int i = 0;i < crCAL1;i++){
             
             for (int x = 1; x <= chipWidth; x++) {
                 for (int y = 1; y <= chipHeight; y++) {
-                    if(g_attackRangeTheta[y][x] > 0 && g_selectRange[y][x] > 0 && g_entireUnit[y][x] == 0){
+                    if(g_attackRangeTheta[y][x] > 0 && g_selectRange[y][x] > 0 && g_entireUnit[y][x] == 0
+                       && g_attackRangeTheta[U->y][U->x] == unitBreak->atkRange){
                         
                         
                         int point = (unitBreak->atkRange - g_attackRangeBeta[y][x])*20 + g_selectRange[y][x]*50;
         U = U->next;
     }
     
-    if(!U){
+    ATTACK *AT = unitBreak->C.A;
+    for(int i = 0;i < crCAL1;i++){
+        AT = AT->next;
+    }
+    
+    if(!U /*&& AT->D->sort == 1*/){
         [self healBreak];//回復の対象がいない時、回復以外にする
     }
     
                 g_attackRangeTheta[y][x] = 0;
             }
         }
-        [self checkAttackRange:U->y startY:U->x leftPow:unitBreak->atkRange+1 pieceType:U->C.S_C.typeMONS aMap:g_attackRangeTheta aPiece:&U->C];
+        [self checkRangeAttack:U->y startY:U->x leftPow:unitBreak->atkRange+1 pieceType:U->C.S_C.typeMONS aMap:g_attackRangeTheta aPiece:&U->C i:0];
         
         ATTACK *AT = unitBreak->C.A;
         for(int i = 0;i < crCAL1;i++){
             
             for (int x = 1; x <= chipWidth; x++) {
                 for (int y = 1; y <= chipHeight; y++) {
-                    if(g_attackRangeTheta[y][x] > 0 && g_selectRange[y][x] > 0 && g_entireUnit[y][x] == 0){
+                    if(g_attackRangeTheta[y][x] > 0 && g_selectRange[y][x] > 0 && g_entireUnit[y][x] == 0
+                       && g_attackRangeTheta[U->y][U->x] == unitBreak->atkRange){
                         
                         
                         int point = (unitBreak->atkRange - g_attackRangeBeta[y][x])*20 + g_selectRange[y][x]*50;
             }
         }
         
-        [self checkEnemyRange:unitBreak->atkRange+1 cntNum:0 tX:Utarget->x tY:Utarget->y aMap:g_enemyRange];
+        //[self checkEnemyRange:unitBreak->atkRange+1 cntNum:0 tX:Utarget->x tY:Utarget->y aMap:g_enemyRange];
         
-        unitBreak->atkRange = unitBreak->atkRange+1 - g_enemyRange[g_target_x][g_target_y];
+        //unitBreak->atkRange = unitBreak->atkRange+1 - g_enemyRange[g_target_x][g_target_y];
         
         
         
         crCAL = crCAL1;
         
         
-        //NSLog(@"%@", Utarget->C.name);
+        NSLog(@"UtargNUm %d", Utarget->number);
         return;
     }
     
                 }unitBreak->C.A = UAT;
                 
                 unitBreak->atkRange = UA->rangeB;
-                
+                NSLog(@"unitBreak->atkRange %d", unitBreak->atkRange);
                 for(int g = 0;g <= chipWidth;g++){
                     for(int h = 0; h <= chipHeight;h++){
                         g_attackRangeAlpha [h][g] = 0;
                 
                 if(g_attackRangeBeta[y][x] > 0 && !cpuOMFGmoveATKfixFlag){
                     [self DrawImage:chipSelect x:(y-1)*32 y:(x-1)*32 cx:0 cy:0 f:0.6];
+                    /*
+                    switch(g_attackRangeBeta[y][x]){
+                        case 1:
+                           [self DrawImage:n1 x:(y-1)*32 y:(x-1)*32 cx:0 cy:0 f:0.6];
+                            break;
+                        case 2:
+                            [self DrawImage:n2 x:(y-1)*32 y:(x-1)*32 cx:0 cy:0 f:0.6];
+                            break;
+                        case 3:
+                            [self DrawImage:n3 x:(y-1)*32 y:(x-1)*32 cx:0 cy:0 f:0.6];
+                            break;
+                        case 4:
+                            [self DrawImage:n4 x:(y-1)*32 y:(x-1)*32 cx:0 cy:0 f:0.6];
+                            break;
+                        case 5:
+                            [self DrawImage:n5 x:(y-1)*32 y:(x-1)*32 cx:0 cy:0 f:0.6];
+                            break;
+                        case 6:
+                            [self DrawImage:n6 x:(y-1)*32 y:(x-1)*32 cx:0 cy:0 f:0.6];
+                            break;
+                        case 7:
+                            [self DrawImage:n7 x:(y-1)*32 y:(x-1)*32 cx:0 cy:0 f:0.6];
+                            break;
+                        case 8:
+                            [self DrawImage:n8 x:(y-1)*32 y:(x-1)*32 cx:0 cy:0 f:0.6];
+                            break;
+                        case 9:
+                            [self DrawImage:n9 x:(y-1)*32 y:(x-1)*32 cx:0 cy:0 f:0.6];
+                            break;
+                        case 10:
+                            [self DrawImage:n10 x:(y-1)*32 y:(x-1)*32 cx:0 cy:0 f:0.6];
+                            break;
+                    
+                    
+                    
+                    }*/
                     
                 }
                 
             }
         }
     
+    
+    
     if(cpuIsAttackingFlag || (UA && unitMoveEndFlag)){
         for (int x = 1; x <= chipWidth;x++) {
             for(int y = 1;y <= chipHeight;y++){