diff ppe/Atari.cc @ 53:b31bed246abd

fix code and add log.
author koba <koba@cr.ie.u-ryukyu.ac.jp>
date Tue, 25 Jan 2011 17:43:30 +0900
parents 2e123c4bf5ca
children 3acdeb3dc3e8
line wrap: on
line diff
--- a/ppe/Atari.cc	Sun Jan 23 19:01:34 2011 +0900
+++ b/ppe/Atari.cc	Tue Jan 25 17:43:30 2011 +0900
@@ -1,5 +1,6 @@
 #include "task_base.h"
 #include "task_object.h"
+#include "../ObjectType.h"
 
 SchedDefineTask1(Atari, atari);
 
@@ -8,18 +9,22 @@
 {
     int w = (int)smanager->get_param(0);
     int h = (int)smanager->get_param(1);
-    int tama_lv1_end = (int)smanager->get_param(2);
-    int tama_lv2_end = (int)smanager->get_param(3);
-    int laser_lv1_end = (int)smanager->get_param(4);
 
-    CHARACTER *p = (CHARACTER*)smanager->get_input(rbuf, 0);
+    CollisionPropertyPtr property
+	= (CollisionPropertyPtr)smanager->get_input(rbuf, 0);
     player *jiki = (player*)smanager->get_input(rbuf, 1);
-    stge *lg = (stge*)smanager->get_input(rbuf, 2);
-    stge *infg = (stge*)smanager->get_input(rbuf, 3);
-    int *infg_level = (int*)smanager->get_input(rbuf, 4);
-    CollisionPropertyPtr property
-	= (CollisionPropertyPtr)smanager->get_input(rbuf, 5);
+
+    property->lg = *(stge*)smanager->get_input(rbuf, 2);
+    property->infg = *(stge*)smanager->get_input(rbuf, 3);
+    stge *lg = &property->lg;
+    stge *infg = &property->infg;
 
+    int infg_level = *(int*)smanager->get_input(rbuf, 4);
+    int tama_lv1_end = *(int*)smanager->get_input(rbuf, 5);
+    int tama_lv2_end = *(int*)smanager->get_input(rbuf, 6);
+    int laser_lv1_end = *(int*)smanager->get_input(rbuf, 7);
+
+    CHARACTER *p = &property->p;
     int *enemycount = &property->enemycount;
     tama1 *tlv3 = &property->tlv3;
 
@@ -34,40 +39,35 @@
     ex = p->x;
     ey = p->y;
 
-    int length = 1;
-    smanager->set_outputSize(2, sizeof(ObjContainer)+sizeof(ObjData)*(length-1));
-    smanager->setup_outputData();
-    
-    CHARACTER *q = (CHARACTER*)smanager->get_output(wbuf, 0);
     CollisionPropertyPtr w_property
-	= (CollisionPropertyPtr)smanager->get_output(wbuf, 1);
-    ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 2);
+	= (CollisionPropertyPtr)smanager->get_output(wbuf, 0);
+    ObjContainerPtr sprite = (ObjContainerPtr)smanager->get_output(wbuf, 1);
     sprite->flag = false;
-    sprite->length = length;
+    sprite->length = 1;
 
 //自機やられ
 #ifndef INVISIBLE_MODE
     if ((ex < jiki->x + 128 / 2) && (ex + w > jiki->x + 128 / 2)
 	&& (ey < jiki->y + 128 / 2) && (ey + h > jiki->y + 128 / 2)
 	&& jiki->muteki == 0) {
+	
 	sprite->flag = true;
 	Bom(jiki->x + 16, jiki->y + 16, &sprite->data[0]);
+	
+	property->collision_type = JIKI;
+
 	jiki->bf = FALSE;
 	jiki->zanki--;
-	jiki->muteki = 120;
-	
+	jiki->muteki = 120;	
+	property->jiki = *jiki;
 
 	infg->stg = 0;
-	*infg_level--;
-	if (*infg_level < 0)
-	    *infg_level = 0;
+	infg_level--;
+	if (infg_level < 0)
+	    infg_level = 0;
 
-	property->infg_level = *infg_level;
-	property->jiki = *jiki;
-	property->lg = *lg;
-	property->infg = *infg;
+	property->infg_level = infg_level;
 
-	*q = *p;
 	*w_property = *property;
 	return 0;
     }
