0,0 → 1,187 |
#ifndef RSGAME_H_INCLUDED |
#define RSGAME_H_INCLUDED |
|
/* |
|
Heliothryx |
Game by Roman Shuvalov |
|
*/ |
|
|
#include "rskos.h" |
#include "rs/rsplatform.h" |
//#include "rs/rstexture.h" |
//#include "rs/rsshader.h" |
//#include "rs/rsgl.h" |
#include "rs/rsdebug.h" |
#include "rs/rsbits.h" |
|
//#include "rs/rskeyboard.h" |
|
//#include "rs/rsaudio.h" |
|
//#include "rs/rsfile.h" |
|
//#include "rs/rsvbo.h" |
//#include "rs/rsfbo.h" |
|
//#include "rs/rsthread.h" |
|
#include "rs/rsmx.h" |
|
|
|
|
#define GAME_LANG_EN 0 |
#define GAME_LANG_RU 1 |
|
#define GAME_WIDTH 320 |
#define GAME_HEIGHT 180 |
|
|
typedef struct { |
unsigned int status; |
int w; |
int h; |
unsigned char *data; // BGRA BGRA |
} rs_texture_t; |
|
|
// for little-endian |
typedef union color_t { |
int d; // 0x44332211 (ARGB) |
struct { |
unsigned char b; // 0x11 |
unsigned char g; // 0x22 |
unsigned char r; // 0x33 |
unsigned char a; // 0x44 |
}; |
} color_t; |
|
// for little-endian (ARGB) |
#define COLOR_BLACK 0xFF000000 |
#define COLOR_TRANSPARENT 0x00000000 |
#define COLOR_DARK_RED 0xFF660000 |
|
|
|
void texture_init(rs_texture_t *tex, int w, int h); |
void texture_free(rs_texture_t *tex); |
void texture_clear(rs_texture_t *tex, unsigned int color); |
void texture_draw(rs_texture_t *dest, rs_texture_t *src, int x, int y, int mode); |
void texture_draw_vline(rs_texture_t *tex, int x, int y, int l, unsigned int color); |
void texture_draw_hline(rs_texture_t *tex, int x, int y, int l, unsigned int color); |
void texture_set_pixel(rs_texture_t *tex, int x, int y, unsigned int color); |
|
unsigned char clamp_byte(int value); |
|
#define DRAW_MODE_REPLACE 0 |
#define DRAW_MODE_ADDITIVE 1 |
#define DRAW_MODE_ALPHA 2 |
|
#define DRAW_MODE_MASK 0x0000FFFF |
#define DRAW_TILED_FLAG 0x00010000 |
|
|
|
typedef struct { |
unsigned int status; |
int length_samples; |
SNDBUF hbuf; |
signed short *data; |
} rs_soundbuf_t; |
|
void soundbuf_init(rs_soundbuf_t *snd, int length); |
void soundbuf_free(rs_soundbuf_t *snd); |
void soundbuf_fill(rs_soundbuf_t *snd, int amp, int freq_div); |
void soundbuf_sin(rs_soundbuf_t *snd, float freq); |
void soundbuf_sin_fade(rs_soundbuf_t *snd, float freq); |
void soundbuf_play(rs_soundbuf_t *snd); |
void soundbuf_stop(rs_soundbuf_t *snd); |
|
// Game Registry |
|
#define ROCKS_COUNT 3 |
#define FONTS_COUNT 4 |
|
#define STATUS_MENU 0 |
#define STATUS_PLAYING 1 |
#define STATUS_PAUSED 2 |
|
|
#define RS_ARROW_LEFT_MASK 0x01 |
#define RS_ARROW_DOWN_MASK 0x02 |
#define RS_ARROW_UP_MASK 0x04 |
#define RS_ARROW_RIGHT_MASK 0x08 |
#define RS_ATTACK_KEY_MASK 0x10 |
|
#define BULLETS_COUNT 8 |
|
#define GAME_SHOOT_PERIOD 3 |
|
typedef struct rs_game_t { |
rs_texture_t framebuffer; |
unsigned char *scaled_framebuffer; // 24-bit BGRBGRBGR... for direct drawing |
|
rs_texture_t tex; |
|
rs_texture_t tex_clouds; |
rs_texture_t tex_ground; |
|
rs_texture_t tex_ship[4]; |
rs_texture_t tex_rocks[ROCKS_COUNT]; |
|
rs_texture_t tex_font[64*FONTS_COUNT]; |
|
rs_texture_t tex_gui_line; |
|
|
rs_soundbuf_t sound_test1; |
rs_soundbuf_t sound_test2; |
rs_soundbuf_t sound_test3; |
|
int status; |
|
unsigned int keyboard_state; |
|
int menu_index; |
int menu_item_index; |
|
int window_scale; |
|
int tx; |
int ty; |
int tz; |
|
int bullet_x[BULLETS_COUNT]; |
int bullet_y[BULLETS_COUNT]; |
int bullet_index; |
int shoot_delay; |
int shoot_keypressed; |
|
} rs_game_t; |
|
extern rs_game_t game; |
void game_reg_init(); |
|
/* __ |
/cc\ |
/aaaa\ |
|kkkkkk| <-- Easter Egg |
\eeee/ |
------------------------------- */ |
|
void GameProcess(); |
|
void game_ding(int i); |
|
void GameInit(); |
void GameTerm(); |
|
void GameKeyDown(int key, int first); |
void GameKeyUp(int key); |
|
void game_change_window_scale(int d); |
|
#endif // RSGAME_H_INCLUDED |
Property changes: |
Added: svn:executable |
+* |
\ No newline at end of property |