#include "mx.h" #include"knight.h" #include"calc.h" #include"about.h" #include "console.h" #include"programs.h" #include "masterpiece.h" #ifdef FOR_PSP #include //# |_ For 333Mhz Overclock #include //# | #endif struct mxWin *first_win = 0, *second_win = 0, *third_win = 0; int dim1 , dim2; SDL_Surface *game_surface = 0; //Mix_Music *intro_music = 0; int win1key(struct mxEvent *e) { return 0; } int win2key(struct mxEvent *e) { return 0; } int win3key(struct mxEvent *e) { return 0; } int window1_event(struct mxEvent *e) { SDL_Rect rc = { 0,0, game_surface->w, game_surface->h }; switch(e->type) { case SDL_RENDER: { static char dbuf[25]; SDL_FillRect(game_surface, 0, 0); draw(); sprintf(dbuf,"Moves: %d", moves); SDL_PrintTextScaled(game_surface, menu_font, 10,10,12,14,SDL_MapRGB(front->format, 255,255,255), dbuf); stretch_blt(game_surface, &rc, e->cur_surface, &first_win->rc); } break; case SDL_JOYBUTTONDOWN: { if(e->button == 1) { e->button = 0; nextmove(); } else if(e->button == 2) { init(); } } break; } return 0; } int window2_event(struct mxEvent *e) { static int entry_ok = 1; switch(e->type) { case SDL_RENDER: { SDL_Rect rc = { 0,0, e->cur_surface->w, e->cur_surface->h }; SDL_FillRect(calc, 0,SDL_MapRGB(calc->format, 200,200,200)); draw_calc(); stretch_blt(calc, &rc, e->cur_surface, &second_win->rc); for(i = 0; non_array[i] != 0; i++) { SDL_Rect rc = { calc_buttons[i].rc.x, calc_buttons[i].rc.y, calc_buttons[i].rc.w, calc_buttons[i].rc.h }; rc.y += 25; rc.x += 5; if(cursor_in_rect(&rc, cur.x, cur.y)) { cur.cur_cursor = 1; break; } } } break; case SDL_JOYBUTTONDOWN: { // quick fix static int counter = 0; if(++counter % 1 == 0) { for(i = 0; non_array[i] != 0; i++) { SDL_Rect rc = { calc_buttons[i].rc.x, calc_buttons[i].rc.y, calc_buttons[i].rc.w, calc_buttons[i].rc.h }; rc.y += 25; rc.x += 5; if(cursor_in_rect(&rc, cur.x, cur.y)) { calc_press(i); cur.button = 0; entry_ok = 0; break; } } e->button = 0; } } break; case SDL_JOYBUTTONUP: { entry_ok = 1; } break; } return 0; } int window3_event(struct mxEvent *e) { switch(e->type) { case SDL_RENDER: { SDL_Rect rc = {0,0,e->cur_surface->w, e->cur_surface->h }; SDL_Rect rc2 = { 0,0, third_win->rc.w, third_win->rc.h }; SDL_FillRect(about, 0,0); draw_about(); SDL_BlitSurface(about, &rc, e->cur_surface,&rc2); } break; } return 0; } int mix = 0; int main(int argc, char **argv) { SDL_Rect rc = { 10,30,480-30,200 }, rc2 = {10,30,200,200}, about_win = { 215,30,480-210-15, 215}; Uint8 *keys = 0; int active = 1; SDL_Event e; struct mxEvent mxe; if(SDL_Init(SDL_INIT_VIDEO | SDL_INIT_JOYSTICK) < 0) { fprintf(stderr, "Error initalizing SDL!"); return -1; } front = SDL_SetVideoMode(480,272,0,0); if(!front) { fprintf(stderr, "Error initilizing video mode"); return -1; } font = SDL_InitFont("font.mxf"); menu_font = SDL_InitFont("arial.mxf"); if(!font) { SDL_FreeSurface(front); SDL_Quit(); return -1; } #ifdef FOR_PSP scePowerSetClockFrequency(333, 333, 166); //# overclocked #endif SDL_FillRect(front, 0,0); SDL_PrintText(front, font, 10,10, SDL_MapRGB(front->format, 255,255,255), "Loading.."); SDL_UpdateRect(front, 0,0,480,272); stick = SDL_JoystickOpen(0); /*if(Mix_OpenAudio(MIX_DEFAULT_FREQUENCY, MIX_DEFAULT_FORMAT, 2, 4096)==-1) { printf("Mix_OpenAudio: %s\n", Mix_GetError()); exit(2); } //intro_music = Mix_LoadMUS("beatles.ogg"); if(!intro_music) { printf("error loading music.. %s\n", Mix_GetError()); } //Mix_PlayMusic(intro_music, 0); */ SDL_JoystickEventState(SDL_ENABLE); init_keyboard(key_event); game_surface = SDL_CreateRGBSurface(SDL_HWSURFACE, 480,292, front->format->BitsPerPixel,front->format->Rmask, front->format->Gmask, front->format->Bmask, front->format->Amask); knight = SDL_LoadBMP("knight.bmp"); init_cursor(&cur); first_win = init_windows(0, &rc, 0xFF,SDL_MapRGB(front->format, 0xBD,0,0),0x0,"Knights Tour",window1_event); second_win = init_windows(0,&rc2,0xFF,SDL_MapRGB(front->format, 255,0,0),0x0,"mxCalc",window2_event); third_win = init_windows(second_win, &about_win, SDL_MapRGB(front->format, 0xBD,0,0),0x0,SDL_MapRGB(front->format,255,255,255),"About", window3_event); dim1 = add_new_dim("dim1", first_win, win1key); dim2 = add_new_dim("dim2", second_win,win2key); init_matrix(); dimensions[dim1].wall = SDL_LoadBMP("dim1.bmp"); dimensions[dim2].wall = SDL_LoadBMP("dim2.bmp"); add_menu_item(&menu, "knight.bmp", "KnightsTour", first_win, dim1); add_menu_item(&menu, "calc.bmp", "mxCalculator", second_win, dim2); add_menu_item(&menu, "icon1.bmp", "MasterPiece", mp_window, mp_dim); init_calc(); first_win->active = 1; third_win->active = 1; third_win->show = 1; init(); init_console(); init_about(); while(active == 1) { SDL_FillRect(front, 0, 0); draw_dim(); draw_cursor(&cur); if(SDL_PollEvent(&e)) { switch(e.type) { case SDL_QUIT: active = 0; break; case SDL_KEYDOWN: { if(e.key.keysym.sym == SDLK_ESCAPE) active = 0; } break; } trans_event(&mxe, &e); } else proccess_idle_events(); SDL_UpdateRect(front, 0,0,480,272); } free_mp(); free_calc(); free_about(); SDL_JoystickClose(stick); SDL_FreeSurface(knight); SDL_FreeSurface(game_surface); SDL_FreeSurface(cur.hand_cursor); SDL_FreeSurface(cur.bmp_cursor); SDL_FreeSurface(front); SDL_FreeFont(font); SDL_FreeFont(menu_font); //Mix_FreeMusic(intro_music); //Mix_CloseAudio(); free_dim(); SDL_Quit(); return 0; }