@@ -81,6 +81,8 @@
 	    && (ex + w > tama_lv1[i1].x + 16)
 	    && (tama_lv1[i1].y + 128 > ey) && (tama_lv1[i1].y < ey + h)
 	    && (tama_lv1[i1].r != -1)) {
+	    property->collision_type = TAMALV1;
+
 	    tama_lv1[i1].r = -1;
 	    p->vit -= TAMALV1P;
 	    infg->stg++;
@@ -89,16 +91,10 @@
 		sprite->flag = true;
 		Bom(p->x, p->y, &sprite->data[0]);
 		*enemycount += (p->score *
-			       ((infg->stg / 128) + *infg_level + 1));
+			       ((infg->stg / 128) + infg_level + 1));
 		p->task = DELETE_CHARA;
 		p->f = FALSE;
 
-		property->infg_level = *infg_level;
-		property->jiki = *jiki;
-		property->lg = *lg;
-		property->infg = *infg;
-		
-		*q = *p;
 		*w_property = *property;
 		return 0;
 	    }
@@ -106,6 +102,8 @@
 	if ((tama_lv1[i1].x + 64 > ex) && (ex + w > tama_lv1[i1].x)
 	    && (tama_lv1[i1].y + 128 > ey) && (tama_lv1[i1].y < ey + h)
 	    && (tama_lv1[i1].l != -1)) {
+	    property->collision_type = TAMALV1;
+
 	    tama_lv1[i1].l = -1;
 	    p->vit -= TAMALV1P;
 	    infg->stg++;
@@ -114,16 +112,10 @@
 		sprite->flag = true;
 		Bom(p->x, p->y, &sprite->data[0]);
 		*enemycount += (p->score *
-			       ((infg->stg / 128) + *infg_level + 1));
+			       ((infg->stg / 128) + infg_level + 1));
 		p->task = DELETE_CHARA;
 		p->f = FALSE;
 
-		property->infg_level = *infg_level;
-		property->jiki = *jiki;
-		property->lg = *lg;
-		property->infg = *infg;
-		
-		*q = *p;
 		*w_property = *property;
 		return 0;
 	    }
@@ -135,6 +127,8 @@
 	    && (ex + w > tama_lv2[i1].x + 128)
 	    && (tama_lv2[i1].y + 192 > ey) && (tama_lv2[i1].y < ey + h)
 	    && (tama_lv2[i1].rr != -1)) {
+	    property->collision_type = TAMALV2;
+
 	    tama_lv2[i1].rr = -1;
 	    p->vit -= TAMALV2P;
 	    infg->stg++;
@@ -143,16 +137,10 @@
 		sprite->flag = true;
 		Bom(p->x, p->y, &sprite->data[0]);
 		*enemycount += (p->score *
-			       ((infg->stg / 128) + *infg_level + 1));
+			       ((infg->stg / 128) + infg_level + 1));
 		p->task = DELETE_CHARA;
 		p->f = FALSE;
 
-		property->infg_level = *infg_level;
-		property->jiki = *jiki;
-		property->lg = *lg;
-		property->infg = *infg;
-		
-		*q = *p;
 		*w_property = *property;
 		return 0;
 	    }
@@ -163,6 +151,8 @@
 	    && (tama_lv2[i1].y - 32 + 192 > ey)
 	    && (tama_lv2[i1].y - 32 < ey + h)
 	    && (tama_lv2[i1].sr != -1)) {
+	    property->collision_type = TAMALV2;
+
 	    tama_lv2[i1].sr = -1;
 	    p->vit -= TAMALV2P;
 	    infg->stg++;
@@ -171,16 +161,10 @@
 		sprite->flag = true;
 		Bom(p->x, p->y, &sprite->data[0]);
 		*enemycount += (p->score *
-			       ((infg->stg / 128) + *infg_level + 1));
+			       ((infg->stg / 128) + infg_level + 1));
 		p->task = DELETE_CHARA;
 		p->f = FALSE;
 
