//inicializacni funkce pri zacatku hry void init_game() { //pocatecni pozice, rychlost a hp raketky posx=0; posy=-300; speedx=speedy=0; hp=1; //hrac muze hned strilet reload=0; //promenne pro zachovani hlavnich statistik hry level=0; plevel=0; score=0; //na zacatku hrac zije playerdead=0; //cas od smrti hrace nakonci deathtimer=0; //trvani bonusu shieldtimer=0; canontimer=0; init_stars(); init_bullets(); init_enemies(); init_particles(); init_bonuses(); }
int main(void){ init_allegro(); bool redraw = true; bool done = false; al_clear_to_color(al_map_rgb(0,0,0)); al_flip_display(); al_start_timer(timer); init_stars(); while(!done){ ALLEGRO_EVENT event; al_wait_for_event(event_queue, &event); switch (event.type) { case ALLEGRO_EVENT_TIMER: redraw = true; break; case ALLEGRO_EVENT_DISPLAY_CLOSE: done = true; break; case ALLEGRO_EVENT_KEY_UP: switch(event.keyboard.keycode){ case ALLEGRO_KEY_MINUS: // decrease velocity of each plane velocity_1-=1; velocity_2-=2; velocity_3-=3; break; case ALLEGRO_KEY_EQUALS: // decrease velocity of each plane velocity_1+=1; velocity_2+=2; velocity_3+=3; break; case ALLEGRO_KEY_Q: done = true; break; } } if(redraw && al_is_event_queue_empty(event_queue)) { redraw = false; draw_stars(); } } return 0; }
int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode (GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize (800, 600); glutInitWindowPosition (100, 100); glutCreateWindow (argv[0]); init (); init_stars(); glutDisplayFunc(display); glutReshapeFunc(reshape); glutKeyboardFunc(keyboard); glutMainLoop(); return 0; }
ENTRYPOINT void init_planet (ModeInfo * mi) { planetstruct *gp; int screen = MI_SCREEN(mi); Bool wire = MI_IS_WIREFRAME(mi); if (planets == NULL) { if ((planets = (planetstruct *) calloc(MI_NUM_SCREENS(mi), sizeof (planetstruct))) == NULL) return; } gp = &planets[screen]; if ((gp->glx_context = init_GL(mi)) != NULL) { reshape_planet(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); } { //char *f = get_string_resource(mi->dpy, "imageForeground", "Foreground"); //char *b = get_string_resource(mi->dpy, "imageBackground", "Background"); char *f = _strdup(imageForeground); char *b = _strdup(imageBackground); char *s; if (!f) f = _strdup("white"); if (!b) b = _strdup("black"); for (s = f + strlen(f)-1; s > f; s--) if (*s == ' ' || *s == '\t') *s = 0; for (s = b + strlen(b)-1; s > b; s--) if (*s == ' ' || *s == '\t') *s = 0; if (!XParseColor(mi->dpy, mi->xgwa.colormap, f, &gp->fg)) { fprintf(stderr, "%s: unparsable color: \"%s\"\n", progname, f); exit(1); } if (!XParseColor(mi->dpy, mi->xgwa.colormap, b, &gp->bg)) { fprintf(stderr, "%s: unparsable color: \"%s\"\n", progname, f); exit(1); } free (f); free (b); } { double spin_speed = 0.5; double wander_speed = 0.02; gp->rot = make_rotator (do_roll ? spin_speed : 0, do_roll ? spin_speed : 0, 0, 1, do_wander ? wander_speed : 0, True); gp->z = frand (1.0); gp->trackball = gltrackball_init (); } if (wire) { do_texture = False; do_light = False; } if (do_texture) setup_texture (mi); if (do_light) init_sun (mi); if (do_stars) init_stars (mi); if (random() & 1) star_spin = -star_spin; /* construct the polygons of the planet */ gp->platelist = glGenLists(1); glNewList (gp->platelist, GL_COMPILE); glColor3f (1,1,1); glPushMatrix (); glScalef (RADIUS, RADIUS, RADIUS); glRotatef (90, 1, 0, 0); glFrontFace(GL_CCW); unit_sphere (resolution, resolution, wire); glPopMatrix (); glEndList(); /* construct the polygons of the latitude/longitude/axis lines. */ gp->latlonglist = glGenLists(1); glNewList (gp->latlonglist, GL_COMPILE); glPushMatrix (); glDisable (GL_TEXTURE_2D); glDisable (GL_LIGHTING); glDisable (GL_LINE_SMOOTH); glColor3f (0.1, 0.3, 0.1); glScalef (RADIUS, RADIUS, RADIUS); glScalef (1.01, 1.01, 1.01); glRotatef (90, 1, 0, 0); unit_sphere (12, 24, 1); glBegin(GL_LINES); glVertex3f(0, -2, 0); glVertex3f(0, 2, 0); glEnd(); glPopMatrix (); glEndList(); }
ENTRYPOINT void init_sws (ModeInfo *mi) { double font_height; sws_configuration *sc = 0; if (!scs) { scs = (sws_configuration *) calloc (MI_NUM_SCREENS(mi), sizeof (sws_configuration)); if (!scs) { fprintf(stderr, "%s: out of memory\n", progname); exit(1); } } sc = &scs[MI_SCREEN(mi)]; sc->dpy = MI_DISPLAY(mi); sc = &scs[MI_SCREEN(mi)]; sc->lines = (char **) calloc (max_lines+1, sizeof(char *)); if ((sc->glx_context = init_GL(mi)) != NULL) { gl_init(mi); reshape_sws (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); clear_gl_error(); /* WTF? sometimes "invalid op" from glViewport! */ init_stars (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); } if (textures_p) { int cw, lh; sc->texfont = load_texture_font (MI_DISPLAY(mi), "font"); cw = texture_string_width (sc->texfont, "n", &lh); sc->char_width = cw; font_height = lh; glEnable(GL_ALPHA_TEST); glEnable (GL_TEXTURE_2D); check_gl_error ("loading font"); /* "Anistropic filtering helps for quadrilateral-angled textures. A sharper image is accomplished by interpolating and filtering multiple samples from one or more mipmaps to better approximate very distorted textures. This is the next level of filtering after trilinear filtering." */ if (smooth_p && strstr ((char *) glGetString(GL_EXTENSIONS), "GL_EXT_texture_filter_anisotropic")) { GLfloat anisotropic = 0.0; glGetFloatv (GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &anisotropic); if (anisotropic >= 1.0) glTexParameterf (GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, anisotropic); } } else { font_height = GLUT_FONT->top - GLUT_FONT->bottom; sc->char_width = glutStrokeWidth (GLUT_FONT, 'z'); /* 'n' seems wide */ } sc->font_scale = 1.0 / sc->char_width; /* We consider a font that consumes 80 columns to be "18 points". If neither -size nor -columns was specified, default to 60 columns (which is 24 points.) If both were specified, -columns has priority. */ { int base_col = 80; int base_size = 18; if (target_columns <= 0 && font_size <= 0) target_columns = 60; if (target_columns > 0) font_size = base_size * (base_col / (double) target_columns); else if (font_size > 0) target_columns = base_col * (base_size / (double) font_size); } sc->line_pixel_width = target_columns * sc->char_width; sc->font_scale /= target_columns; sc->line_height = font_height * sc->font_scale; /* Buffer only two lines of text. If the buffer is too big, there's a significant delay between when the program launches and when the text appears, which can be irritating for time-sensitive output (clock, current music, etc.) */ sc->buf_size = target_columns * 2; if (sc->buf_size < 80) sc->buf_size = 80; sc->buf = (char *) calloc (1, sc->buf_size); sc->total_lines = max_lines-1; if (random() & 1) star_spin = -star_spin; if (!alignment_str || !*alignment_str || !strcasecmp(alignment_str, "left")) alignment = -1; else if (!strcasecmp(alignment_str, "center") || !strcasecmp(alignment_str, "middle")) alignment = 0; else if (!strcasecmp(alignment_str, "right")) alignment = 1; else { fprintf (stderr, "%s: alignment must be left, center, or right, not \"%s\"\n", progname, alignment_str); exit (1); } sc->tc = textclient_open (sc->dpy); /* one more reshape, after line_height has been computed */ reshape_sws (mi, MI_WIDTH(mi), MI_HEIGHT(mi)); }
ENTRYPOINT void init_planet (ModeInfo * mi) { planetstruct *gp; int screen = MI_SCREEN(mi); Bool wire = MI_IS_WIREFRAME(mi); if (planets == NULL) { if ((planets = (planetstruct *) calloc(MI_NUM_SCREENS(mi), sizeof (planetstruct))) == NULL) return; } gp = &planets[screen]; if ((gp->glx_context = init_GL(mi)) != NULL) { reshape_planet(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); } gp->state = STARTUP; gp->ratio = 0; gp->font_data = load_texture_font (mi->dpy, "labelFont"); { double spin_speed = 0.1; double wander_speed = 0.002; gp->rot = make_rotator (do_roll ? spin_speed : 0, do_roll ? spin_speed : 0, 0, 1, do_wander ? wander_speed : 0, False); gp->trackball = gltrackball_init (True); } if (wire) do_texture = False; if (do_texture) setup_texture (mi); if (do_stars) init_stars (mi); glEnable (GL_DEPTH_TEST); glEnable (GL_NORMALIZE); glEnable (GL_CULL_FACE); if (!wire) { GLfloat pos[4] = {0.4, 0.2, 0.4, 0.0}; GLfloat amb[4] = {0.4, 0.4, 0.4, 1.0}; GLfloat dif[4] = {1.0, 1.0, 1.0, 1.0}; GLfloat spc[4] = {1.0, 1.0, 1.0, 1.0}; glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glLightfv(GL_LIGHT0, GL_POSITION, pos); glLightfv(GL_LIGHT0, GL_AMBIENT, amb); glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); glLightfv(GL_LIGHT0, GL_SPECULAR, spc); } }
ENTRYPOINT void init_planet (ModeInfo * mi) { planetstruct *gp; int screen = MI_SCREEN(mi); Bool wire = MI_IS_WIREFRAME(mi); MI_INIT (mi, planets); gp = &planets[screen]; gp->window = MI_WINDOW(mi); if ((gp->glx_context = init_GL(mi)) != NULL) { reshape_planet(mi, MI_WIDTH(mi), MI_HEIGHT(mi)); } { char *f = get_string_resource(mi->dpy, "imageForeground", "Foreground"); char *b = get_string_resource(mi->dpy, "imageBackground", "Background"); char *s; if (!f) f = strdup("white"); if (!b) b = strdup("black"); for (s = f + strlen(f)-1; s > f; s--) if (*s == ' ' || *s == '\t') *s = 0; for (s = b + strlen(b)-1; s > b; s--) if (*s == ' ' || *s == '\t') *s = 0; free (f); free (b); } { double spin_speed = 0.1; double wander_speed = 0.005; gp->rot = make_rotator (do_roll ? spin_speed : 0, do_roll ? spin_speed : 0, 0, 1, do_wander ? wander_speed : 0, True); gp->z = frand (1.0); gp->tilt = frand (23.4); gp->trackball = gltrackball_init (True); } if (!wire && !do_texture) { GLfloat pos[4] = {1, 1, 1, 0}; GLfloat amb[4] = {0, 0, 0, 1}; GLfloat dif[4] = {1, 1, 1, 1}; GLfloat spc[4] = {0, 1, 1, 1}; glEnable(GL_LIGHTING); glEnable(GL_LIGHT0); glLightfv(GL_LIGHT0, GL_POSITION, pos); glLightfv(GL_LIGHT0, GL_AMBIENT, amb); glLightfv(GL_LIGHT0, GL_DIFFUSE, dif); glLightfv(GL_LIGHT0, GL_SPECULAR, spc); } if (wire) do_texture = False; if (do_texture) setup_texture (mi); if (do_stars) init_stars (mi); /* construct the polygons of the planet */ gp->platelist = glGenLists(1); glNewList (gp->platelist, GL_COMPILE); glFrontFace(GL_CCW); glPushMatrix(); glRotatef (90, 1, 0, 0); unit_sphere (resolution, resolution, wire); glPopMatrix(); glEndList(); gp->shadowlist = glGenLists(1); glNewList (gp->shadowlist, GL_COMPILE); glFrontFace(GL_CCW); if (wire) glColor4f (0.5, 0.5, 0, 1); # ifdef BLENDED_TERMINATOR else { GLfloat c[] = { 0, 0, 0, 1 }; glColor4fv (c); if (!do_texture) glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, c); } # endif glPushMatrix(); glScalef (1.01, 1.01, 1.01); unit_dome (resolution, resolution, wire); # ifdef BLENDED_TERMINATOR terminator_tube (mi, resolution); if (!wire) { /* We have to draw the transparent side of the mask too, though I'm not sure why. */ GLfloat c[] = { 0, 0, 0, 0 }; glColor4fv (c); if (!do_texture) glMaterialfv (GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, c); glRotatef (180, 1, 0, 0); unit_dome (resolution, resolution, wire); } # endif glPopMatrix(); glEndList(); /* construct the polygons of the latitude/longitude/axis lines. */ gp->latlonglist = glGenLists(1); glNewList (gp->latlonglist, GL_COMPILE); glPushMatrix (); glRotatef (90, 1, 0, 0); /* unit_sphere is off by 90 */ glRotatef (8, 0, 1, 0); /* line up the time zones */ unit_sphere (12, 24, 1); unit_sphere (12, 24, 1); glBegin(GL_LINES); glVertex3f(0, -2, 0); glVertex3f(0, 2, 0); glEnd(); glPopMatrix (); glEndList(); }
int main (int argc, char* args[]) { //SDL Window setup if (init(SCREEN_WIDTH, SCREEN_HEIGHT) == 1) { return 0; } init_stars(snow, SCREEN_WIDTH, SCREEN_HEIGHT); //create circle image in pixel buffer and copy to a texture draw_circle(&vb, vb.width / 2, vb.height / 2, 8, 0xffffffff); SDL_UpdateTexture(vector_ball, NULL, vb.pixels, vb.width * sizeof (uint32_t)); int sleep = 0; int quit = 0; struct vector3d vel = {0, 0, -.005}; //snow movment vector Uint32 next_game_tick = SDL_GetTicks(); Uint32 current_tick = next_game_tick; //render loop while(quit == 0) { //check for new events every frame SDL_PumpEvents(); const Uint8 *state = SDL_GetKeyboardState(NULL); if (state[SDL_SCANCODE_ESCAPE]) { quit = 1; } clear_pixels(&pb, 0x00000000); SDL_UpdateTexture(screen, NULL, pb.pixels, pb.width * sizeof (uint32_t)); //draw to the screen SDL_RenderClear(renderer); SDL_RenderCopy(renderer, screen, NULL, NULL); //draw screen pixel_buffer draw_stars(renderer, vector_ball, snow); //draw all snow flakes with vector ball texture SDL_RenderPresent(renderer); //show fintal frame on the screen update_stars(snow, SCREEN_WIDTH, SCREEN_HEIGHT, &vel); //time it takes to render 1 frame in milliseconds next_game_tick += 1000 / 60; current_tick = SDL_GetTicks(); sleep = next_game_tick - current_tick; if( sleep >= 0 ) { SDL_Delay(sleep); } } //free the screen buffer free(pb.pixels); //free the vector_ball buffer free(vb.pixels); //free the source image SDL_FreeSurface(source); //Destroy window SDL_DestroyWindow(window); //Quit SDL subsystems SDL_Quit(); return 0; }
BOOL create_gl_window(LPCWSTR title, int width, int height, int bits, bool is_fullscreen) { GLuint pixel_format; WNDCLASS wc; DWORD dwExStyle; DWORD dwStyle; RECT windowRect; windowRect.left = 0L; windowRect.right = (long)width; windowRect.top = 0L; windowRect.bottom = (long)height; fullscreen = is_fullscreen; hInstance = GetModuleHandle(nullptr); wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; wc.lpfnWndProc = (WNDPROC)WndProc; wc.cbClsExtra = 0; wc.cbWndExtra = 0; wc.hInstance = hInstance; wc.hIcon = LoadIcon(nullptr, IDI_WINLOGO); wc.hCursor = LoadCursor(nullptr, IDC_ARROW); wc.hbrBackground = nullptr; wc.lpszMenuName = nullptr; wc.lpszClassName = WND_CLASSNAME; if (!RegisterClass(&wc)) { MessageBox(nullptr, L"Could not register window class", L"Create window Error", MB_OK | MB_ICONINFORMATION); return FALSE; } if (fullscreen) { DEVMODE dmScreenSettings; memset(&dmScreenSettings, 0, sizeof(DEVMODE)); dmScreenSettings.dmSize = sizeof(dmScreenSettings); dmScreenSettings.dmPelsWidth = width; dmScreenSettings.dmPelsHeight = height; dmScreenSettings.dmBitsPerPel = bits; dmScreenSettings.dmFields = DM_BITSPERPEL | DM_PELSWIDTH | DM_PELSHEIGHT; if (ChangeDisplaySettings(&dmScreenSettings, CDS_FULLSCREEN) != DISP_CHANGE_SUCCESSFUL) { if (MessageBox(nullptr, L"The requested fullscreen mode not supported by\nyour video card.\nUse windowed mode instead?", L"Create window Error", MB_YESNO | MB_ICONEXCLAMATION) == IDYES) fullscreen = false; else { MessageBox(nullptr, L"Program will now close", L"Create window Error", MB_OK | MB_ICONSTOP); return FALSE; } } } if (fullscreen) { dwExStyle = WS_EX_APPWINDOW; dwStyle = WS_POPUP; ShowCursor(FALSE); } else { dwExStyle = WS_EX_APPWINDOW | WS_EX_WINDOWEDGE; dwStyle = WS_OVERLAPPEDWINDOW; } AdjustWindowRectEx(&windowRect, dwStyle, FALSE, dwExStyle); int width_screen = GetSystemMetrics(SM_CXSCREEN); int height_screen = GetSystemMetrics(SM_CYSCREEN); ULONG x_pos = width_screen / 2 - (windowRect.right - windowRect.left) / 2; ULONG y_pos = height_screen / 2 - (windowRect.bottom - windowRect.top) / 2; /* Creating window */ if (!(hWnd = CreateWindowEx(dwExStyle, WND_CLASSNAME, title, dwStyle | WS_CLIPSIBLINGS | WS_CLIPCHILDREN, x_pos, y_pos, windowRect.right - windowRect.left, windowRect.bottom - windowRect.top, nullptr, nullptr, hInstance, nullptr))) { kill_gl_window(); MessageBox(nullptr, L"Window creation failed", L"Create window Error", MB_OK | MB_ICONEXCLAMATION); return FALSE; } /* Pixel Format Descriptor */ static PIXELFORMATDESCRIPTOR pfd = { sizeof(PIXELFORMATDESCRIPTOR), 1, PFD_DRAW_TO_WINDOW | PFD_SUPPORT_OPENGL | PFD_DOUBLEBUFFER, PFD_TYPE_RGBA, bits, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, DEPTH_BITS, // 32-bit Z-buffer (depth buffer) 0, 0, PFD_MAIN_PLANE, 0, 0, 0, 0 }; if (!(hDC = GetDC(hWnd))) { kill_gl_window(); MessageBox(nullptr, L"Can't create a GL Device Context.", L"Create window Error", MB_OK | MB_ICONEXCLAMATION); return FALSE; } if (!(pixel_format = ChoosePixelFormat(hDC, &pfd))) { kill_gl_window(); MessageBox(nullptr, L"Can't find suitable pixel format.", L"Create window Error", MB_OK | MB_ICONEXCLAMATION); return FALSE; } if (!SetPixelFormat(hDC, pixel_format, &pfd)) { kill_gl_window(); MessageBox(nullptr, L"Can't set pixel format.", L"Create window Error", MB_OK | MB_ICONEXCLAMATION); return FALSE; } if (!(hRC = wglCreateContext(hDC))) { kill_gl_window(); MessageBox(nullptr, L"Can't create GL Rendering Context.", L"Create window Error", MB_OK | MB_ICONEXCLAMATION); return FALSE; } if (!wglMakeCurrent(hDC, hRC)) { kill_gl_window(); MessageBox(nullptr, L"Can't activate GL Rendering Context.", L"Create window Error", MB_OK | MB_ICONEXCLAMATION); return FALSE; } ShowWindow(hWnd, SW_SHOW); SetForegroundWindow(hWnd); SetFocus(hWnd); resize_gl_scene((GLsizei)width, (GLsizei)height); if (!init_gl()) { kill_gl_window(); MessageBox(nullptr, L"Initialization failed", L"Create window Error", MB_OK | MB_ICONEXCLAMATION); return FALSE; } if (!init_gl_texture()) { kill_gl_window(); MessageBox(nullptr, L"Initialization textures failed", L"Create window Error", MB_OK | MB_ICONEXCLAMATION); return FALSE; } init_stars(); return TRUE; }
void resize(Uint16 w,Uint16 h) { //Setup of the new/resized window spSelectRenderTarget(spGetWindowSurface()); spSetPerspective(50.0,(float)spGetWindowSurface()->w/(float)spGetWindowSurface()->h,1.0,100); spBundlePointer translation = settings_get_translation(); spFontShadeButtons(1); //Font Loading spFontSetShadeColor(FONT_BORDER_1); if (font) spFontDelete(font); font = spFontLoad(FONT_LOCATION,FONT_SIZE*spGetSizeFactor()>>SP_ACCURACY); spFontAdd(font,SP_FONT_GROUP_ASCII,FONT_COLOR_1);//whole ASCII spFontAddEveryLetterOfTextBundle(font,translation,FONT_COLOR_1); spFontAddBorder(font,FONT_BORDER_1); spFontMulWidth(font,15<<SP_ACCURACY-4); spFontAddButton( font, 'A', SP_BUTTON_LEFT_NAME, spGetRGB(230,230,230), spGetRGB(64,64,64)); spFontAddButton( font, 'B', SP_BUTTON_RIGHT_NAME, spGetRGB(230,230,230), spGetRGB(64,64,64)); spFontAddButton( font, 'X', SP_BUTTON_DOWN_NAME, spGetRGB(230,230,230), spGetRGB(64,64,64)); spFontAddButton( font, 'Y', SP_BUTTON_UP_NAME, spGetRGB(230,230,230), spGetRGB(64,64,64)); spFontAddButton( font, 'L', SP_BUTTON_L_NAME, spGetRGB(230,230,230), spGetRGB(64,64,64)); spFontAddButton( font, 'R', SP_BUTTON_R_NAME, spGetRGB(230,230,230), spGetRGB(64,64,64)); spFontAddButton( font, 'S', SP_BUTTON_START_NAME, spGetRGB(230,230,230), spGetRGB(64,64,64)); spFontAddButton( font, 'E', SP_BUTTON_SELECT_NAME, spGetRGB(230,230,230), spGetRGB(64,64,64)); settings_set_font(font); spFontSetShadeColor(FONT_BORDER_2); if (small_font) spFontDelete(small_font); small_font = spFontLoad(FONT_LOCATION,FONT_SMALL_SIZE*spGetSizeFactor()>>SP_ACCURACY); spFontAdd(small_font,SP_FONT_GROUP_ASCII,FONT_COLOR_2);//whole ASCII //spFontAdd(small_font,SP_FONT_GROUP_GERMAN,0);//some German letters spFontAddEveryLetterOfTextBundle(small_font,translation,FONT_COLOR_2); spFontAddBorder(small_font,FONT_BORDER_2); spFontMulWidth(small_font,15<<SP_ACCURACY-4); spFontAddButton( small_font, 'A', SP_BUTTON_LEFT_NAME, spGetRGB(230,230,230), spGetRGB(64,64,64)); spFontAddButton( small_font, 'B', SP_BUTTON_RIGHT_NAME, spGetRGB(230,230,230), spGetRGB(64,64,64)); spFontAddButton( small_font, 'X', SP_BUTTON_DOWN_NAME, spGetRGB(230,230,230), spGetRGB(64,64,64)); spFontAddButton( small_font, 'Y', SP_BUTTON_UP_NAME, spGetRGB(230,230,230), spGetRGB(64,64,64)); spFontAddButton( small_font, 'L', SP_BUTTON_L_NAME, spGetRGB(230,230,230), spGetRGB(64,64,64)); spFontAddButton( small_font, 'R', SP_BUTTON_R_NAME, spGetRGB(230,230,230), spGetRGB(64,64,64)); spFontAddButton( small_font, 'S', SP_BUTTON_START_NAME, spGetRGB(230,230,230), spGetRGB(64,64,64)); spFontAddButton( small_font, 'E', SP_BUTTON_SELECT_NAME, spGetRGB(230,230,230), spGetRGB(64,64,64)); settings_set_small_font(small_font); spFontSetShadeColor(FONT_BORDER_1); if (middle_font) spFontDelete(middle_font); middle_font = spFontLoad(FONT_LOCATION,FONT_MIDDLE_SIZE*spGetSizeFactor()>>SP_ACCURACY); spFontAdd(middle_font,SP_FONT_GROUP_ASCII,FONT_COLOR_1);//whole ASCII //spFontAdd(middle_font,SP_FONT_GROUP_GERMAN,0);//some German letters spFontAddEveryLetterOfTextBundle(middle_font,translation,FONT_COLOR_1); spFontAddBorder(middle_font,FONT_BORDER_1); spFontMulWidth(middle_font,15<<SP_ACCURACY-4); spFontAddButton( middle_font, 'A', SP_BUTTON_LEFT_NAME, spGetRGB(230,230,230), spGetRGB(64,64,64)); spFontAddButton( middle_font, 'B', SP_BUTTON_RIGHT_NAME, spGetRGB(230,230,230), spGetRGB(64,64,64)); spFontAddButton( middle_font, 'X', SP_BUTTON_DOWN_NAME, spGetRGB(230,230,230), spGetRGB(64,64,64)); spFontAddButton( middle_font, 'Y', SP_BUTTON_UP_NAME, spGetRGB(230,230,230), spGetRGB(64,64,64)); spFontAddButton( middle_font, 'L', SP_BUTTON_L_NAME, spGetRGB(230,230,230), spGetRGB(64,64,64)); spFontAddButton( middle_font, 'R', SP_BUTTON_R_NAME, spGetRGB(230,230,230), spGetRGB(64,64,64)); spFontAddButton( middle_font, 'S', SP_BUTTON_START_NAME, spGetRGB(230,230,230), spGetRGB(64,64,64)); spFontAddButton( middle_font, 'E', SP_BUTTON_SELECT_NAME, spGetRGB(230,230,230), spGetRGB(64,64,64)); settings_set_middle_font(middle_font); spFontSetShadeColor(FONT_BORDER_1); if (countdown_font) spFontDelete(countdown_font); countdown_font = spFontLoad(FONT_LOCATION,FONT_COUNTDOWN_SIZE*spGetSizeFactor()>>SP_ACCURACY); spFontAdd(countdown_font,"0123",FONT_COLOR_1); spFontAddBorder(countdown_font,FONT_BORDER_1); settings_set_countdown_font(countdown_font); spFontSetShadeColor(FONT_BORDER_1); if (highscore_font) spFontDelete(highscore_font); highscore_font = spFontLoad(FONT_LOCATION,FONT_HIGHSCORE_SIZE*spGetSizeFactor()>>SP_ACCURACY); spFontAdd(highscore_font,"ABCDEFGHIJKLMNOPQRSTUVWXYZ",FONT_COLOR_1); spFontAddBorder(highscore_font,FONT_BORDER_1); settings_set_highscore_font(highscore_font); //Particles resize_particle(w,h); init_stars(); }