view Magoroku.cc @ 115:31dd5c07f7c1

class OBJECT:SceanGraph
author e085768
date Wed, 15 Jun 2011 23:31:59 +0900
parents 8c96cadde050
children ed702e49cc6c
line wrap: on
line source

//magoroku 関係ココから
#include "Magoroku.h"

#include <stdio.h>
#include "game.h"
#include "libps2.h"
#include "ps2util.h"

#include "sjoy.h"
//magoroku 関係ココまで

#include "SgoexCerium.h"
#include <ctype.h>
#include <math.h>
#include <time.h>
#include <SDL.h>
#include "SDL_opengl.h"

//#include "tree_controll.h"
#include "xml.h"
#include "profile.h"
//#include "syokika.h"
//#include "sankaku.h"

#include "sound.h"
//#include "bom.h"
//#include "count2.h"
//#include "tokuten.h"
//#include "tama.h"
//#include "debug.h"
//#include "trace.h"
#include "LoadSprite.h"
#include <SDL_mixer.h>
#include "error.h"
#include "matrix_calc.h"

//#include "Character.h"
//#include "Character_state.h"

#include "Light.h"


//static SDL_Surface *screen;
// static Uint32 background;
// static char *pad_trace_file;


// tree_Dandy の schedule3.c 
//extern void schedule();


//extern void tokuten();
extern bool padCheck(SDL_Joystick *joy);
extern bool keybord(void);
//static int gamesyokika(int gamef);
//static int game_pause(int);
//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
Magoroku::init(Viewer *sgroot_, int w, int h)
{
  screen_w = w;
  screen_h = h;
  droot = sgroot_;
  return droot;
}

Application *application() {
  return new Magoroku();
}


//Magoroku の初期化など
/* timer */
static int start_time,time_count;
static int RUNNIG=0;
char raptime[10];

static int ranking = 0;
static LIGHT l;
static int i=0;

// schedule.ccで使用してる
void linda_env_init( void );


extern int init(TaskManager *manager, int argc, char *argv[]);
extern void task_initialize();
static void TMend(TaskManager *manager);


//class Application の中の virtual bool app_loop( return 1 だけの関数?) を継承
bool 
Magoroku::app_loop(Viewer *viewer){
    // don't use allExecute
    return 0;
};


/*
  ゲームの分岐。magoroku の schedule の処理と同等と考えてオッケーかな?
*/
HTaskPtr 
Magoroku::application_task(HTaskPtr next, Viewer* viewer){

  // magoroku_racing                                                                                                        
  game_main();
  
  // Dandy
  printf("gamef = %d\n",gamef);
  switch (gamef) {
  case 0:    gamef= magoroku_main_init(gamef); break;
  case 1:    gamef= gamesyokika(gamef); break;
  case 2:    gamef= opening(gamef); break;
  case 3:    gamef= magoroku_main_loop(gamef); break;
  case 4:    gamef= magoroku_closing(gamef); break;
  }

  return next;
}; 


static void
task_init() 
{
}

int
TMmain(TaskManager *manager,int argc, char *argv[])
{
  for(int i = 1; i<argc ; i++) {
    if (strcmp(argv[i],"-t")) {
      if (i+1<argc && argv[i+1]) {
	i++;
      }
    }
  }

  task_init();
  task_initialize();
  manager->set_TMend(TMend);

  // magoroku_racing の main.ccから
  //game_main();
    
  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();
  }
}