// Hyperbolic Rogue -- fake mobile target // Copyright (C) 2011-2018 Zeno Rogue, see 'hyper.cpp' for details #define ISFAKEMOBILE 1 #define MOBPAR_FORMAL int #define MOBPAR_ACTUAL 0 #define MIX_MAX_VOLUME 128 #define NOMAIN #include namespace hr { string scorefile = "fakemobile_score.txt"; } #include #include "hyper.cpp" #include #include #undef main namespace hr { transmatrix Orient = Id; int lasttick = 0; transmatrix getOrientation() { int curtick = SDL_GetTicks(); ld t = (curtick - lasttick) / 1000.0; lasttick = curtick; Uint8 *keystate = SDL_GetKeyState(NULL); if(keystate[SDLK_LCTRL]) { if(keystate['s']) Orient = Orient * cspin(2, 1, t); if(keystate['w']) Orient = Orient * cspin(1, 2, t); if(keystate['a']) Orient = Orient * cspin(2, 0, t); if(keystate['d']) Orient = Orient * cspin(0, 2, t); } return Orient; } void resetmusic() { printf("resetmusic\n"); } void playSound(cell *c, const string& fname, int vol) { printf("Play sound: %s\n", fname.c_str()); } SDL_Surface *s; int gdpos = 0; int gdpop() { return graphdata[gdpos++]; } TTF_Font *font[256]; bool rawdisplaystr(int x, int y, int shift, int size, const char *str, int color, int align) { if(strlen(str) == 0) return false; if(size <= 0 || size > 255) { return false; } SDL_Color col; col.r = (color >> 16) & 255; col.g = (color >> 8 ) & 255; col.b = (color >> 0 ) & 255; col.r >>= darken; col.g >>= darken; col.b >>= darken; if(!font[size]) font[size] = TTF_OpenFont("VeraBd.ttf", size); SDL_Surface *txt = TTF_RenderText_Solid(font[size], str, col); if(txt == NULL) return false; SDL_Rect rect; rect.w = txt->w; rect.h = txt->h; rect.x = x - rect.w * align / 16; rect.y = y - rect.h/2; bool clicked = (mousex >= rect.x && mousey >= rect.y && mousex <= rect.x+rect.w && mousey <= rect.y+rect.h); SDL_BlitSurface(txt, NULL, s,&rect); SDL_FreeSurface(txt); return clicked; } int textwidth(int siz, const string &str) { if(isize(str) == 0) return 0; if(!font[siz]) font[siz] = TTF_OpenFont("VeraBd.ttf", siz); int w, h; TTF_SizeUTF8(font[siz], str.c_str(), &w, &h); // printf("width = %d [%d]\n", w, isize(str)); return w; } char action; bool currentlyConnecting() { return false; } bool currentlyConnected() { return false; } void viewAchievements() { printf("view Achievements\n"); } void viewLeaderboard(string id) { printf("view Leaderboard :: %s\n", id.c_str()); } void switchGoogleConnection() { printf("sgc\n"); } void shareScore(int) { printf("share\n"); } void openURL() { printf("< openURL > \n"); } } using namespace hr; int main(int argc, char **argv) { initAll(); glhr::init(); vid.xres = 800; vid.yres = 450; vid.usingGL = false; // 450; vid.yres = 600; s= SDL_SetVideoMode(vid.xres, vid.yres, 32, 0); if(TTF_Init() != 0) { printf("Failed to initialize TTF.\n"); exit(2); } int mx = 0; int my = 0; bool _clicked = false; inv::on = true; // firstland = laMinefield; // activateSafety(laWhirlwind); items[itGreenStone] = 100; // items[itDiamond] = 50; // for(int i=1; i<10; i++) kills[i] = 5; while(true) { SDL_LockSurface(s); memset(s->pixels, 0, vid.xres * vid.yres * 4); SDL_UnlockSurface(s); mousex = mx; mousey = my; clicked = _clicked; mobile_draw(MOBPAR_ACTUAL); action = 0; gdpos = 0; while(gdpos < isize(graphdata)) { switch(gdpop()) { case 2: { int x = gdpop(), y = gdpop(), al = gdpop(); int color = gdpop(); int size = gdpop(); gdpop(); int n = gdpop(); string s; for(int i=0; i