static void _draw_controls(state_stack* stack) { state_desc *top = (state_desc*) table_ind(stack, stack->m_len-1); _controls_menu *data = (_controls_menu*) top->m_pData; if (data->m_capturingBindings) { data->m_cmdMenu->m_iCursorPos = -1; data->m_bindingsMenu->m_iCursorPos = data->m_iWhichBinding; } menu_render(data->m_cmdMenu); menu_render(data->m_bindingsMenu); }
void _draw(state_stack *stack) { state_desc *top = (state_desc*) table_ind(stack, stack->m_len-1); _talk_state *st = (_talk_state*) top->m_pData; int err; switch (st->m_iState) { case _STARTED: err = lua_resume(st->m_pThread, nullptr, 0); if (_util_lua_done(err, top)) { return; } _draw(stack); break; case _WAIT_CHOICE: font_print(g_font, 100, 100, "%s", st->m_sNPCText); menu_render(st->m_pChoices); break; case _WAIT_ANY: font_print(g_font, 100, 100, "%s", st->m_sNPCText); font_print(g_font, 100, 240, "Press a button for more exposition..."); break; case _STOPPED: top->m_isDead = true; break; } }
static void draw(struct game_state *gs) { main_menu_background_draw(); if (menu_is_visible()) menu_render(main_menu); }
static void render() { text_render(&view.titlebox, TEXT_COLOR_TITLE, TEXT_ALIGN_LEFT, view.app->name); text_render(&view.shortbox, TEXT_COLOR_NORMAL, TEXT_ALIGN_LEFT, view.app->shortdescription); menu_render(&view.menu, &view.menubox); }
static void render() { menu_render(&view.menu, &view.menubox); }
void _draw(state_stack* stack) { state_desc *top = (state_desc*) table_ind(stack, stack->m_len-1); _settings_menu *data = (_settings_menu*) top->m_pData; menu *pMenu = (menu*) data->m_menu; menu_render(pMenu); }
void menu_update(t_time t) { menu_render(); if (menu_estado==MENU_ST_MENU) { if (t<menu_pilgrim_tt) { float alfa=(menu_pilgrim_tt-t)/menu_pilgrim_tt; menu_pilgrim_x=alfa*menu_pilgrim_x0+(1-alfa)*menu_pilgrim_xf; menu_pilgrim_y=alfa*menu_pilgrim_y0+(1-alfa)*menu_pilgrim_yf; } else { menu_pilgrim_x=menu_pilgrim_xf; menu_pilgrim_y=menu_pilgrim_yf; } if (t<menu_title_tt) { float alfa=(menu_title_tt-t)/menu_title_tt; menu_title_x=alfa*menu_title_x0+(1-alfa)*menu_title_xf; menu_title_y=alfa*menu_title_y0+(1-alfa)*menu_title_yf; } else { menu_title_x=menu_title_xf; menu_title_y=menu_title_yf; } } else if (menu_estado==MENU_ST_CREDITS) { if (t<menu_credits_tt) { float alfa=(menu_credits_tt-t)/menu_credits_tt; menu_credits_x=alfa*menu_credits_x0+(1-alfa)*menu_credits_xf; menu_credits_y=alfa*menu_credits_y0+(1-alfa)*menu_credits_yf; } else { menu_credits_x=menu_credits_xf; menu_credits_y=menu_credits_yf; } } else if (menu_estado==MENU_ST_HOF) { if (t<menu_hof_tt) { float alfa=(menu_hof_tt-t)/menu_hof_tt; menu_hof_x=alfa*menu_hof_x0+(1-alfa)*menu_hof_xf; menu_hof_y=alfa*menu_hof_y0+(1-alfa)*menu_hof_yf; } else { menu_hof_x=menu_hof_xf; menu_hof_y=menu_hof_yf; } } if (menu_estado==MENU_ST_MENU) { if ( game_hit_pressed ) { if (persistence_total_played_games<MAX_GAMES_AUTO_SHOW_HELP) { menu_help(1); } else { game_start(); } } else if (game_stop_pressed) { menu_help(0); } else if (game_esquivar_pressed) { menu_hof(); } else if (game_salto_pressed) { menu_credits(); } else if (game_other_pressed) { audio_switch_deactivate(); } } else if (menu_estado==MENU_ST_CREDITS || menu_estado==MENU_ST_HOF) { if ( game_other_pressed ) { if (menu_estado==MENU_ST_HOF) { audio_stop_music(); audio_start_music(AUDIO_MUSIC_MENU); } menu_init(); } if ( game_other2_pressed ) { if (menu_estado==MENU_ST_HOF) { // if (gamecenter_enter_hof_or_achievments==0) { // game_enter_gamecenter_hof=1; // gamecenter_enter_hof_or_achievments=1; // } else { // game_enter_gamecenter_achievments=1; // gamecenter_enter_hof_or_achievments=0; // } game_enter_gamecenter_hof=1; } } if (game_stop_pressed) { if (menu_estado==MENU_ST_HOF) { game_enter_gamecenter_achievments=1; } } #if PILGRIM_INCLUDE_WEBLINK if (menu_estado==MENU_ST_CREDITS && game_other2_pressed) { game_jump_to_weblink=1; } #endif } else if (menu_estado==MENU_ST_RESULTS) { if ( game_other_pressed ) { if (game_highscore_pos!=-1) { menu_enter_hof(); } else { menu_init(); } } } else if (menu_estado==MENU_ST_HELP || menu_estado==MENU_ST_HELPSTART) { if (game_other_pressed) { menu_help_page+=1; if (menu_help_page==3) { if (menu_estado==MENU_ST_HELPSTART) { game_start(); } else { menu_init(); } } } if (game_other2_pressed) { menu_help_page-=1; if (menu_help_page==-1) { menu_init(); } } } else if (menu_estado==MENU_ST_ENTERHOF) { if (game_highscore_name_entered) { game_highscore_name_entered=0; //highscore_print(); //printf("nuevo record de %s\n",game_highscore_name); highscore_insert_name_pos(game_highscore_name, game_last_score, game_highscore_pos); //highscore_print(); menu_hof(); } } }
int main(int argc, char* argv[]) { // Init initPath(argv[0]); SDL_Surface* screen = NULL; SDL_Event event; int *seed; srand((int)seed); int previousTime = 0, currentTime = 0; Events *flags = createEventFlags(); SDL_Init(SDL_INIT_VIDEO); SDL_SetEventFilter(eventFilter); screen = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE | SDL_ASYNCBLIT | SDL_DOUBLEBUF | SDL_NOFRAME); SDL_WM_SetCaption("Tower Defense", NULL); Action *actionList = initAction(); Map* map = createMap(getPath("resources/Forest.png")); _map = map; SDL_Rect surface = {0, 0, 720, 600}; Viewport* viewport = createViewport(screen, surface, map); _viewport = viewport; // FIXME uh? what's this thing? surface.x = 800 - 80; surface.y = 0; surface.h = 80; surface.w = 600; // Creation of the enemies TypeEn *whiteCat = createTypeEn(100, 5, false, true, true, false, 1,getPath("resources/white_transparent_cat.png")); TypeEn *blackCat = createTypeEn(100, 5, false, true, true, false, 1,getPath("resources/black_transparent_cat.png")); Enemy *cat1 = createEnemy(1,1,whiteCat); Enemy *cat2 = createEnemy(1,10,whiteCat); Enemy *cat3 = createEnemy(5,5,blackCat); Enemy *cat4 = createEnemy(21,4,blackCat); TypeEn *zombie = createTypeEn(100,5,false,true,true,false,1,getPath("resources/zombie.png")); Enemy *zombie1 = createEnemy(4,4,zombie); Enemy *zombie2 = createEnemy(9,4,zombie); Enemy *zombie3 = createEnemy(9,9,zombie); Enemy *zombie4 = createEnemy(7,14,zombie); //Add enemy in the List List *catList = newList(cat4); pushList((void*)catList,cat2); pushList((void*)catList,cat3); // pushList((void*)catList,cat1); List *zombieList = newList(zombie1); /* pushList((void*)zombieList,zombie2);*/ /* pushList((void*)zombieList,zombie3);*/ /* pushList((void*)zombieList,zombie4);*/ // removeEnemyFromList(cat4,catList); //TOWER TypeBul *bullet = createTypeBul(getPath("resources/bullet.png"), 1); TypeTo *tower = createTypeTo(0,5,0,0,false,false,false,false,bullet,NULL,getPath("resources/tower.png")); upgradeTypeTo(tower,0.5,getPath("resources/towerUP.png")); flags->selectedTower = tower->nextType; Tower *tower1 = createTower(7,7,tower); List *towerList = newList(tower1); flags->towerList = towerList; // Create and Renders the right panel game menu SDL_Rect surfaceMenu = {720, 0, 800, 600}; Menu* menu = menu_create(screen, surfaceMenu); menu_loadBackground(menu, "resources/enemyFont.gif"); // For testing only, we add a few random buttons menu_addButton(menu, button_createBuildButton(tower)); menu_addButton(menu, button_createBuildButton(tower)); menu_addButton(menu, button_createBuildButton(tower)); menu_render(menu); _cell = *getCase(20,11); // Main loop while(actionList[QUIT].boolean == NULL) { // Managing the events manageEvents(viewport, flags,actionList); for(int i=1; i<ACTION_LENGTH; i++) { if(actionList[i].boolean) { int repeat = (*actionList[i].action)(viewport,flags,actionList[i].boolean); if(!repeat) { actionList[i].boolean = NULL; } } } // Redraws the map (viewport contents) before blitting stuff on it updateViewport(viewport); ///////////////////////////// DEBUG WALL ///////////////////////////// SDL_Rect position; for(int i=0; i < _map->nbCaseW; i++) { for(int j=0; j < _map->nbCaseH; j++) { Case cell = *getCase(i,j); position.x = cell.x; position.y = cell.y; if(map->matrice[i][j].hasTower == 2) { SDL_Surface *wall = IMG_Load(getPath("resources/brick.png")); blitToViewport(viewport, wall, NULL, &position); } } } position.x = _cell.x; position.y = _cell.y; blitToViewport(viewport, IMG_Load(getPath("resources/candy_cane.png")), NULL, &position); ///////////////////////////////////////////////////////////////////// // Move enemies if(flags->enemy_Path_Calculation) { pathReCalculation(catList); pathReCalculation(zombieList); flags->enemy_Path_Calculation = false; } moveEnemyList(zombieList); moveEnemyList(catList); // Blit enemies drawEnemyList(zombieList); drawEnemyList(catList); //Blit TOWER /* if(event.key.keysym.sym == SDLK_u){*/ /* upgrade(tower1);*/ /* }*/ Bullet *bullet1 = createBullet(tower1); animateBullet(bullet1); drawTowerList(towerList); /* This should be handled by event.c switch(event.key.keysym.sym){ case SDLK_a: flags->selectedTower = tower; break; case SDLK_b: flags->selectedTower = tower->nextType; break; default: break; }*/ /* */ // Ask SDL to swap framebuffers to update the displayed screen SDL_Flip(screen); // Managing frames currentTime = SDL_GetTicks(); if (currentTime - previousTime <= 20) { SDL_Delay(20 - (currentTime - previousTime)); } // DEBUG printf("Frame %i : %ims\n", framecounter++, currentTime - previousTime); previousTime = SDL_GetTicks(); } free(actionList); SDL_Quit(); return EXIT_SUCCESS; }