Mercurial > hg > old > magoroku_racing
comparison field.cc @ 128:d9e3137e70a0
xml name change
author | e085768 |
---|---|
date | Thu, 07 Jul 2011 16:10:21 +0900 |
parents | 030394675d8e |
children | d88dfd3d46c5 |
comparison
equal
deleted
inserted
replaced
127:f129e644ec29 | 128:d9e3137e70a0 |
---|---|
15 #define BUFSIZE 256 | 15 #define BUFSIZE 256 |
16 | 16 |
17 /* --- main.c --- */ | 17 /* --- main.c --- */ |
18 extern FILE *main_fp; | 18 extern FILE *main_fp; |
19 | 19 |
20 // コース一周分のfieldの数 | |
20 static int field_num_max = 0; | 21 static int field_num_max = 0; |
22 | |
23 // 自分が走ったfieldの数のカウント | |
24 // field_num_max > field_num になったら一周って意味かも。違うかも | |
21 static int field_num = 1; | 25 static int field_num = 1; |
22 | 26 |
27 // FieldPtrのroot部分を指し示してるんだともう | |
23 static FieldPtr field_list; | 28 static FieldPtr field_list; |
29 | |
30 // 現在走ってるfield | |
24 static FieldPtr field_actual; | 31 static FieldPtr field_actual; |
25 | 32 |
26 extern Viewer *droot; | 33 extern Viewer *droot; |
27 | 34 |
28 // 適当に自作:miya | 35 // 適当に自作:miya |
31 PolygonInfo* test; | 38 PolygonInfo* test; |
32 printf("xml_read_file"); | 39 printf("xml_read_file"); |
33 | 40 |
34 return test; | 41 return test; |
35 } | 42 } |
43 | |
36 | 44 |
37 | 45 |
38 static FieldPtr | 46 static FieldPtr |
39 field_create(char *fieldImg, char *colImg )// OBJECT *tex) | 47 field_create(char *fieldImg, char *colImg )// OBJECT *tex) |
40 { | 48 { |
41 FieldPtr self; | 49 FieldPtr self; |
42 OBJECT *obj; | 50 OBJECT *obj; |
43 void *free_addr; | 51 void *free_addr; |
44 | 52 |
53 // xmlファイル内で名前を個別に付けました | |
45 // 初期化 | 54 // 初期化 |
46 droot->createFromXMLfile(fieldImg); | 55 droot->createFromXMLfile(fieldImg); |
47 obj = droot->createSceneGraph("hoge"); | 56 obj = droot->createSceneGraph("hoge"); |
48 | 57 |
49 droot->createFromXMLfile(colImg); | 58 droot->createFromXMLfile(colImg); |
50 OBJECT *col_obj = droot->createSceneGraph("hoge"); | 59 OBJECT *col_obj = droot->createSceneGraph("hoge"); |
51 | 60 |
52 if (malloc_align16(&free_addr, &self, sizeof(Field)) == -1) { | 61 if (malloc_align16(&free_addr, &self, sizeof(Field)) == -1) { |
53 fprintf(stderr, "field.c: malloc_align16 error\n"); | 62 fprintf(stderr, "field.c: malloc_align16 error\n"); |
54 fflush(stderr); | 63 fflush(stderr); |
55 exit(EXIT_FAILURE); | 64 exit(EXIT_FAILURE); |
56 } | 65 } |
61 self->free_addr = free_addr; | 70 self->free_addr = free_addr; |
62 #ifdef DEBUG | 71 #ifdef DEBUG |
63 fprintf(main_fp, "malloc fieldNode addr = %x(free), %x(obj)\n", (int)free_addr, (int)self); | 72 fprintf(main_fp, "malloc fieldNode addr = %x(free), %x(obj)\n", (int)free_addr, (int)self); |
64 #endif | 73 #endif |
65 | 74 |
75 printf("col_init()の直前!\n"); | |
66 // ちょっと今だけコメント --- | 76 // ちょっと今だけコメント --- |
67 col_init(&self->colface, col_obj); | 77 col_init(&self->colface, col_obj); |
68 | 78 |
69 #ifdef DEBUG | 79 #ifdef DEBUG |
70 fprintf(main_fp, " facenum = %d\n", self->colface.facenum); | 80 fprintf(main_fp, " facenum = %d\n", self->colface.facenum); |
73 #endif | 83 #endif |
74 | 84 |
75 return self; | 85 return self; |
76 } | 86 } |
77 | 87 |
88 | |
89 | |
90 /* | |
91 static FieldPtr | |
92 field_create(char *fieldImg, char *colImg)//, TEXTURE* tex) | |
93 { | |
94 FieldPtr self; | |
95 OBJECT *obj; | |
96 PolygonInfo *xml; | |
97 void *free_addr; | |
98 | |
99 FVECTOR location = {0, 0, 0, 1}; | |
100 FVECTOR direction = {0, 0, 0, 1}; | |
101 | |
102 // 今はなにもしてない. | |
103 obj = ps2util_obj_Create_fromXML(fieldImg); | |
104 ps2util_obj_Set_effect(obj, DEFAULT_SET); | |
105 // ps2util_obj_Set_texture(obj, tex); | |
106 | |
107 obj = (OBJECT*)malloc(sizeof(OBJECT)); | |
108 | |
109 memcpy(obj->xyz, location, sizeof(FVECTOR)); | |
110 memcpy(obj->angle, direction, sizeof(FVECTOR)); | |
111 | |
112 ps2util_obj_Renew_transMatrix(obj); | |
113 | |
114 | |
115 // ここでxml->sizの数も数えてたんだろうね | |
116 xml = xml_read_file(colImg); // | |
117 | |
118 if (malloc_align16(&free_addr, &self, sizeof(Field)) == -1) { | |
119 fprintf(stderr, "field.c: malloc_align16 error\n"); | |
120 fflush(stderr); | |
121 exit(EXIT_FAILURE); | |
122 } | |
123 self->object = obj; | |
124 self->next = NULL; | |
125 self->prev = NULL; | |
126 self->free_addr = free_addr; | |
127 #ifdef DEBUG | |
128 fprintf(main_fp, "malloc fieldNode addr = %x(free), %x(obj)\n", (int)free_addr, (int)self); | |
129 #endif | |
130 | |
131 col_init(&self->colface, xml); | |
132 | |
133 #ifdef DEBUG | |
134 fprintf(main_fp, " facenum = %d\n", self->colface.facenum); | |
135 fprintf(main_fp, " facenum = %x(free), ", (int)self->colface.free_addr); | |
136 fprintf(main_fp, "facenum = %x(obj)\n", (int)self->colface.colface); | |
137 #endif | |
138 //xml_free(xml); | |
139 return self; | |
140 } | |
141 */ | |
78 | 142 |
79 static void | 143 static void |
80 field_new_readCSV(FILE *fp, int id) | 144 field_new_readCSV(FILE *fp, int id) |
81 { | 145 { |
82 FieldPtr fieldHead = NULL; | 146 FieldPtr fieldHead = NULL; |
119 case 'c': // コースのロード | 183 case 'c': // コースのロード |
120 if (flag) { | 184 if (flag) { |
121 sscanf(bufp, " %s %s\n", fieldImg, colImg); | 185 sscanf(bufp, " %s %s\n", fieldImg, colImg); |
122 | 186 |
123 newField = field_create(fieldImg, colImg );//, tex); | 187 newField = field_create(fieldImg, colImg );//, tex); |
188 | |
124 if (!fieldHead) { | 189 if (!fieldHead) { |
125 fieldHead = prevField = newField; | 190 fieldHead = prevField = newField; |
126 } else { | 191 } else { |
127 prevField->next = newField; | 192 prevField->next = newField; |
128 newField->prev = prevField; | 193 newField->prev = prevField; |
129 prevField = newField; | 194 prevField = newField; |
130 } | 195 } |
131 newField->init = fieldHead; | 196 newField->init = fieldHead; |
132 field_num_max++; | 197 field_num_max++; |
133 } | 198 } |
134 break; | 199 break; |
135 | 200 |
136 default: | 201 default: |
157 コース先頭のポインタ | 222 コース先頭のポインタ |
158 /---------------------*/ | 223 /---------------------*/ |
159 void | 224 void |
160 field_init(int id) | 225 field_init(int id) |
161 { | 226 { |
227 printf("field_init()\n"); | |
162 FILE *fp; | 228 FILE *fp; |
163 const char *filename = "course/course.dat"; | 229 const char *filename = "course/course.dat"; |
164 | 230 |
165 if (!(fp = fopen(filename, "r"))) { | 231 if (!(fp = fopen(filename, "r"))) { |
166 fprintf(main_fp, "error read file %s\n", filename); | 232 fprintf(main_fp, "error read file %s\n", filename); |
167 exit(EXIT_FAILURE); | 233 exit(EXIT_FAILURE); |
168 } | 234 } |
169 field_new_readCSV(fp, id); | 235 field_new_readCSV(fp, id); |
236 printf("field_init()\n"); | |
170 fclose(fp); | 237 fclose(fp); |
171 } | 238 } |
172 | 239 |
173 static void | 240 static void |
174 field_draw(FieldPtr p) | 241 field_draw(FieldPtr p) |
175 { | 242 { |
176 ps2_vu0_unit_matrix((FMATRIX)(p->object->matrix)); | 243 // field_matrix |
177 | 244 FMATRIX fm; |
245 | |
246 changeMatrix( fm, p->object->matrix ); | |
247 | |
248 ps2_vu0_unit_matrix(fm); | |
249 | |
250 fm[3][0] = p->location[0]; | |
251 fm[3][1] = p->location[1]; | |
252 fm[3][2] = p->location[2]; | |
253 fm[3][3] = p->location[3]; | |
254 | |
255 returnMatrix( p->object->matrix, fm ); | |
256 | |
257 ps2util_obj_Draw(p->object); | |
258 | |
178 /* | 259 /* |
179 p->object->matrix[3][0] = p->location[0]; | 260 p->object->transfer[3][0] = p->location[0]; |
180 p->object->matrix[3][1] = p->location[1]; | 261 p->object->transfer[3][1] = p->location[1]; |
181 p->object->matrix[3][2] = p->location[2]; | 262 p->object->transfer[3][2] = p->location[2]; |
182 p->object->matrix[3][3] = p->location[3]; | 263 p->object->transfer[3][3] = p->location[3]; |
183 */ | 264 */ |
184 | 265 |
185 // 上の5この処理、このやり方でも同じか確かめたい | |
186 for( int i = 0; i < 4; i ++ ) | |
187 p->object->matrix[11+i] = p->location[0]; | |
188 | |
189 // 今ちょっとコメント | |
190 //ps2util_obj_Draw(p->object); | 266 //ps2util_obj_Draw(p->object); |
191 } | 267 } |
192 | 268 |
193 | 269 |
194 void field_update(CarPtr car) | 270 void field_update(CarPtr car) |
278 { | 354 { |
279 field_actual = p; | 355 field_actual = p; |
280 } | 356 } |
281 | 357 |
282 FieldPtr | 358 FieldPtr |
283 field_get_actual() | 359 field_get_actual( void ) |
284 { | 360 { |
285 return field_actual; | 361 return field_actual; |
286 } | 362 } |