Mercurial > hg > Members > tkaito > task_dandy
changeset 7:c015109a6041
schedule add. 10% done.
author | tkaito |
---|---|
date | Tue, 29 Jun 2010 04:25:32 +0900 |
parents | 661ec1e92042 |
children | 7c60ef3fca5b |
files | blender/e_redbullet.blend dandy.h image/mob/enemy_bluebullet.png image/mob/enemy_laser.png image/mob/enemy_lasersplosh.001.png image/mob/enemy_lasersplosh.002.png image/mob/enemy_lasersplosh.003.png image/mob/enemy_lasersplosh.png image/mob/enemy_lightning.png image/mob/enemy_redbullet.png main.cc schedule.cc spe/Move00.cc spe/Move00.h spe/Move01.cc spe/Move01.h spe/Move02.cc spe/Move02.h spe/Move03.cc spe/Move03.h spe/Move04.cc spe/Move04.h spe/Move05.cc spe/Move05.h spe/Move06.cc spe/Move06.h spe/Move07.cc spe/Move07.h spe/Move08.cc spe/Move08.h spe/TitleColl.cc spe/TitleColl.h spe/TitleMove.cc spe/TitleMove.h stage_init.cc xml/e_redbullet.h xml/e_redbullet.xml xml/plane.h xml/plane.xml |
diffstat | 39 files changed, 1209 insertions(+), 48 deletions(-) [+] |
line wrap: on
line diff
--- a/dandy.h Sun Jun 27 22:58:57 2010 +0900 +++ b/dandy.h Tue Jun 29 04:25:32 2010 +0900 @@ -25,9 +25,12 @@ int score; //4 void *parent; void *root; + int flag; } *ObjPropertyPtr, ObjProperty; +extern ObjPropertyPtr charactor; + static const int ENEMY_NUM = 1; static const float player_speed = 10.0f; @@ -46,8 +49,9 @@ extern void title_coll(SceneGraphPtr node, void *sgroot_, int w, int h, SceneGraphPtr tree); extern void dandy_move(SceneGraphPtr node, void *sgroot_, int w, int h); extern void dandy_coll(SceneGraphPtr node, void *sgroot_, int w, int h,SceneGraphPtr tree); -extern void create_title(void *sgroot, int w, int h, ObjPropertyPtr charactor); -extern void create_stage(void *sgroot, int w, int h, ObjPropertyPtr charactor); +extern void create_back(void *sgroot, int w, int h); +extern void create_stage(void *sgroot, int w, int h); +extern void schedule(SceneGraphPtr node, void *sgroot_, int w, int h); typedef struct enemy_state { const char *charano; @@ -56,9 +60,10 @@ } state; + //const state enemystate[50]; -#define ENEMY_STATUS_TABLE {\ +#define ENEMY_STATUS_TABLE {\ ENEMY_STATUS("title001" , 0 , 0), \ ENEMY_STATUS("greencrab", 330, 98), \ ENEMY_STATUS("plane", 470, 37), \
--- a/main.cc Sun Jun 27 22:58:57 2010 +0900 +++ b/main.cc Tue Jun 29 04:25:32 2010 +0900 @@ -26,7 +26,7 @@ const state status[50] = ENEMY_STATUS_TABLE; void -init_charactor(Viewer *sgroot, ObjPropertyPtr charactor) +init_charactor(Viewer *sgroot) { sgroot->createFromXMLfile("xml/mydandy.xml"); sgroot->createFromXMLfile("xml/gameover.xml"); @@ -36,24 +36,25 @@ sgroot->createFromXMLfile("xml/title2.xml"); for (int i = 0; i < ENEMY_NUM; i++) { - charactor[0].root = (void*)sgroot->createSceneGraph(status[1].charano); - charactor[0].score = status[1].score; - charactor[0].vital = status[1].vital; + charactor[0].root = (void*)sgroot->createSceneGraph(status[0].charano); + charactor[0].score = status[0].score; + charactor[0].vital = status[0].vital; } } +ObjPropertyPtr charactor; + MainLoopPtr dandy::init(Viewer *sgroot, int w, int h) { - ObjPropertyPtr charactor = (ObjPropertyPtr)sgroot->manager->allocate(sizeof(ObjPropertyPtr)*16); - init_charactor(sgroot, charactor); - create_title(sgroot, w, h, charactor); + charactor = (ObjPropertyPtr)sgroot->manager->allocate(sizeof(ObjPropertyPtr)*16); + init_charactor(sgroot); + create_back(sgroot, w, h); return sgroot; } - extern Application * application() { return new dandy();
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/schedule.cc Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,287 @@ +#include "dandy.h" + +static const int FRAME_RATE = 32; + +void Putenemy(int charano, int x, int y, int sx, int sy, int move, int coll, + SceneGraphPtr node, void *sgroot_); + +void +schedule(SceneGraphPtr node, void *sgroot_, int w, int h) +{ + switch (node->frame) { + case 1: + break; + case FRAME_RATE * 2: + Putenemy(1, w/2, 0, 2, 4, MOVE_00, MOVE_00, node, sgroot_); + break; + case FRAME_RATE * 3: + Putenemy(1, w/3, 0, 0, 8, MOVE_00, MOVE_00, node, sgroot_); + Putenemy(1, w/2, 0, 0, 8, MOVE_00, MOVE_00, node, sgroot_); + break; + /* + case FRAME_RATE * 4: + Putenemy(1, 120, -128, 0, 4, chara_state0); + break; + case FRAME_RATE * 5: + Putenemy(1, 224, -128, 1, 1, chara_state0); + Putenemy(1, 184, -128, 1, 1, chara_state0); + break; + case FRAME_RATE * 6: + Putenemy(1, 120, -128, 1, 2, chara_state0); + break; + case FRAME_RATE * 7: + Putenemy(1, 56, -128, 0, 1, chara_state0); + Putenemy(1, 184, -128, 0, 1, chara_state0); + break; + case FRAME_RATE * 8: + Putenemy(2, 120, -128, 0, 1, chara_state0); + break; + + case FRAME_RATE * 12: + Putenemy(1, 1280 - 128 - 120, -128, 0, 1, chara_state4); + break; + case FRAME_RATE * 13: + Putenemy(1, 1280 - 128 - 120, -128, 0, 1, chara_state4); + break; + case FRAME_RATE * 14: + Putenemy(1, 1280 - 128 - 120, -128, 0, 1, chara_state4); + break; + case FRAME_RATE * 15: + Putenemy(2, 1280 - 128 - 120, -128, -1, 1, chara_state4); + break; + case FRAME_RATE * 16: + Putenemy(2, 1280 - 128 - 120, -128, 0, 1, chara_state4); + break; + case FRAME_RATE * 17: + Putenemy(2, 1280 - 128 - 120, -128, 0, 1, chara_state4); + break; + case FRAME_RATE * 18: + Putenemy(1, 1280 - 128 - 120, -32, 0, 1, chara_state4); + Putenemy(1, 1280 - 128, -128, -2, 1, chara_state4); + Putenemy(1, 800, -88, -1, 1, chara_state4); + break; + + case FRAME_RATE * 24: + Putenemy(1, 256, -128, 0, 1, chara_state4); + Putenemy(1, 1280 - 256 - 128, -128, 0, 1, chara_state4); + break; + case FRAME_RATE * 25: + Putenemy(2, 512, -128, 0, 1, chara_state4); + Putenemy(2, 1280 - 128, -128, 0, 1, chara_state4); + break; + case FRAME_RATE * 26: + Putenemy(1, 384, -128, 0, 1, chara_state4); + Putenemy(1, 1280 - 256, -128, 0, 2, chara_state4); + Putenemy(1, 512, -128, 0, 3, chara_state4); + Putenemy(1, 1280 - 256, -128, 0, 2, chara_state4); + break; + case FRAME_RATE * 27: + Putenemy(2, 512, -128, 0, 3, chara_state2); + Putenemy(2, 256 - 128, -128, 0, 2, chara_state2); + Putenemy(2, 768, -128, 0, 4, chara_state2); + Putenemy(2, 128, -128, 0, 3, chara_state2); + break; + case FRAME_RATE * 28: + Putenemy(1, 256, -128, 0, 1, chara_state4); + Putenemy(1, 1280 - 256 - 128, -128, 0, 1, chara_state4); + break; + case FRAME_RATE * 29: + Putenemy(2, 256, -128, 0, 1, chara_state4); + Putenemy(2, 1280 - 256 - 128, -128, 0, 1, chara_state4); + break; + case FRAME_RATE * 30: + Putenemy(1, 256, -128, 0, 1, chara_state4); + Putenemy(1, 1280 - 256 - 128, -128, 0, 1, chara_state4); + break; + + case FRAME_RATE * 33: + Putenemy(1, 256, 1088, 0, -1, chara_state5); + Putenemy(1, 1280 - 256 - 128, 1088, 0, -1, chara_state5);//5/22/pm5:300 + break; + case FRAME_RATE * 34: + Putenemy(2, 256, 1088, 0, -1, chara_state5); + Putenemy(2, 1280 - 256 - 128, 1088, 0, -1, chara_state5); + break; + case FRAME_RATE * 35: + Putenemy(1, 256, 1088, 0, -1, chara_state5); + Putenemy(1, 1280 - 256 - 128, 1088, 0, -1, chara_state5); + break; + case FRAME_RATE * 36: + Putenemy(2, 256, 1088, 0, -1, chara_state5); + Putenemy(2, 1280 - 256 - 128, 1088, 0, -1, chara_state5); + break; + case FRAME_RATE * 37: + Putenemy(1, 256, 1088, 0, -1, chara_state5); + Putenemy(1, 1280 - 256 - 128, 1088, 0, -1, chara_state5); + break; + case FRAME_RATE * 38: + Putenemy(2, 256, 1088, 0, -1, chara_state5); + Putenemy(2, 1280 - 256 - 128, 1088, 0, -1, chara_state5); + break; + case FRAME_RATE * 39: + Putenemy(1, 256, 1088, 0, -1, chara_state5); + Putenemy(1, 1280 - 256 - 128, 1088, 0, -1, chara_state5); + break; + + case FRAME_RATE * 50: + Putenemy(40, rand() % (1280 - 256) + 128, -128, 0, 1, chara_state3); + break; + case FRAME_RATE * 46: + Putenemy(40, rand() % (1280 - 256) + 128, -128, 0, 1, chara_state3); + break; + case FRAME_RATE * 54: + Putenemy(40, rand() % (1280 - 256) + 128, -128, 0, 1, chara_state3); + break; + + case FRAME_RATE * 60: + Putenemy(1, 256, 1088, 0, -1, chara_state6); + Putenemy(1, 1280 - 256 - 128, 1088, 0, -1, chara_state6); + break; + case FRAME_RATE * 61: + Putenemy(1, 256, 1088, 0, -1, chara_state6); + Putenemy(1, 1280 - 256 - 128, 1088, 0, -1, chara_state6); + break; + case FRAME_RATE * 62: + Putenemy(1, 256, 1088, 0, -1, chara_state6); + Putenemy(1, 1280 - 256 - 128, 1088, 0, -1, chara_state6); + break; + case FRAME_RATE * 63: + Putenemy(1, 256, 1088, 0, -1, chara_state6); + Putenemy(1, 1280 - 256 - 128, 1088, 0, -1, chara_state6); + break; + case FRAME_RATE * 64: + Putenemy(1, 256, 1088, 0, -1, chara_state6); + Putenemy(1, 1280 - 256 - 128, 1088, 0, -1, chara_state6); + break; + case FRAME_RATE * 65: + Putenemy(40, 256, 1088, 0, -1, chara_state6); + Putenemy(40, 1280 - 256 - 128, 1088, 0, -1, chara_state6); + break; + + case FRAME_RATE * 80: + Putenemy(42, rand() % (1280 - 256) + 128, -128, 0, 1, chara_state7); + break; + case FRAME_RATE * 66: + Putenemy(41, rand() % (1280 - 256) + 128, -128, 0, 1, chara_state7); + break; + case FRAME_RATE * 84: + Putenemy(42, rand() % (1280 - 256) + 128, -128, 0, 1, chara_state7); + break; + case FRAME_RATE * 70: + Putenemy(41, rand() % (1280 - 256) + 128, -128, 0, 1, chara_state7); + break; + case FRAME_RATE * 88: + Putenemy(42, rand() % (1280 - 256) + 128, -128, 0, 1, chara_state7); + break; + case FRAME_RATE * 74: + Putenemy(41, rand() % (1280 - 256) + 128, -128, 0, 1, chara_state7); + break; + case FRAME_RATE * 92: + Putenemy(42, rand() % (1280 - 256) + 128, -128, 0, 1, chara_state7); + break; + case FRAME_RATE * 78: + Putenemy(41, rand() % (1280 - 256) + 128, -128, 0, 1, chara_state7); + break; + + case FRAME_RATE * 100: + Putenemy(41, 256, -128, 0, 1, chara_state7); + Putenemy(41, 1280 - 256 - 128, -128, 0, 1, chara_state7); + break; + case FRAME_RATE * 81: + Putenemy(42, 256, -128, 0, 1, chara_state7); + Putenemy(42, 1280 - 256 - 128, -128, 0, 1, chara_state7); + break; + case FRAME_RATE * 104: + Putenemy(41, 256, -128, 0, 1, chara_state7); + Putenemy(41, 1280 - 256 - 128, -128, 0, 1, chara_state7); + break; + case FRAME_RATE * 83: + Putenemy(42, 256, -128, 0, 1, chara_state7); + Putenemy(42, 1280 - 256 - 128, -128, 0, 1, chara_state7); + break; + case FRAME_RATE * 108: + Putenemy(41, 256, -128, 0, 1, chara_state7); + Putenemy(41, 1280 - 256 - 128, -128, 0, 1, chara_state7); + break; + case FRAME_RATE * 85: + Putenemy(42, 256, -128, 0, 1, chara_state7); + Putenemy(42, 1280 - 256 - 128, -128, 0, 1, chara_state7); + break; + case FRAME_RATE * 112: + Putenemy(41, 256, -128, 0, 1, chara_state7); + Putenemy(41, 1280 - 256 - 128, -128, 0, 1, chara_state7); + break; + + case FRAME_RATE * 130: + SoundStop(); + SoundPlay(4); + for(p = active_chara_list;p!=NULL;p=p->next) + { + p->f = FALSE; + p->state = delete_chara; + p->collision = noaction; + } + Putenemy(4, 520, -128, 0, 1, chara_state8); // 1面ボスをPutenemy + } + */ + } +} + +ObjProperty enemy[300]; +ObjPropertyPtr e; + +void +create_enemy(SchedTask *s, void *enemy_, void *b) +{ + ObjPropertyPtr e = (ObjPropertyPtr)enemy_; + SceneGraphPtr back1, enemy1; + back1 = (SceneGraphPtr)e->parent; + enemy1 = (SceneGraphPtr)e->root; + + enemy1->xyz[0] = e->x; + enemy1->xyz[1] = e->y; + + back1->addChild(enemy1); + +} + +void +Putenemy(int charano, int x, int y, int sx, int sy, int move, int coll, + SceneGraphPtr node, void *sgroot_) +{ + SceneGraphRoot *sgroot = (SceneGraphRoot *)sgroot_; + SceneGraphPtr obj = (SceneGraphPtr)charactor[charano].root; + + int ii = 0; + e = &enemy[0]; + while ((e->flag) == 1) { + ii++; + if (ii == 100) + return; + e++; + } + e->x = x; + e->y = y; + e->vx = sx; + e->vy = sy; + e->root = obj; + e->parent = node; + e->flag = 1; + e->vital = charactor[charano].vital; + //e->move = move; + e->score = charactor[charano].score; + //e->dt1 = e->dt2 = 0; + //e->tama = tf; + + obj->xyz[0] = x; + obj->xyz[1] = y; + obj->stack_xyz[0] = sx; + obj->stack_xyz[1] = sy; + + int size = sizeof(ObjPropertyPtr); + //obj->set_move_collision(move, coll); + sgroot->set_game_task(move, e, size, create_enemy); + + node->addChild(obj); + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spe/Move00.cc Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,21 @@ +#include <stdio.h> +#include "SchedTask.h" +#include "Move00.h" +#include "Func.h" + +/* これは必須 */ +SchedDefineTask(Move00); + +static int +run(SchedTask *s,void *rbuf, void *wbuf) +{ + ObjPropertyPtr i_obj = (ObjPropertyPtr)s->get_input(rbuf, 0); + ObjPropertyPtr o_obj = (ObjPropertyPtr)s->get_output(wbuf, 0); + + o_obj = i_obj; + + o_obj->x = i_obj->x + i_obj->vx; + o_obj->y = i_obj->y + i_obj->vy; + + return 0; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spe/Move00.h Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,29 @@ +#ifndef INCLUDED_TASK_HELLO +#define INCLUDED_TASK_HELLO + +#ifndef INCLUDED_SCHED_TASK +# include "SchedTask.h" +#endif +/* +class Twice : public SchedTask { +public: + SchedConstructor(Twice); + + int run(void *r, void *w); +}; + */ + +typedef struct { + double x, y; + double vx, vy; + const char *chara; + int vital; + int score; + int remove; + void *parent; + void *root; + +} *ObjPropertyPtr, ObjProperty; + + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spe/Move01.cc Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,26 @@ +#include <stdio.h> +#include "SchedTask.h" +#include "Move01.h" +#include "Func.h" + +/* これは必須 */ +SchedDefineTask(Move01); + +static int +run(SchedTask *s,void *rbuf, void *wbuf) +{ + /* + int *i_data; + int *o_data; + long length; + + i_data = (int*)s->get_input(rbuf, 0); + o_data = (int*)s->get_output(wbuf, 0); + length = (long)s->get_param(0); + + for (int i = 0; i < length; i++) { + o_data[i] = i_data[i] * 2; + } + */ + return 0; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spe/Move01.h Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,16 @@ +#ifndef INCLUDED_TASK_HELLO +#define INCLUDED_TASK_HELLO + +#ifndef INCLUDED_SCHED_TASK +# include "SchedTask.h" +#endif +/* +class Twice : public SchedTask { +public: + SchedConstructor(Twice); + + int run(void *r, void *w); +}; + */ + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spe/Move02.cc Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,26 @@ +#include <stdio.h> +#include "SchedTask.h" +#include "Move02.h" +#include "Func.h" + +/* これは必須 */ +SchedDefineTask(Move02); + +static int +run(SchedTask *s,void *rbuf, void *wbuf) +{ + /* + int *i_data; + int *o_data; + long length; + + i_data = (int*)s->get_input(rbuf, 0); + o_data = (int*)s->get_output(wbuf, 0); + length = (long)s->get_param(0); + + for (int i = 0; i < length; i++) { + o_data[i] = i_data[i] * 2; + } + */ + return 0; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spe/Move02.h Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,16 @@ +#ifndef INCLUDED_TASK_HELLO +#define INCLUDED_TASK_HELLO + +#ifndef INCLUDED_SCHED_TASK +# include "SchedTask.h" +#endif +/* +class Twice : public SchedTask { +public: + SchedConstructor(Twice); + + int run(void *r, void *w); +}; + */ + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spe/Move03.cc Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,26 @@ +#include <stdio.h> +#include "SchedTask.h" +#include "Move03.h" +#include "Func.h" + +/* これは必須 */ +SchedDefineTask(Move03); + +static int +run(SchedTask *s,void *rbuf, void *wbuf) +{ + /* + int *i_data; + int *o_data; + long length; + + i_data = (int*)s->get_input(rbuf, 0); + o_data = (int*)s->get_output(wbuf, 0); + length = (long)s->get_param(0); + + for (int i = 0; i < length; i++) { + o_data[i] = i_data[i] * 2; + } + */ + return 0; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spe/Move03.h Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,16 @@ +#ifndef INCLUDED_TASK_HELLO +#define INCLUDED_TASK_HELLO + +#ifndef INCLUDED_SCHED_TASK +# include "SchedTask.h" +#endif +/* +class Twice : public SchedTask { +public: + SchedConstructor(Twice); + + int run(void *r, void *w); +}; + */ + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spe/Move04.cc Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,26 @@ +#include <stdio.h> +#include "SchedTask.h" +#include "Move04.h" +#include "Func.h" + +/* これは必須 */ +SchedDefineTask(Move04); + +static int +run(SchedTask *s,void *rbuf, void *wbuf) +{ + /* + int *i_data; + int *o_data; + long length; + + i_data = (int*)s->get_input(rbuf, 0); + o_data = (int*)s->get_output(wbuf, 0); + length = (long)s->get_param(0); + + for (int i = 0; i < length; i++) { + o_data[i] = i_data[i] * 2; + } + */ + return 0; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spe/Move04.h Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,16 @@ +#ifndef INCLUDED_TASK_HELLO +#define INCLUDED_TASK_HELLO + +#ifndef INCLUDED_SCHED_TASK +# include "SchedTask.h" +#endif +/* +class Twice : public SchedTask { +public: + SchedConstructor(Twice); + + int run(void *r, void *w); +}; + */ + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spe/Move05.cc Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,26 @@ +#include <stdio.h> +#include "SchedTask.h" +#include "Move05.h" +#include "Func.h" + +/* これは必須 */ +SchedDefineTask(Move05); + +static int +run(SchedTask *s,void *rbuf, void *wbuf) +{ + /* + int *i_data; + int *o_data; + long length; + + i_data = (int*)s->get_input(rbuf, 0); + o_data = (int*)s->get_output(wbuf, 0); + length = (long)s->get_param(0); + + for (int i = 0; i < length; i++) { + o_data[i] = i_data[i] * 2; + } + */ + return 0; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spe/Move05.h Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,16 @@ +#ifndef INCLUDED_TASK_HELLO +#define INCLUDED_TASK_HELLO + +#ifndef INCLUDED_SCHED_TASK +# include "SchedTask.h" +#endif +/* +class Twice : public SchedTask { +public: + SchedConstructor(Twice); + + int run(void *r, void *w); +}; + */ + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spe/Move06.cc Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,26 @@ +#include <stdio.h> +#include "SchedTask.h" +#include "Move06.h" +#include "Func.h" + +/* これは必須 */ +SchedDefineTask(Move06); + +static int +run(SchedTask *s,void *rbuf, void *wbuf) +{ + /* + int *i_data; + int *o_data; + long length; + + i_data = (int*)s->get_input(rbuf, 0); + o_data = (int*)s->get_output(wbuf, 0); + length = (long)s->get_param(0); + + for (int i = 0; i < length; i++) { + o_data[i] = i_data[i] * 2; + } + */ + return 0; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spe/Move06.h Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,16 @@ +#ifndef INCLUDED_TASK_HELLO +#define INCLUDED_TASK_HELLO + +#ifndef INCLUDED_SCHED_TASK +# include "SchedTask.h" +#endif +/* +class Twice : public SchedTask { +public: + SchedConstructor(Twice); + + int run(void *r, void *w); +}; + */ + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spe/Move07.cc Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,26 @@ +#include <stdio.h> +#include "SchedTask.h" +#include "Move07.h" +#include "Func.h" + +/* これは必須 */ +SchedDefineTask(Move07); + +static int +run(SchedTask *s,void *rbuf, void *wbuf) +{ + /* + int *i_data; + int *o_data; + long length; + + i_data = (int*)s->get_input(rbuf, 0); + o_data = (int*)s->get_output(wbuf, 0); + length = (long)s->get_param(0); + + for (int i = 0; i < length; i++) { + o_data[i] = i_data[i] * 2; + } + */ + return 0; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spe/Move07.h Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,16 @@ +#ifndef INCLUDED_TASK_HELLO +#define INCLUDED_TASK_HELLO + +#ifndef INCLUDED_SCHED_TASK +# include "SchedTask.h" +#endif +/* +class Twice : public SchedTask { +public: + SchedConstructor(Twice); + + int run(void *r, void *w); +}; + */ + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spe/Move08.cc Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,26 @@ +#include <stdio.h> +#include "SchedTask.h" +#include "Move08.h" +#include "Func.h" + +/* これは必須 */ +SchedDefineTask(Move08); + +static int +run(SchedTask *s,void *rbuf, void *wbuf) +{ + /* + int *i_data; + int *o_data; + long length; + + i_data = (int*)s->get_input(rbuf, 0); + o_data = (int*)s->get_output(wbuf, 0); + length = (long)s->get_param(0); + + for (int i = 0; i < length; i++) { + o_data[i] = i_data[i] * 2; + } + */ + return 0; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spe/Move08.h Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,16 @@ +#ifndef INCLUDED_TASK_HELLO +#define INCLUDED_TASK_HELLO + +#ifndef INCLUDED_SCHED_TASK +# include "SchedTask.h" +#endif +/* +class Twice : public SchedTask { +public: + SchedConstructor(Twice); + + int run(void *r, void *w); +}; + */ + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spe/TitleColl.cc Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,21 @@ +#include <stdio.h> +#include "SchedTask.h" +#include "TitleColl.h" +#include "Func.h" + +/* これは必須 */ +SchedDefineTask(TitleColl); + +static int +run(SchedTask *s,void *rbuf, void *wbuf) +{ + /* + SceneGraphRoot *sgroot = (SceneGraphRoot *)sgroot_; + Pad *pad = sgroot->getController(); + + if(pad->start.isPush()) { + create_stage(sgroot, w, h); + } + */ + return 0; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spe/TitleColl.h Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,29 @@ +#ifndef INCLUDED_TASK_HELLO +#define INCLUDED_TASK_HELLO + +#ifndef INCLUDED_SCHED_TASK +# include "SchedTask.h" +#endif +/* +class Twice : public SchedTask { +public: + SchedConstructor(Twice); + + int run(void *r, void *w); +}; + */ + +typedef struct { + double x, y; + double vx, vy; + const char *chara; + int vital; + int score; + int remove; + void *parent; + void *root; + +} *ObjPropertyPtr, ObjProperty; + + +#endif
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spe/TitleMove.cc Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,24 @@ +#include <stdio.h> +#include "SchedTask.h" +#include "TitleMove.h" +#include "Func.h" + +/* これは必須 */ +SchedDefineTask1(TitleMove, titlemove); + +static int +titlemove(SchedTask *s,void *rbuf, void *wbuf) +{ + ObjPropertyPtr i_obj; + ObjPropertyPtr o_obj; + + i_obj = (ObjPropertyPtr)s->get_input(rbuf, 0); + o_obj = (ObjPropertyPtr)s->get_output(wbuf, 0); + + o_obj[0] = i_obj[0]; + + //printf("x = %f\n", i_obj[0].x); + //printf("y = %f\n", i_obj[0].y); + + return 0; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/spe/TitleMove.h Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,30 @@ +#ifndef INCLUDED_TASK_HELLO +#define INCLUDED_TASK_HELLO + +#ifndef INCLUDED_SCHED_TASK +# include "SchedTask.h" +#endif +/* +class Twice : public SchedTask { +public: + SchedConstructor(Twice); + + int run(void *r, void *w); +}; + */ + +typedef struct { + double x, y; + double vx, vy; + int frame; + const char *chara; + int vital; + int score; + int remove; + void *parent; + void *root; + +} *ObjPropertyPtr, ObjProperty; + + +#endif
--- a/stage_init.cc Sun Jun 27 22:58:57 2010 +0900 +++ b/stage_init.cc Tue Jun 29 04:25:32 2010 +0900 @@ -1,53 +1,54 @@ #include "dandy.h" -void stage_move(SceneGraphPtr node, void *sgroot_, int w, int h); -void stage_coll(SceneGraphPtr node, void *sgroot_, int w, int h,SceneGraphPtr tree); +void +back_move(SceneGraphPtr node, void *sgroot_, int w, int h) +{ + schedule(node, sgroot_, w, h); + node->frame += 1; +} void -createSceneGraphFromProperty(SchedTask *s, void *charactor_, void *b) +back_coll(SceneGraphPtr node, void *sgroot_, int w, int h, SceneGraphPtr tree) +{ +} + +void +create_title(SchedTask *s, void *charactor_, void *b) { ObjPropertyPtr charactor = (ObjPropertyPtr)charactor_; SceneGraphPtr back1, title; back1 = (SceneGraphPtr)charactor[0].parent; title = (SceneGraphPtr)charactor[0].root; - title->xyz[0] = charactor[0].x; title->xyz[1] = charactor[0].y; - title->stack_xyz[0] = charactor[0].vx; - title->stack_xyz[1] = charactor[0].vy; back1->addChild(title); } void -create_title(void *sgroot_, int w, int h, ObjPropertyPtr charactor) +create_back(void *sgroot_, int w, int h) { Viewer *sgroot = (Viewer *)sgroot_; - SceneGraphPtr back1, title; + SceneGraphPtr back; - back1 = sgroot->createSceneGraph(); - sgroot->setSceneData(back1); - - /* createPropertyFromSceneGraph */ - title = sgroot->createSceneGraph("title001"); + back = sgroot->createSceneGraph(); + back->set_move_collision(back_move, back_coll); + sgroot->setSceneData(back); charactor[0].x = w/2; charactor[0].y = h/2; - charactor[0].vx = back1->stack_xyz[0]; - charactor[0].vy = back1->stack_xyz[1]; - //charactor[0].frame = back1->frame; - charactor[0].parent = (void*)back1; - charactor[0].root = (void*)title; + charactor[0].parent = (void*)back; int size = sizeof(ObjPropertyPtr)*16; /* set_game_task(int id, ObjProperty property, int size, PostFunction post_func) */ - /* DataSegment の List を渡すようにする*/ - sgroot->set_game_task(TITLE_MOVE, charactor, size, createSceneGraphFromProperty); + sgroot->set_game_task(TITLE_MOVE, charactor, size, create_title); + } + void create_stage(void *sgroot_, int w, int h, ObjPropertyPtr charactor) { @@ -56,8 +57,8 @@ SceneGraphPtr stage = sgroot->createSceneGraph(); SceneGraphPtr mydandy = sgroot->createSceneGraph("mydandy"); - mydandy->set_move_collision(dandy_move, dandy_coll); - stage->set_move_collision(stage_move, stage_coll); + //mydandy->set_move_collision(dandy_move, dandy_coll); + //stage->set_move_collision(stage_move, stage_coll); mydandy->xyz[0] = w/2; mydandy->xyz[1] = h*0.9; @@ -67,18 +68,3 @@ sgroot->setSceneData(stage); } -void -stage_move(SceneGraphPtr node, void *sgroot_, int w, int h) -{ - - //stage_plan(node, sgroot_, w, h); - node->frame += 1; - -} - -void -stage_coll(SceneGraphPtr node, void *sgroot_, int w, int h,SceneGraphPtr tree) -{ -} - -
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xml/e_redbullet.h Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,1 @@ +#define e_redbullet scene_graph
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xml/e_redbullet.xml Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,88 @@ +<?xml version="1.0"?> +<OBJECT-3D> + <surface name="e_redbullet" size="6" prim="Triangle" parent="NULL"> + <coordinate> + 30.113185 30.098001 0.000000 + -30.052460 30.098014 0.000000 + -30.052480 -30.067646 0.000000 + -30.052480 -30.067646 0.000000 + 30.113185 -30.067650 0.000000 + 30.113185 30.098001 0.000000 + </coordinate> + <normal> + 0.000000 -0.000000 1.000000 + 0.000000 -0.000000 1.000000 + 0.000000 -0.000000 1.000000 + 0.000000 -0.000000 1.000000 + 0.000000 -0.000000 1.000000 + 0.000000 -0.000000 1.000000 + </normal> + <model> + 0.030357 0.015178 0.000000 + </model> + <texture> + 0.995806 1.003316 + -0.004194 1.003316 + 0.000000 0.000000 + 0.000000 0.000000 + 1.000000 0.000000 + 0.995806 1.003316 + </texture> + <image name="enemy_redbullet.png"> + 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 + </image> + </surface> +</OBJECT-3D> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xml/plane.h Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,1 @@ +#define plane scene_graph
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xml/plane.xml Tue Jun 29 04:25:32 2010 +0900 @@ -0,0 +1,302 @@ +<?xml version="1.0"?> +<OBJECT-3D> + <surface name="plane" size="6" prim="Triangle" parent="NULL"> + <coordinate> + 30.113185 30.098001 0.000000 + -30.052460 30.098014 0.000000 + -30.052480 -30.067646 0.000000 + -30.052480 -30.067646 0.000000 + 30.113185 -30.067650 0.000000 + 30.113185 30.098001 0.000000 + </coordinate> + <normal> + 0.000000 -0.000000 1.000000 + 0.000000 -0.000000 1.000000 + 0.000000 -0.000000 1.000000 + 0.000000 -0.000000 1.000000 + 0.000000 -0.000000 1.000000 + 0.000000 -0.000000 1.000000 + </normal> + <model> + 0.030357 0.015178 0.000000 + </model> + <texture> + 1.000000 1.000000 + 0.000000 1.000000 + 0.000000 0.000000 + 0.000000 0.000000 + 1.000000 0.000000 + 1.000000 1.000000 + </texture> + <image name="enemy_plane.png"> + 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 + YII= + </image> + </surface> +</OBJECT-3D> \ No newline at end of file