# HG changeset patch # User Shinji KONO # Date 1305971576 -32400 # Node ID 9a5300cedb1444d27d4a77894c642800e7b0d231 # Parent 8abcc221bbac2368f9a1708207a02c754d7fd083 add Test diff -r 8abcc221bbac -r 9a5300cedb14 Makefile --- a/Makefile Sat May 21 15:15:26 2011 +0900 +++ b/Makefile Sat May 21 18:52:56 2011 +0900 @@ -8,7 +8,7 @@ LIBS += `sdl-config --libs`,-framework,OpenGL -lSDL_mixer -lSDL_image `xml2-config --libs` LIBS += -lCerium -lFifoManager -TARGET = demo dandy +TARGET = demo dandy test1 OBJS = Character.o Bom.o tokuten.o collision.o count2.o Character_state.o schedule3.o tama2.o syokika.o Ss.o sound.o profile.o debug.o trace.o LoadSprite.o xml.o b64_de.o tree_controll.o object.o all: $(TARGET) @@ -22,8 +22,11 @@ dandy: $(OBJS) Dandy.o SgoexCerium.o $(CC) $(ABI) -o $@ $(OBJS) Dandy.o SgoexCerium.o $(LIBS) +test1: $(OBJS) Test.o SgoexCerium.o + $(CC) $(ABI) -o $@ $(OBJS) Test.o SgoexCerium.o $(LIBS) + clean: - rm -f $(TARGET) $(OBJS) main.o sgoex.o + rm -f $(TARGET) $(OBJS) main.o sgoex.o Dandy.o SgoexCerium.o Test.o .c.o: $(CC) $(CFLAGS) $(INCLUDES) -c $< diff -r 8abcc221bbac -r 9a5300cedb14 SgoexCerium.cc --- a/SgoexCerium.cc Sat May 21 15:15:26 2011 +0900 +++ b/SgoexCerium.cc Sat May 21 18:52:56 2011 +0900 @@ -1,7 +1,13 @@ -#include "Dandy.h" + #include "matrix_calc.h" +#include "TaskManager.h" +#include "SceneGraph.h" +#include "Application.h" + #include "SgoexCerium.h" +extern Viewer *droot; + static SceneGraphPtr root; void @@ -87,7 +93,7 @@ void PutSpriteEx(int number, int x, int y, float scalex, float scaley, float angle) { - if (1) { + if (0) { PutSprite(1, x, y, number); return; } diff -r 8abcc221bbac -r 9a5300cedb14 Test.cc --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Test.cc Sat May 21 18:52:56 2011 +0900 @@ -0,0 +1,391 @@ +#include "Test.h" +#include "SgoexCerium.h" +#include +#include +#include +#include +#include +#include +#include +#include "SDL_opengl.h" +#include "object.h" +#include "tree_controll.h" +#include "xml.h" +#include "profile.h" +#include "syokika.h" +#include "sankaku.h" +#include "sgoex.h" +#include "sound.h" +#include "bool.h" +#include "bom.h" +#include "count2.h" +#include "tokuten.h" +#include "schedule.h" +#include "tama.h" +#include "debug.h" +#include "trace.h" +#include "LoadSprite.h" +#include +#include "error.h" +#include "matrix_calc.h" + +#include "Character.h" +#include "Character_state.h" + +static int use_keybord = 0; + +static int i; + +static int test_mode = 0; +static const char *test_object = "" ; + +//static SDL_Surface *screen; +// static Uint32 background; +// static char *pad_trace_file; + +extern void schedule(); +extern void tokuten(); +extern void Pad(); +extern void keybord(); +static int gamesyokika(int gamef); +//static char *pad_trace_file; + +/** + * runmode: + * 0 - normal game + * 1 - capture mode + * program will capture all pad traces on a play and + * dump it into a file + * 2 - trace mode + * program will run with a trace file which is generated + * by capture-mode + */ +int runmode; + +SDL_Joystick *joy; + + + +const char *usr_help_str = "Usage: ./twice [-length data_length] [-count task_num]\n\ + -length Number of data (default DATA_NUM (Func.h))\n\ + -count Number of task (default 1)\n"; + +Viewer *droot; + +static int screen_w; +static int screen_h; + +MainLoopPtr +Test::init(Viewer *sgroot_, int w, int h) +{ + screen_w = w; + screen_h = h; + droot = sgroot_; + return droot; +} + +Application * +application() { + return new Test(); +} + + +static int opening(int gamef); +static int dandy_closing(int gamef); +static int dandy_main_loop(int gamef); +static int dandy_main_init(int gamef); +extern int init(TaskManager *manager, int argc, char *argv[]); +extern void task_initialize(); +static void TMend(TaskManager *manager); + +bool +Test::app_loop(Viewer *viewer){ + // don't use allExecute + return 0; +}; + +static int gamef = 0; + +HTaskPtr +Test::application_task(HTaskPtr next, Viewer* viewer){ + // printf("gamef = %d\n",gamef); + switch (gamef) { + case 0: gamef= dandy_main_init(gamef); break; + case 1: gamef= gamesyokika(gamef); break; + case 2: gamef= opening(gamef); break; + case 3: gamef= dandy_main_loop(gamef); break; + case 4: gamef= dandy_closing(gamef); break; + } + return next; +}; + + + + +int +TMmain(TaskManager *manager,int argc, char *argv[]) +{ + for(int i = 1; iset_TMend(TMend); + + return init(manager,argc, argv); +} + +void +TMend(TaskManager *manager) +{ + printf("game end\n"); +} + +static int light_sysswitch = 0; +static int light_num = 4; + +static void +LightSysSwitch(Viewer *sgroot) { + if (light_sysswitch == 1) { + sgroot->OnLightSysSwitch(); + for (int i = 0; i < light_num; i++) { + SceneGraphPtr light = sgroot->getLight(i); + sgroot->OnLightSwitch(i); + light->xyz[0] = screen_w / 2; + light->xyz[1] = screen_h / 2; + light->xyz[2] = -100; + } + } else if (light_sysswitch == 0) { + sgroot->OffLightSysSwitch(); + } +} + + +static int +dandy_main_init(int gamef) +{ + //Timeprof timeprof_move; + //timeprof_move = timeprof_new(); + dbg_init("/dev/stdout"); + + /** + * timeprof があるんだけどね + */ + + droot->createFromXMLfile("xml/character.xml"); + droot->createFromXMLfile("xml/font.xml"); + droot->createFromXMLfile("xml/effect.xml"); + droot->createFromXMLfile("xml/boss.xml"); + + LightSysSwitch(droot); + + + init_sprite(0,0,0,0); + + __debug("syokikaが呼びだされました\n"); + joy=SDL_JoystickOpen(0); + if(!joy) { + fprintf(stderr,"failed to open joystick 0\n"); + use_keybord = 1; + } + + /** + * sound.c に移しました + * 代わりに InitSdlMixer(void); を使います。 + * まあ中身一緒なんだけどね + */ + /** + if (Mix_OpenAudio(MIX_DEFAULT_FREQUENCY,MIX_DEFAULT_FORMAT,2,1024) < 0) { + fprintf(stderr,"failed to initialize SDL_mixer.\n"); + SDL_Quit(); + exit(-1); + } + */ + + // SDL_mixer とかいろいろ初期化 + // もし Init に失敗したら + // 以後の Mixer 関連の関数を呼び出しても + // 中では何も行われないとかいう小細工を入れました。 + InitSdlMixer(); + + // 音楽ファイルの読み込み + LoadSdlMixer(); + + // ボリューム調整 + InitVolume(); + + // 音出しテスト + PlaySdlMixer(-1, BGM); + + if(!(init_chara_list(1024))){ + __debug("failed to init_chara_list\n"); + } + + __debug("finished init_chara_list\n"); + + return 1; +} + + +static int +dandy_main_loop(int gamef) +{ + + + if ((pad[0].l1 != 0) && (pad[0].r1 != 0) && + (pad[0].l2 != 0) && (pad[0].r2 != 0)) { + gamef = gamesyokika(gamef); + } + + if (pad[0].quit != 0) { + gamef = 4; + } + flip(); + + //SDL_FillRect(screen, NULL, background); + + enemyfaste = count; + + // timeprof_begin(timeprof_move); + //Move(); //enemy move + // timeprof_end(timeprof_move); + asteroidi = 0; + //charpatern(); + //bosguage(); + + count++; + PutSprite(count++, jiki.x, jiki.y,PLAYER_LEFTMOVE ); + PutSprite(count++, jiki.x, jiki.y,PLAYER_TURNTOLEFT ); + PutSprite(count++, jiki.x, jiki.y,PLAYER_IDLE); + PutSprite(count++, jiki.x, jiki.y,PLAYER_TURNTORIGHT ); + PutSprite(count++, jiki.x, jiki.y,PLAYER_RIGHTMOVE); + + + tokuten(); + + count++; + //PutSprite(count, 0, 960 - 96, 10); + /*インフレゲージ */ + count++; + //PutSprite(count, 0, 0, 48); + + obj_draw(); + + if (use_keybord) { + keybord(); + } else { + Pad(joy); + } + filpcount++; + count = 0; + + return gamef; +} + +static int +dandy_closing(int gamef) +{ + + //_______________________________________________ + // SDL_mixerの後始末 + Mix_CloseAudio(); + Mix_HaltMusic(); + FreeSdlMixer() ; + //_______________________________________________ + return 0; +} + + +static int +gamesyokika(int gamef) +{ + laser_lv3[0].r = 62; + laser_lv3[0].r = 62; + for (i = 0; i < 3; i++) { + tlv3[i].y = -1; + } + filpcount = 0; + stage = 0; + //for (i = 0; i < 300; i++) + //enemy[i].f = FALSE; + jiki.zanki = 3; + jiki.x = 60; + jiki.y = 200; + jiki.ch = 3; + jiki.point = 0; + jiki.bf = FALSE; + jiki.muteki = 120; + enemycount = 0; + lg.stg = 4096; + pg.stg = 4096; + infg.stg = 0; + infg_level = 0; + //kyeenemyno = -1; + fastebos = 0; + jiki.ccount = 99; + p_extend = 200000; + pad[0].up=0; + pad[0].down=0; + pad[0].right=0; + pad[0].left=0; + pad[0].st=0; + pad[0].se=0; + + SoundStop(); + SoundPlay(7); + gamef = 2; + flip(); + return gamef; +} + +static int +opening(int gamef) +{ + if(use_keybord == 1) { + keybord(); + } else { + Pad(joy); + } + + count = 1; + + PutSprite(count, 700, 480, 53); // put `push start' string on screen. + count++; + PutSprite(count, 224, 776, 119); // put `super dandy' + count++; + // PutSprite(count, 200, 64, 190); + // PutSpriteEx(count, 8192, 8192, 0); + PutSpriteEx(190, 800, 264, 2, 2, 5); + count++; + PutSprite(count, 396, 432, 191); + //PutSpriteEx(count, 8192, 8192, 0); + count++; + PutSprite(count, 640, 640, 192); + //PutSpriteEx(count, 8192, 8192, 0); + + if (pad[0].st > 1) { + jiki.bf = TRUE; + + //CdPlay(1,&cdp[0],0); + SoundStop(); + SoundPlay(0); + + gamef = 3; + pad[0].st = 1; + } else if ((pad[0].se > 0) && (pad[0].st > 0)) { + gamef = 2; + } + flip(); + return gamef; +} + + + + +/* end */ diff -r 8abcc221bbac -r 9a5300cedb14 Test.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Test.h Sat May 21 18:52:56 2011 +0900 @@ -0,0 +1,21 @@ +#ifndef INCLUDE_TEST_H +#define INCLUDE_TEST_H + +#include "TaskManager.h" +#include "SceneGraph.h" +#include "Application.h" +#include "MainLoop.h" +#include "Func.h" + +class Test : public Application { + bool app_loop(Viewer *viewer); + HTaskPtr application_task(HTaskPtr next, Viewer* viewer); + MainLoopPtr init(Viewer *viewer, int w, int h); +}; + +extern Viewer *droot; + +typedef void (*move)(SceneGraphPtr node, void *sgroot_, int w, int h); +typedef void (*coll)(SceneGraphPtr node, void *sgroot_, int w, int h, SceneGraphPtr tree); + +#endif