-		property->infg_level = *infg_level;
-		property->jiki = *jiki;
-		property->lg = *lg;
-		property->infg = *infg;
-		
-		*q = *p;
 		*w_property = *property;
 		return 0;
 	    }
@@ -189,6 +173,8 @@
 	    && (tama_lv2[i1].y - 32 + 192 > ey)
 	    && (tama_lv2[i1].y - 32 < ey + h)
 	    && (tama_lv2[i1].sl != -1)) {
+	    property->collision_type = TAMALV2;
+
 	    tama_lv2[i1].sl = -1;
 	    p->vit -= TAMALV2P;
 	    infg->stg++;
@@ -197,16 +183,10 @@
 		sprite->flag = true;
 		Bom(p->x, p->y, &sprite->data[0]);
 		*enemycount += (p->score *
-			       ((infg->stg / 128) + *infg_level + 1));
+			       ((infg->stg / 128) + infg_level + 1));
 		p->task = DELETE_CHARA;
 		p->f = FALSE;
 
-		property->infg_level = *infg_level;
-		property->jiki = *jiki;
-		property->lg = *lg;
-		property->infg = *infg;
-		
-		*q = *p;
 		*w_property = *property;
 		return 0;
 	    }
@@ -215,6 +195,8 @@
 	    && (ex + w > tama_lv2[i1].x - 64)
 	    && (tama_lv2[i1].y + 192 > ey) && (tama_lv2[i1].y < ey + h)
 	    && (tama_lv2[i1].ll != -1)) {
+	    property->collision_type = TAMALV2;
+
 	    tama_lv2[i1].ll = -1;
 	    p->vit -= TAMALV2P;
 	    infg->stg++;
@@ -223,16 +205,10 @@
 		sprite->flag = true;
 		Bom(p->x, p->y, &sprite->data[0]);
 		*enemycount += (p->score *
-			       ((infg->stg / 128) + *infg_level + 1));
+			       ((infg->stg / 128) + infg_level + 1));
 		p->task = DELETE_CHARA;
 		p->f = FALSE;
 
-		property->infg_level = *infg_level;
-		property->jiki = *jiki;
-		property->lg = *lg;
-		property->infg = *infg;
-		
-		*q = *p;
 		*w_property = *property;
 		return 0;
 	    }
@@ -240,6 +216,8 @@
     }
     if ((tlv3->r > 0) && (jiki->x < ex + w) && (jiki->x + 128 > ex)
 	&& (jiki->y > ey + h)) {
+	property->collision_type = TAMALV3;
+
 	p->vit -= TAMALV3P;
 	infg->stg++;
 	if (p->vit <= 0) {
@@ -247,16 +225,10 @@
 	    sprite->flag = true;
 	    Bom(p->x, p->y, &sprite->data[0]);
 	    *enemycount += (p->score *
-			   ((infg->stg / 128) + *infg_level + 1));
+			   ((infg->stg / 128) + infg_level + 1));
 	    p->task = DELETE_CHARA;
 	    p->f = FALSE;
 
-	    property->infg_level = *infg_level;
-	    property->jiki = *jiki;
-	    property->lg = *lg;
-	    property->infg = *infg;
-	    
-	    *q = *p;
 	    *w_property = *property;
 	    return 0;
 	}
@@ -264,6 +236,8 @@
 jumping:
     if ((tlv3->r > 0) && (jiki->x < ex + w) && (jiki->x + 128 > ex)
 	&& (jiki->y + 128 > ey) && (jiki->y < ey + h)) {
+	property->collision_type = TAMALV3;
+
 	p->vit -= TAMALV3P;
 	infg->stg++;
 	if (p->vit <= 0) {
@@ -271,16 +245,10 @@
 	    sprite->flag = true;
 	    Bom(p->x, p->y, &sprite->data[0]);
 	    *enemycount += (p->score *
-			   ((infg->stg / 128) + *infg_level + 1));
+			   ((infg->stg / 128) + infg_level + 1));
 	    p->task = DELETE_CHARA;
 	    p->f = FALSE;
 
-	    property->infg_level = *infg_level;
-	    property->jiki = *jiki;
-	    property->lg = *lg;
-	    property->infg = *infg;
-	    
-	    *q = *p;
 	    *w_property = *property;
 	    return 0;
 	}
