#include "sot_dynamic.h"

/********************
	world.h
 ********************/
#define	CUT_LEFT_2P	8
#define	CUT_RIGHT_2P	8
#define	CUT_UP_2P	12
#define	CUT_DOWN_2P	10
#define CUT_CENTER	2 /* 上下の画面を分割する線の幅 */

#define DISPLAY_X1_1P	(CUT_LEFT_2P) /* 1Pスクリーンの左上 */
#define DISPLAY_Y1_1P	(CUT_UP_2P)
#define DISPLAY_X2_2P	(SCREEN_WD-CUT_RIGHT_2P-1) /* 2Pスクリーンの右下 */
#define DISPLAY_Y2_2P	(SCREEN_HT-CUT_DOWN_2P-1)
#define DISPLAY_WX_2P	(DISPLAY_X2_2P-DISPLAY_X1_1P+1)/* スクリーンの大きさ */
#define DISPLAY_WY_2P	((DISPLAY_Y2_2P-DISPLAY_Y1_1P+1-CUT_CENTER)/2)
#define DISPLAY_X2_1P	(SCREEN_WD-CUT_RIGHT_2P-1) /* 1Pスクリーンの右下 */
#define DISPLAY_Y2_1P	(DISPLAY_Y1_1P+DISPLAY_WY_2P)
#define DISPLAY_X1_2P	(CUT_LEFT_2P) /* 2Pスクリーンの左上 */
#define DISPLAY_Y1_2P	(DISPLAY_Y2_2P-(DISPLAY_WY_2P-1))

#define SCENE_MAX 8
#define G_CC_TEXINTER TEXEL1,TEXEL0,ENVIRONMENT,TEXEL0, 0,0,0,ENVIRONMENT
#define G_CC_E3SP 0,0,0,TEXEL0, 0,0,0,ENVIRONMENT
#define SUN_ANGLE_0 5
#define SUN_ANGLE_7 196
#define SUN_ANGLE 315

/* 構造体の宣言 */
typedef struct {
    int wl_dif_r,wl_dif_g,wl_dif_b , wl_amb_r,wl_amb_g,wl_amb_b; /* ライトカラー */
    int wl_dif_r1,wl_dif_g1,wl_dif_b1 , wl_amb_r1,wl_amb_g1,wl_amb_b1; /* ライトカラー１ */
    int wl_dif_r2,wl_dif_g2,wl_dif_b2 , wl_amb_r2,wl_amb_g2,wl_amb_b2; /* ライトカラー２ */
    
    int fog_r,fog_g,fog_b,fog_a; /* フォグカラー */
    int fog_r1,fog_g1,fog_b1,fog_a1; /* フォグカラー１ */
    int fog_r2,fog_g2,fog_b2,fog_a2; /* フォグカラー２ */    
    int fog_near,fog_far; /* フォグの距離 */
    int fog_near2,fog_far2; /* フォォグの距離2 */
    
    int sea_fog_r,sea_fog_g,sea_fog_b,sea_fog_a; /* 海のフォグの色 */
    int sea_fog_near,sea_fog_far; /* 海のフォグの距離 */

    int b_fog_near,b_fog_far; /* 海のフォグの距離 */

    int light_dir; /* ライトのカメラからの角度 */    
    float wl_vx,wl_vy,wl_vz; /* ライトの方向 */
    
    int cloud_r,cloud_g,cloud_b;
    int bottom_Xscale,bottom_Zscale;

    int ml_dif_r,ml_dif_g,ml_dif_b , ml_amb_r,ml_amb_g,ml_amb_b; /* ひとのライトカラー */
    int ml_dif_r_keep,ml_dif_g_keep,ml_dif_b_keep , ml_amb_r_keep,ml_amb_g_keep,ml_amb_b_keep; /* ひとのライトカラー */
    float ml_vx,ml_vy,ml_vz; /* ひとのライトの方向 */

    float env;
    int mlight_dir;  /* ひとのライトのカメラからの角度 */    
} Crs_color;

typedef struct{
    float px,py,pz;
    float offset_x,offset_y;
    float flag;
}Obj_axis;

typedef struct{
    int r,g,b,a;
}AlphaColor;
/******************************************************************************
	FUNCTION
******************************************************************************/
extern void		init_world( void ) ;
extern void		move_world( void ) ;
extern Gfx		*make_world_glist( Gfx *gp ) ;
extern Gfx		*make_sea_glist( Gfx *gp ) ;
extern Gfx *make_hover_light_glist(Gfx *gp);
extern Gfx *make_enemy_light_glist(Gfx *gp);

extern Gfx *sun_draw(Gfx *gp);
extern Gfx *flare_draw(Gfx *gp);
extern Gfx *moon_draw(Gfx *gp);
extern Gfx *star_draw(Gfx *gp);
extern void move_sun(void);
extern void move_flare(void);
extern void move_moon(void);
extern void axis_2D(float distance,float angle,float height,Obj_axis *axis);
extern void projection_2D(double *x,double *z,float fx,float fz);
extern Gfx *ending_face_set_segment(Gfx *gp);
/* 変数 */
extern sot_tetris_index;
extern Crs_color crs_color[2];

extern SOT_DYNAMIC sot_dynamic[2];
extern char ring_color[3][3];
extern int sun_high[];
extern int sun_scale[];

extern unsigned char m1face_f1_txt[];
extern unsigned char m1face_f2_txt[];
extern unsigned char t1face_f1_txt[];
extern unsigned char t1face_f2_txt[];
extern unsigned char t2face_f1_txt[];
extern unsigned char t2face_f2_txt[];
extern unsigned char t3face_f1_txt[];
extern unsigned char t3face_f2_txt[];
