changeset 36:4516141d844a

fix.
author koba <koba@cr.ie.u-ryukyu.ac.jp>
date Sun, 09 Jan 2011 19:47:52 +0900
parents c122e3d2302e
children 6989f8cb0259
files collision_task.cc ppe/Sprite.cc ppe/chara_state40.cc ppe/chara_state41.cc ppe/task_object.h property.h state_task.cc
diffstat 7 files changed, 36 insertions(+), 12 deletions(-) [+]
line wrap: on
line diff
--- a/collision_task.cc	Sun Jan 09 14:28:44 2011 +0900
+++ b/collision_task.cc	Sun Jan 09 19:47:52 2011 +0900
@@ -30,7 +30,7 @@
     memcpy(property->tama_lv2, tama_lv2, sizeof(tama2)*20);
     memcpy(property->laser_lv1, laser_lv1, sizeof(laser)*20);
     memcpy(property->laser_lv3, laser_lv3, sizeof(laser)*128);
-    memcpy(property->bchar, bchar, sizeof(bomchar)*100);
+    memcpy(property->bchar, bchar, sizeof(bomchar)*(bomend+2));
 
     return property;
 }
@@ -58,7 +58,7 @@
     memcpy(tama_lv1, property->tama_lv1, sizeof(tama1)*20);
     memcpy(tama_lv2, property->tama_lv2, sizeof(tama2)*20);
     memcpy(laser_lv1, property->laser_lv1, sizeof(laser)*20);
-    memcpy(bchar, property->bchar, sizeof(bomchar)*100);
+    memcpy(bchar, property->bchar, sizeof(bomchar)*(bomend+2));
 
     free(prop);
 }
--- a/ppe/Sprite.cc	Sun Jan 09 14:28:44 2011 +0900
+++ b/ppe/Sprite.cc	Sun Jan 09 19:47:52 2011 +0900
@@ -3,11 +3,10 @@
 #include "../ObjectType.h"
 
 void
-DefSprite(int number, const char *name, float w, float h, int color, ObjDataPtr obj)
+DefSprite(int number, float w, float h, int color, ObjDataPtr obj)
 {
     obj->type = Def;
     obj->number = number;
-    strcpy(obj->name, name);
     obj->w = w;
     obj->h = h;
     obj->color = color;
--- a/ppe/chara_state40.cc	Sun Jan 09 14:28:44 2011 +0900
+++ b/ppe/chara_state40.cc	Sun Jan 09 19:47:52 2011 +0900
@@ -34,7 +34,7 @@
 	    sprite->length = length;
 
 	    p->dt2++;
-	    DefSprite(76, "boss2_rightarm_b", 16, p->dt2, 480, &sprite->data[0]);
+	    DefSprite(76, 16, p->dt2, 480, &sprite->data[0]);
 	}
 	else
 	{
@@ -70,7 +70,7 @@
 	    sprite->length = length;
 
 	    p->dt2--;
-	    DefSprite(76, "boss2_rightarm_b", 16, p->dt2, 480, &sprite->data[0]);
+	    DefSprite(76, 16, p->dt2, 480, &sprite->data[0]);
 	}
 	else
 	{
--- a/ppe/chara_state41.cc	Sun Jan 09 14:28:44 2011 +0900
+++ b/ppe/chara_state41.cc	Sun Jan 09 19:47:52 2011 +0900
@@ -37,7 +37,7 @@
 	    sprite->length = length;
 
 	    p->dt2++;
-	    DefSprite(77, "boss2_leftarmbattery", p->dt2, 16, 480, &sprite->data[0]);	/*左腕アップアーム砲 */
+	    DefSprite(77, p->dt2, 16, 480, &sprite->data[0]);	/*左腕アップアーム砲 */
 	}
 	else
 	{
@@ -74,7 +74,7 @@
 	    sprite->length = length;
 
 	    p->dt2--;
-	    DefSprite(77, "boss2_leftarmbattery", p->dt2, 16, 480, &sprite->data[0]);
+	    DefSprite(77, p->dt2, 16, 480, &sprite->data[0]);
 	}
 	else
 	{
--- a/ppe/task_object.h	Sun Jan 09 14:28:44 2011 +0900
+++ b/ppe/task_object.h	Sun Jan 09 19:47:52 2011 +0900
@@ -121,7 +121,6 @@
 typedef struct ObjData {
   int type;
 
-  char name[20];
   int tama_type;
   int charano;
   int task;
@@ -151,7 +150,7 @@
 void Puttama(int type, float x, float y, ObjDataPtr tama);
 void Putenemy(int charano, float x, float y, float vx, float vy, int task, ObjDataPtr obj);
 void PutSprite(int zorder, short x, short y, int number, ObjDataPtr obj);
-void DefSprite(int number, const char *name, float w, float h, int color, ObjDataPtr obj);
+void DefSprite(int number, float w, float h, int color, ObjDataPtr obj);
 void DefSpriteEx(int number, short middlex, short middley, ObjDataPtr obj);
 void PutSpriteEx(int number, int x, int y, float scalex, float scaley, float angle, ObjDataPtr obj);
 
--- a/property.h	Sun Jan 09 14:28:44 2011 +0900
+++ b/property.h	Sun Jan 09 19:47:52 2011 +0900
@@ -29,7 +29,6 @@
 typedef struct ObjData {
   int type;
 
-  char name[20];
   int tama_type;
   int charano;
   int task;
--- a/state_task.cc	Sun Jan 09 14:28:44 2011 +0900
+++ b/state_task.cc	Sun Jan 09 19:47:52 2011 +0900
@@ -40,6 +40,32 @@
 
 State state_list[LIST_NUM];
 
+
+static
+int power_of_two(int input)
+{
+    int value = 1;
+
+    while ( value < input ) {
+	value <<= 1;
+    }
+    return value;
+}
+
+static void
+ReDefSprite(int number, float w, float h, int color)
+{
+    SpriteTable *m = &sptable[number];
+    m->w = w;
+    m->h = h;
+    m->color = (color & 32);
+    m->mx = w / 2;
+    m->my = h / 2;
+    m->tex_w = power_of_two(m->w);
+    m->tex_h = power_of_two(m->h);
+}
+
+
 static int
 GetStateNum(int task_num)
 {
@@ -154,6 +180,7 @@
 		break;
 	    }
 	    case Def:
+		ReDefSprite(obj_data->number, obj_data->w, obj_data->h, obj_data->color);
 		break;
 	    case DefEx:
 		DefSpriteEx(obj_data->number, obj_data->middlex, obj_data->middley);
@@ -165,7 +192,7 @@
 		PutSpriteEx(obj_data->number, obj_data->x, obj_data->y,
 			    obj_data->scalex, obj_data->scaley, obj_data->angle);
 		break;
-		    }
+	    }
 	}
     }
     int num = GetStateNum(p->task);