Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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;
	}
}
Ejemplo n.º 3
0
static void
draw(struct game_state *gs)
{
	main_menu_background_draw();

	if (menu_is_visible())
		menu_render(main_menu);
}
Ejemplo n.º 4
0
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);

}
Ejemplo n.º 5
0
static void render()
{

    menu_render(&view.menu, &view.menubox);

}
Ejemplo n.º 6
0
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);
}
Ejemplo n.º 7
0
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();
        }
    }

    
        
}
Ejemplo n.º 8
0
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;
}