@@ -292,6 +260,8 @@
 	if ((laser_lv1[i1].x + n > ex) && (ex + w > laser_lv1[i1].x)
 	    && (laser_lv1[i1].y + n > ey) && (laser_lv1[i1].y < ey + h)
 	    && (laser_lv1[i1].r != -1)) {
+	    property->collision_type = LASERLV1;
+
 	    laser_lv1[i1].r = -1;
 	    laser_lv1[i1].y = -1;
 	    p->vit -= LASERLV1P;
@@ -301,16 +271,10 @@
 		sprite->flag = true;
 		Bom(p->x, p->y, &sprite->data[0]);
 		*enemycount += (p->score *
-			       ((infg->stg / 128) + *infg_level + 1));
+			       ((infg->stg / 128) + infg_level + 1));
 		p->task = DELETE_CHARA;
 		p->f = FALSE;
 
-		property->infg_level = *infg_level;
-		property->jiki = *jiki;
-		property->lg = *lg;
-		property->infg = *infg;
-		
-		*q = *p;
 		*w_property = *property;
 		return 0;
 	    }
@@ -321,24 +285,23 @@
 	(laser_lv2[0].x + 128 > ex) && (ex + w > laser_lv2[0].x - 128)
 	&& (laser_lv2[0].y + 128 > ey) && (laser_lv2[0].y - 128 < ey + h)
 	&& (laser_lv2[0].r != 0)) {
+	property->collision_type = LASERLV2;
+
 	p->vit -= LASERLV2P;
 	lg->stg -= 26;
+
 	infg->stg++;
 	if (p->vit <= 0) {
 	    infg->stg += 4;
+	    property->infg = *infg;
+
 	    sprite->flag = true;
 	    Bom(p->x, p->y, &sprite->data[0]);
 	    *enemycount += (p->score *
-			   ((infg->stg / 128) + *infg_level + 1));
+			   ((infg->stg / 128) + infg_level + 1));
 	    p->task = DELETE_CHARA;
 	    p->f = FALSE;
-
-	    property->infg_level = *infg_level;
-	    property->jiki = *jiki;
-	    property->lg = *lg;
-	    property->infg = *infg;
 	    
-	    *q = *p;
 	    *w_property = *property;
 	    return 0;
 	}
@@ -350,6 +313,8 @@
 		&& (laser_lv3[i1].y + 128 > ey)
 		&& (laser_lv3[i1].y < ey + h)
 		&& (laser_lv3[i1].r > 0)) {
+		property->collision_type = LASERLV3;
+
 		tama_lv2[i1].rr = -1;
 		p->vit -= LASERLV3P;
 		infg->stg++;
@@ -358,16 +323,10 @@
 		    sprite->flag = true;
 		    Bom(p->x, p->y, &sprite->data[0]);
 		    *enemycount += (p->score *
-				   ((infg->stg / 128) + *infg_level + 1));
+				   ((infg->stg / 128) + infg_level + 1));
 		    p->task = DELETE_CHARA;
 		    p->f = FALSE;
 
-		    property->infg_level = *infg_level;
-		    property->jiki = *jiki;
-		    property->lg = *lg;
-		    property->infg = *infg;
-		    
-		    *q = *p;
 		    *w_property = *property;
 		    return 0;
 		}
@@ -375,12 +334,8 @@
 	}
     }
 
-    property->infg_level = *infg_level;
-    property->jiki = *jiki;
-    property->lg = *lg;
-    property->infg = *infg;
+    property->collision_type = NO;
     
-    *q = *p;
     *w_property = *property;
     return 0;
 }