annotate field.cc @ 128:d9e3137e70a0

xml name change
author e085768
date Thu, 07 Jul 2011 16:10:21 +0900
parents 030394675d8e
children d88dfd3d46c5
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
1 #include <stdio.h>
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
2 #include <stdlib.h>
90
8edae89a3877 compile on Mac OS X
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
3 #include <stdbool.h>
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
4 #include <string.h>
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
5 #include "libps2.h"
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
6 #include "ps2util.h"
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
7 #include "mytype.h"
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
8 #include "field.h"
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
9 #include "car.h"
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
10 #include "quotanion.h"
90
8edae89a3877 compile on Mac OS X
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 88
diff changeset
11 #include <stdbool.h>
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
12
126
030394675d8e succes compile
e085768
parents: 124
diff changeset
13 #include "Application.h"
030394675d8e succes compile
e085768
parents: 124
diff changeset
14
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
15 #define BUFSIZE 256
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
16
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
17 /* --- main.c --- */
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
18 extern FILE *main_fp;
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
19
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
20 // コース一周分のfieldの数
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
21 static int field_num_max = 0;
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
22
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
23 // 自分が走ったfieldの数のカウント
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
24 // field_num_max > field_num になったら一周って意味かも。違うかも
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
25 static int field_num = 1;
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
26
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
27 // FieldPtrのroot部分を指し示してるんだともう
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
28 static FieldPtr field_list;
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
29
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
30 // 現在走ってるfield
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
31 static FieldPtr field_actual;
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
32
126
030394675d8e succes compile
e085768
parents: 124
diff changeset
33 extern Viewer *droot;
030394675d8e succes compile
e085768
parents: 124
diff changeset
34
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
35 // 適当に自作:miya
124
e085768
parents: 118
diff changeset
36 PolygonInfo* xml_read_file(char *colImg)
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
37 {
124
e085768
parents: 118
diff changeset
38 PolygonInfo* test;
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
39 printf("xml_read_file");
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
40
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
41 return test;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
42 }
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
43
124
e085768
parents: 118
diff changeset
44
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
45
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
46 static FieldPtr
124
e085768
parents: 118
diff changeset
47 field_create(char *fieldImg, char *colImg )// OBJECT *tex)
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
48 {
124
e085768
parents: 118
diff changeset
49 FieldPtr self;
e085768
parents: 118
diff changeset
50 OBJECT *obj;
e085768
parents: 118
diff changeset
51 void *free_addr;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
52
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
53 // xmlファイル内で名前を個別に付けました
126
030394675d8e succes compile
e085768
parents: 124
diff changeset
54 // 初期化
030394675d8e succes compile
e085768
parents: 124
diff changeset
55 droot->createFromXMLfile(fieldImg);
030394675d8e succes compile
e085768
parents: 124
diff changeset
56 obj = droot->createSceneGraph("hoge");
124
e085768
parents: 118
diff changeset
57
126
030394675d8e succes compile
e085768
parents: 124
diff changeset
58 droot->createFromXMLfile(colImg);
030394675d8e succes compile
e085768
parents: 124
diff changeset
59 OBJECT *col_obj = droot->createSceneGraph("hoge");
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
60
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
61 if (malloc_align16(&free_addr, &self, sizeof(Field)) == -1) {
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
62 fprintf(stderr, "field.c: malloc_align16 error\n");
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
63 fflush(stderr);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
64 exit(EXIT_FAILURE);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
65 }
124
e085768
parents: 118
diff changeset
66
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
67 self->object = obj;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
68 self->next = NULL;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
69 self->prev = NULL;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
70 self->free_addr = free_addr;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
71 #ifdef DEBUG
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
72 fprintf(main_fp, "malloc fieldNode addr = %x(free), %x(obj)\n", (int)free_addr, (int)self);
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
73 #endif
124
e085768
parents: 118
diff changeset
74
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
75 printf("col_init()の直前!\n");
124
e085768
parents: 118
diff changeset
76 // ちょっと今だけコメント ---
126
030394675d8e succes compile
e085768
parents: 124
diff changeset
77 col_init(&self->colface, col_obj);
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
78
34
55f2d0326c4d *** empty log message ***
gongo
parents: 33
diff changeset
79 #ifdef DEBUG
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
80 fprintf(main_fp, " facenum = %d\n", self->colface.facenum);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
81 fprintf(main_fp, " facenum = %x(free), ", (int)self->colface.free_addr);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
82 fprintf(main_fp, "facenum = %x(obj)\n", (int)self->colface.colface);
34
55f2d0326c4d *** empty log message ***
gongo
parents: 33
diff changeset
83 #endif
55f2d0326c4d *** empty log message ***
gongo
parents: 33
diff changeset
84
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
85 return self;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
86 }
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
87
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
88
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
89
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
90 /*
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
91 static FieldPtr
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
92 field_create(char *fieldImg, char *colImg)//, TEXTURE* tex)
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
93 {
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
94 FieldPtr self;
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
95 OBJECT *obj;
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
96 PolygonInfo *xml;
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
97 void *free_addr;
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
98
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
99 FVECTOR location = {0, 0, 0, 1};
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
100 FVECTOR direction = {0, 0, 0, 1};
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
101
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
102 // 今はなにもしてない.
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
103 obj = ps2util_obj_Create_fromXML(fieldImg);
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
104 ps2util_obj_Set_effect(obj, DEFAULT_SET);
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
105 // ps2util_obj_Set_texture(obj, tex);
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
106
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
107 obj = (OBJECT*)malloc(sizeof(OBJECT));
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
108
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
109 memcpy(obj->xyz, location, sizeof(FVECTOR));
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
110 memcpy(obj->angle, direction, sizeof(FVECTOR));
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
111
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
112 ps2util_obj_Renew_transMatrix(obj);
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
113
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
114
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
115 // ここでxml->sizの数も数えてたんだろうね
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
116 xml = xml_read_file(colImg); //
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
117
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
118 if (malloc_align16(&free_addr, &self, sizeof(Field)) == -1) {
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
119 fprintf(stderr, "field.c: malloc_align16 error\n");
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
120 fflush(stderr);
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
121 exit(EXIT_FAILURE);
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
122 }
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
123 self->object = obj;
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
124 self->next = NULL;
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
125 self->prev = NULL;
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
126 self->free_addr = free_addr;
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
127 #ifdef DEBUG
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
128 fprintf(main_fp, "malloc fieldNode addr = %x(free), %x(obj)\n", (int)free_addr, (int)self);
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
129 #endif
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
130
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
131 col_init(&self->colface, xml);
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
132
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
133 #ifdef DEBUG
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
134 fprintf(main_fp, " facenum = %d\n", self->colface.facenum);
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
135 fprintf(main_fp, " facenum = %x(free), ", (int)self->colface.free_addr);
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
136 fprintf(main_fp, "facenum = %x(obj)\n", (int)self->colface.colface);
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
137 #endif
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
138 //xml_free(xml);
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
139 return self;
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
140 }
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
141 */
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
142
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
143 static void
32
b5c5ffd4d2f2 *** empty log message ***
gongo
parents: 18
diff changeset
144 field_new_readCSV(FILE *fp, int id)
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
145 {
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
146 FieldPtr fieldHead = NULL;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
147 FieldPtr newField = NULL;
124
e085768
parents: 118
diff changeset
148 FieldPtr prevField = NULL;
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
149 char buff[BUFSIZE], *bufp;
124
e085768
parents: 118
diff changeset
150 char fieldImg[BUFSIZE], colImg[BUFSIZE];//, texname[BUFSIZE];
115
31dd5c07f7c1 class OBJECT:SceanGraph
e085768
parents: 100
diff changeset
151
31dd5c07f7c1 class OBJECT:SceanGraph
e085768
parents: 100
diff changeset
152 //TEXTURE *tex = NULL;
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
153 int course_id;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
154 bool flag = false;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
155
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
156 while ((bufp = fgets(buff, BUFSIZE, fp)) != NULL) {
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
157 bufp++;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
158
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
159 switch (buff[0]) {
124
e085768
parents: 118
diff changeset
160
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
161 case 'n': // コースIDの読み取り
124
e085768
parents: 118
diff changeset
162 if (flag == false) {
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
163 sscanf(bufp, " %d\n", &course_id);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
164 if (id == course_id) {
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
165 flag = true;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
166 }
124
e085768
parents: 118
diff changeset
167 }
e085768
parents: 118
diff changeset
168 else {
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
169 goto FINISH_LOAD;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
170 }
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
171 break;
115
31dd5c07f7c1 class OBJECT:SceanGraph
e085768
parents: 100
diff changeset
172
31dd5c07f7c1 class OBJECT:SceanGraph
e085768
parents: 100
diff changeset
173 /*
124
e085768
parents: 118
diff changeset
174 case 't': // テクスチャのロード
e085768
parents: 118
diff changeset
175 if (flag) {
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
176 sscanf(bufp, " %s\n", texname);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
177 //tex = read_png_file(texname);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
178 ps2util_tex_Set(tex);
124
e085768
parents: 118
diff changeset
179 }
e085768
parents: 118
diff changeset
180 break;
115
31dd5c07f7c1 class OBJECT:SceanGraph
e085768
parents: 100
diff changeset
181 */
31dd5c07f7c1 class OBJECT:SceanGraph
e085768
parents: 100
diff changeset
182
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
183 case 'c': // コースのロード
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
184 if (flag) {
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
185 sscanf(bufp, " %s %s\n", fieldImg, colImg);
124
e085768
parents: 118
diff changeset
186
e085768
parents: 118
diff changeset
187 newField = field_create(fieldImg, colImg );//, tex);
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
188
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
189 if (!fieldHead) {
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
190 fieldHead = prevField = newField;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
191 } else {
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
192 prevField->next = newField;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
193 newField->prev = prevField;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
194 prevField = newField;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
195 }
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
196 newField->init = fieldHead;
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
197 field_num_max++;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
198 }
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
199 break;
124
e085768
parents: 118
diff changeset
200
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
201 default:
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
202 break;
116
ed702e49cc6c conpile
e085768
parents: 115
diff changeset
203
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
204 }
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
205 }
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
206
124
e085768
parents: 118
diff changeset
207
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
208 FINISH_LOAD:
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
209 // 先頭と最後尾のリンクを張る
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
210 newField->next = newField->init;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
211 newField->init->prev = newField;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
212
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
213 field_list = field_actual = fieldHead;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
214 }
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
215
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
216
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
217 /*---------------------/
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
218 FieldPtr
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
219 field_init:
88
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
220 指定したファイルからコースを生成する。
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
221 戻り値
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
222 コース先頭のポインタ
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
223 /---------------------*/
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
224 void
32
b5c5ffd4d2f2 *** empty log message ***
gongo
parents: 18
diff changeset
225 field_init(int id)
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
226 {
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
227 printf("field_init()\n");
115
31dd5c07f7c1 class OBJECT:SceanGraph
e085768
parents: 100
diff changeset
228 FILE *fp;
31dd5c07f7c1 class OBJECT:SceanGraph
e085768
parents: 100
diff changeset
229 const char *filename = "course/course.dat";
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
230
115
31dd5c07f7c1 class OBJECT:SceanGraph
e085768
parents: 100
diff changeset
231 if (!(fp = fopen(filename, "r"))) {
31dd5c07f7c1 class OBJECT:SceanGraph
e085768
parents: 100
diff changeset
232 fprintf(main_fp, "error read file %s\n", filename);
31dd5c07f7c1 class OBJECT:SceanGraph
e085768
parents: 100
diff changeset
233 exit(EXIT_FAILURE);
31dd5c07f7c1 class OBJECT:SceanGraph
e085768
parents: 100
diff changeset
234 }
31dd5c07f7c1 class OBJECT:SceanGraph
e085768
parents: 100
diff changeset
235 field_new_readCSV(fp, id);
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
236 printf("field_init()\n");
115
31dd5c07f7c1 class OBJECT:SceanGraph
e085768
parents: 100
diff changeset
237 fclose(fp);
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
238 }
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
239
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
240 static void
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
241 field_draw(FieldPtr p)
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
242 {
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
243 // field_matrix
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
244 FMATRIX fm;
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
245
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
246 changeMatrix( fm, p->object->matrix );
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
247
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
248 ps2_vu0_unit_matrix(fm);
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
249
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
250 fm[3][0] = p->location[0];
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
251 fm[3][1] = p->location[1];
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
252 fm[3][2] = p->location[2];
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
253 fm[3][3] = p->location[3];
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
254
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
255 returnMatrix( p->object->matrix, fm );
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
256
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
257 ps2util_obj_Draw(p->object);
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
258
124
e085768
parents: 118
diff changeset
259 /*
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
260 p->object->transfer[3][0] = p->location[0];
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
261 p->object->transfer[3][1] = p->location[1];
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
262 p->object->transfer[3][2] = p->location[2];
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
263 p->object->transfer[3][3] = p->location[3];
124
e085768
parents: 118
diff changeset
264 */
118
b6dc70f6aa7e chenge OBJECT->transfer
e085768
parents: 116
diff changeset
265
124
e085768
parents: 118
diff changeset
266 //ps2util_obj_Draw(p->object);
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
267 }
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
268
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
269
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
270 void field_update(CarPtr car)
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
271 {
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
272 FieldPtr p;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
273
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
274 p = field_actual;
126
030394675d8e succes compile
e085768
parents: 124
diff changeset
275
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
276 // current
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
277 p->location[0] = -car->location[0];
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
278 p->location[1] = -car->location[1];
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
279 p->location[2] = -car->location[2];
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
280 p->location[3] = 1;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
281 field_draw(p);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
282
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
283 // next
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
284 p = field_actual->next;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
285 if (p) {
91
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
286 p->location[0] = -car->location[0];
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
287 p->location[1] = -car->location[1];
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
288 p->location[2] = -car->location[2];
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
289 p->location[3] = 1;
cb6c6de125dc halfway
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 90
diff changeset
290 field_draw(p);
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
291 }
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
292
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
293 // prev
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
294 p = field_actual->prev;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
295 if (p) {
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
296 p->location[0] = -car->location[0];
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
297 p->location[1] = -car->location[1];
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
298 p->location[2] = -car->location[2];
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
299 p->location[3] = 1;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
300 field_draw(p);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
301 }
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
302 }
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
303
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
304 void
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
305 field_destroy()
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
306 {
116
ed702e49cc6c conpile
e085768
parents: 115
diff changeset
307 /*
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
308 FieldPtr p = field_list;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
309 FieldPtr d;
115
31dd5c07f7c1 class OBJECT:SceanGraph
e085768
parents: 100
diff changeset
310
116
ed702e49cc6c conpile
e085768
parents: 115
diff changeset
311
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
312 TEXTURE *t;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
313
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
314 p->prev->next = NULL;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
315
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
316 t = p->object->surfaces->texture;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
317 ps2util_tex_Exclude(t);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
318 free_texture(t);
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
319
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
320 while (p) {
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
321 d = p;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
322 p = p->next;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
323 ps2util_obj_Free(d->object);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
324 free(d->colface.free_addr);
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
325 free(d->free_addr);
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
326 #ifdef DEBUG
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
327 fprintf(main_fp, "free fieldNode addr = %x\n", (int)d->free_addr);
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
328 #endif
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
329 }
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
330
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
331 field_num_max = 0;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
332 field_num = 1;
115
31dd5c07f7c1 class OBJECT:SceanGraph
e085768
parents: 100
diff changeset
333
31dd5c07f7c1 class OBJECT:SceanGraph
e085768
parents: 100
diff changeset
334 */
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
335 }
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
336
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
337 /*
88
ce9ef7dcf2f0 convert UTF-8
Shinji KONO <kono@ie.u-ryukyu.ac.jp>
parents: 43
diff changeset
338 * 周回記録。1周する毎に1を返す。
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
339 */
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
340 int
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
341 field_rap_increment(int n)
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
342 {
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
343 field_num += n;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
344 if (field_num > field_num_max) {
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
345 field_num = 1;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
346 return 1;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
347 } else {
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
348 return 0;
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
349 }
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
350 }
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
351
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
352 void
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
353 field_set_actual(FieldPtr p)
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
354 {
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
355 field_actual = p;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
356 }
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
357
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
358 FieldPtr
128
d9e3137e70a0 xml name change
e085768
parents: 126
diff changeset
359 field_get_actual( void )
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
360 {
96
0b65ca27f113 compile on Mac OS X 2
Atuto SHIROMA <e095729@ie.u-ryukyu.ac.jp>
parents: 91
diff changeset
361 return field_actual;
0
0fae5658fb0b Initial revision
gongo
parents:
diff changeset
362 }