Example #1
0
int main() {
    SDL_Event event;
    int quit=0;

    printf("Initializing Screen...");
 
    screen = SC_InitVideo(_X,_Y,_DEPTH);
    SDL_FillRect(screen,NULL,0x000000);
    printf("\tOK\n");
 
    printf("Loading Player...");
    loadPlayer();
    printf("\tOK\n");
    printf("Initializing Units...");
    init();
    printf("\tOK\n");

    background = SC_LoadImage("data/img/map.bmp");

    SC_DrawSurface(background->h - _Y,0,background,screen);

    srand(time(NULL));

    while(!quit){

        quit = quit | events(event) | render();

        SDL_Delay(12);
    }
    atexit(SDL_Quit);

    return 0;
}
Example #2
0
void Game::initGame(char **p)
{
	state.total_score[0] = 0;
	state.total_score[1] = 0;
	dealer = rand() % NB_PLAYERS;
	cheater = INVALID_PLAYER;
	
	libraries.clear();
	for (int i = 0; i < NB_PLAYERS; i++) {
		players[i] = NULL;
		hands[i].clear();
		players[i] = loadPlayer(p[i+1]);
		if (players[i] == NULL) {
			std::cerr << "Cannot open player " << i << "(" << p[i] << ") library" << std::endl;
			exit(EXIT_FAILURE);
		}
		players[i]->setName(p[i+1]);
		players[i]->setNum(i);
	}
	
	for (int c = 0; c < NB_SUITS; c++) {
		for (int v = 0; v < NB_VALUES; v++) {
			deck[c*NB_VALUES+v].suit = c;
			deck[c*NB_VALUES+v].value = v;
		}
	}
}
bool IOLoginData::loadPlayerByName(Player* player, const std::string& name)
{
	Database* db = Database::getInstance();
	std::ostringstream query;
	query << "SELECT `id`, `name`, `account_id`, `group_id`, `sex`, `vocation`, `experience`, `level`, `maglevel`, `health`, `healthmax`, `blessings`, `mana`, `manamax`, `manaspent`, `soul`, `lookbody`, `lookfeet`, `lookhead`, `looklegs`, `looktype`, `lookaddons`, `posx`, `posy`, `posz`, `cap`, `lastlogin`, `lastlogout`, `lastip`, `conditions`, `skulltime`, `skull`, `town_id`, `balance`, `offlinetraining_time`, `offlinetraining_skill`, `stamina`, `skill_fist`, `skill_fist_tries`, `skill_club`, `skill_club_tries`, `skill_sword`, `skill_sword_tries`, `skill_axe`, `skill_axe_tries`, `skill_dist`, `skill_dist_tries`, `skill_shielding`, `skill_shielding_tries`, `skill_fishing`, `skill_fishing_tries` FROM `players` WHERE `name` = " << db->escapeString(name);
	return loadPlayer(player, db->storeQuery(query.str()));
}
Example #4
0
Game::Game()
{
    device = irr::createDevice(irr::video::EDT_OPENGL, {640,480}, 16, false, false, false, &event_receiver);

    assert(device);

    device->setWindowCaption(L"Eternal Sonata");
    
    driver = device->getVideoDriver();
    scene_manager = device->getSceneManager();
    environment = device->getGUIEnvironment();
    menu.setDevice(device);
    menu.setDevice(device);
    this->mapSelector = 0;
    this->game_set = false;
    character.setEventReceiver(&event_receiver);

    loadMeshes();
    loadMap();
    loadPlayer();


    getMenu().showMainMenu();

    getPlayer().debugCharacter();
}
Example #5
0
void loadGame(SDL_Renderer *renderer, Gamestate* game)
{

  SDL_Surface* surface = NULL;

  // set game values
  game->GRAVITY = 0.3f;
  game->FRICTION = 0.3f;
  game->PLAYER_MAX_SPEED = 5;
  game->NUM_BOMBS = 50;
  game->NUM_LEDGES = 50;
  game->frame = 0;
  game->status = 0; // WELCOME_SCREEN
  game->scrollX = 0;
  game->victory = false;

  // load elements of the game
  loadFont(renderer, game);
  loadBackground(renderer, game, surface);
  loadLedges(renderer, game, surface);
  loadBombs(renderer, game, surface);
  loadPlayer(renderer, game, surface);
  loadBalloon(renderer, game, surface);

} // void initGamestate()
Example #6
0
void story(Player &player)
{
	bool Retry;

	std::cout << "Welcome to the game. This is a text-based RPG, made by Meraj Ahmed." << std::endl;
	std::cout << "Press enter to continue..." << std::endl;
	getchar();
	cls();

	std::cout << "This tutorial will introduce you to the basics of the game. New features will be unlocked as you progress, and you will learn about them when they are unlocked." << std::endl;
	std::cout << "Press enter to continue..." << std::endl;
	getchar();
	cls();

	std::cout << "There are 3 main battle choices: Hit, Bash, and Heal." << std::endl;
	std::cout << "Hit is a normal attack." << std::endl;
	std::cout << "Bash does extra damage to the enemy, but damages you as well." << std::endl;
	std::cout << "Heal simply heals you for a small amount." << std::endl;
	std::cout << "Press enter to continue..." << std::endl;
	getchar();
	cls();
	
	savePlayer(player);
	do
	{
		TutorialTroll tutorialTroll;
		player = loadPlayer();
		Retry = battle(player, tutorialTroll);
	} while (Retry);
	Retry = false;



	return;
}
Example #7
0
void load(P_HWATOO pilehead, P_HWATOO ahead, P_HWATOO bhead, P_HWATOO chead, P_HWATOO paehead,
		player_info *aplayer, player_info *bplayer, player_info *cplayer)
{
	char file_name[][30] = {"pile.txt", "paehead.txt",
							"ahead.txt", "aplayerinfo.txt", "aplayerpae.txt", "ascore.txt",
							"bhead.txt", "bplayerinfo.txt", "bplayerpae.txt", "bscore.txt",
							"chead.txt", "cplayerinfo.txt", "cplayerpae.txt", "cscore.txt"};
	extern P_HWATOO head;
	extern P_HWATOO A_head;
	extern P_HWATOO B_head;
	extern P_HWATOO C_head;
	extern P_HWATOO PAE_head;
	

	pilehead = NULL;
	ahead = NULL;
	bhead = NULL;
	chead = NULL;
	paehead = NULL;
	aplayer -> head_pae = NULL;
	bplayer -> head_pae = NULL;
	cplayer -> head_pae = NULL;
	
	puts("pilehead load start");
	loadPae(file_name[0], &head);
	puts("ahead load start");
	loadPae(file_name[2], &A_head);
	puts("bhead load start");
	loadPae(file_name[6], &B_head);
	puts("chead load start");
	loadPae(file_name[10], &C_head);
	puts("paehead load start");
	loadPae(file_name[1], &PAE_head);
	puts("Aplayer load start");
	loadPlayer(file_name[3], file_name[4], file_name[5], aplayer);
	puts("Bplayer load start");
	loadPlayer(file_name[7], file_name[8], file_name[9], bplayer);
	puts("Cplayer load start");
	loadPlayer(file_name[11], file_name[12], file_name[13], cplayer);
	puts("Winner load start");
	loadWinner("winner.txt");
	puts("load success!");
}
Example #8
0
void StageManager::changeStage( int stageNum , Point nextPlayerPosition)
{
	_ASSERT( stageNum <= m_FloorData.stageNum );
	if( stageNum == m_CurrentStageNum )
	{
		return;
	}
	m_CurrentStageNum = stageNum;
	addVisitedStage( stageNum );
	m_IsAvailable = false;
	m_CurrentWorldScene = m_WorldScenes[m_CurrentStageNum];
	Director::getInstance()->replaceScene( m_CurrentWorldScene );
	loadPlayer( nextPlayerPosition );
	m_IsAvailable = true;
	m_CurrentWorldScene->scheduleUpdate();
}
Example #9
0
XP_Bool
newg_juggle( NewGameCtx* ngc )
{
    XP_Bool changed = XP_FALSE;
    XP_U16 nPlayers = ngc->nPlayersShown;

    XP_ASSERT( ngc->isNewGame );
    
    if ( nPlayers > 1 ) {
        LocalPlayer tmpPlayers[MAX_NUM_PLAYERS];
        XP_U16 pos[MAX_NUM_PLAYERS];
        XP_U16 player;

        /* Get a randomly juggled array of numbers 0..nPlayers-1.  Then the
           number at pos[n] inicates where the entry currently at n should
           be. */
        changed = randIntArray( pos, nPlayers );
        if ( changed ) {

            /* Deep-copy off to tmp storage.  But skip lines that won't be moved
               in the juggle. */
            XP_MEMSET( &tmpPlayers, 0, sizeof(tmpPlayers) );
            for ( player = 0; player < nPlayers; ++player ) {
                if ( player != pos[player] ) {
                    storePlayer( ngc, player, &tmpPlayers[player] );
                }
            }

            for ( player = 0; player < nPlayers; ++player ) {
                if ( player != pos[player] ) {
                    LocalPlayer* lp = &tmpPlayers[player];
                    XP_U16 dest = pos[player];

                    loadPlayer( ngc, dest, lp );

                    XP_FREEP( ngc->mpool, &lp->name );
                    XP_FREEP( ngc->mpool, &lp->password );
                    XP_FREEP( ngc->mpool, &lp->dictName );

                    adjustOneRow( ngc, dest, XP_FALSE );
                }
            }
        }
    }
    return changed;
} /* newg_juggle */
Example #10
0
int cmdSpells(Creature* player, cmd* cmnd) {
    Creature* target = player;
    Player  *pTarget=0, *viewer=0;
    bool    notSelf=false;

    if(player->isPet()) {
        viewer = player->getPlayerMaster();
        notSelf = true;
    } else {
        viewer = player->getAsPlayer();
    }

    viewer->clearFlag(P_AFK);

    if(player->isBraindead()) {
        player->print("You are brain-dead. You can't do that.\n");
        return(0);
    }

    if(player->isCt()) {
        if(cmnd->num > 1) {
            cmnd->str[1][0] = up(cmnd->str[1][0]);
            target = gServer->findPlayer(cmnd->str[1]);
            notSelf = true;

            if(!target) {
                if(!loadPlayer(cmnd->str[1], &pTarget)) {
                    player->print("Player does not exist.\n");
                    return(0);
                }
                infoSpells(viewer, pTarget, notSelf);
                free_crt(pTarget);
                return(0);
            } else {
                if(!player->canSee(target)) {
                    player->print("That player is not logged on.\n");
                    return(0);
                }
            }
        }
    }

    infoSpells(viewer, target, notSelf);
    return(0);
}
k9astTitles::k9astTitles(QWidget* parent,k9DVD *_dvd)
        : QWidget(parent) {
    Ui_astTitles.setupUi(this);
    m_dvd=_dvd;
    m_src=Ui_astTitles.twSource;
    m_preview=NULL;
    m_currentItem=NULL;
    loadPlayer();
    QTreeWidgetItem *header=m_src->headerItem();
    header->setText(0,"");
    QCheckBox *ck=new QCheckBox(m_src);
    ck->setChecked(true);
    connect(ck,SIGNAL(toggled( bool )),this,SLOT(selectAll(bool)));
    connect(m_src,SIGNAL(itemChanged(QTreeWidgetItem*,int)),this,SLOT(ItemChanged(QTreeWidgetItem*,int)));

    m_src->setItemWidget(header,0,ck);
    m_src->setSortingEnabled(true);
}
Example #12
0
  int Codec::ReadPCM(BYTE *pBuffer, int size, int *actualsize) {
    *actualsize = 0;
    if (!m_isPlayerLoaded)
      loadPlayer();

    if (m_startStream) {
      if (m_endOfTrack && m_bufferPos == 0) {
        return READ_EOF;
      } else if (m_bufferPos > 0) {
        int amountToMove = m_bufferPos;
        if (m_bufferPos > size)
          amountToMove = size;
        memcpy(pBuffer, m_buffer, amountToMove);
        memmove(m_buffer, m_buffer + amountToMove, m_bufferSize - amountToMove);
        m_bufferPos -= amountToMove;
        *actualsize = amountToMove;
      }
    }
    return READ_SUCCESS;
  }
Example #13
0
void renderScene(bool miniMapOption)
{
    light.makeLight();
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);  // limpar o depth buffer

    glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();

	if(miniMapOption)
        miniMapCam.setMiniMapCam();
    else
        cam.updateCam(game_map.player);

	loadPlayer();
	loadEnemies();
	loadIsland();
    glBindTexture(type, texture);
	renderSea();

	if(!PlaySound("Sounds\\56_Rocket_Tower_Takeover.wav", NULL, SND_ASYNC|SND_FILENAME|SND_LOOP|SND_NOSTOP ))
        PlaySound("Sounds\\56_Rocket_Tower_Takeover.wav", NULL, SND_ASYNC|SND_FILENAME|SND_LOOP|SND_NOSTOP );
}
// on "init" you need to initialize your instance
bool Splash::init(std::string csbFile)
{
    BaseScene::init(csbFile);
    loadingBar = (LoadingBar *)_rootNode->getChildByName("loadingBar");
    this->schedule(schedule_selector(Splash::updateProgress), 0.016f);
    
    // Init game settings
    auto settings = GameSettings::getInstance();
    
    // Init player
    auto player = Player::getInstance();
    settings->loadPlayer(player);

    
    // Setup global physic world
    auto world = Physics::createWorld2D(PhysicsBox2DType);
    world->loadBodies("box2dphysicsbody.plist");
    
    auto audio = CocosDenshion::SimpleAudioEngine::getInstance();
    audio->playEffect("intro.wav");
    
    return true;
}
Example #15
0
int main(int argc, char* args[])
{
		srand(time(NULL));
		PLAYER* player = createPlayer();
		BACKGROUND* background = createBackground();

    LTexture lt;
		BANANA* bananaArray[MAX_NUM_OF_BANANA];
		BARRIER* barrierArray[MAX_NUM_OF_BARRIER];

		int i;
		for(i = 0; i < MAX_NUM_OF_BANANA; i++)
		{
				bananaArray[i] = createBanana();
		}

		for(i = 0; i < MAX_NUM_OF_BARRIER; i++)
		{
				barrierArray[i] = createBarrier();
		}


		if( !init() )
		{
			printf( "Failed to initialize!\n" );
		}
		else
		{

			if( !loadBackground("./media/background.png", &background->background_tex, gRenderer) || !loadPlayer("./media/minion.png", &player->player_tex, gRenderer, gSpriteClips))
			{
      	printf( "Failed to load media!\n" );
			}
			else
			{
				for(i = 0; i < MAX_NUM_OF_BANANA; i++)
				{
						loadBanana("./media/banana.png", &bananaArray[i]->banana_tex, gRenderer);
						setPosRectBanana(bananaArray[i]);
				}

				for(i = 0; i < MAX_NUM_OF_BARRIER; i++)
				{
						loadBarrier("./media/barrier.png", &barrierArray[i]->barrier_tex, gRenderer);
						setPosRectBarrier(barrierArray[i]);
				}

				bool quit = false;
				SDL_Event e;
				player->frame = 0;
				background->scrollingOffset = 0;

				while( !quit )
				{
					while( SDL_PollEvent( &e ) != 0 )
					{
						if( e.type == SDL_QUIT )
						{
							quit = true;
						}

						if(e.key.type == SDL_KEYDOWN)
						{
							switch( e.key.keysym.sym )
							{
									case SDLK_UP:
										if(canMoveUp(player))
										{
											moveUp(player);
										}
										 break;
									case SDLK_DOWN:
										if(canMoveDown(player))
										{
											moveDown(player);
										}
										break;
							}
						}


					}

					--(background->scrollingOffset);
					if( background->scrollingOffset < -background->background_tex.mWidth )
					{
						background->scrollingOffset = 0;
					}

					SDL_Rect* currentClip;

					SDL_SetRenderDrawColor( gRenderer, 0xFF, 0xFF, 0xFF, 0xFF );
					SDL_RenderClear( gRenderer );
					renderBackground(background, background->scrollingOffset, gRenderer);

					currentClip = &gSpriteClips[ player->frame / 16 ];
					renderPlayer(player, currentClip, gRenderer);
					setPosRectPlayer(player);

					for (i = 0; i < MAX_NUM_OF_BANANA; i++)
					{
						if( checkCollision(player->mPlayer, bananaArray[i]->mBanana, background->scrollingOffset))
						{
							increaseTotalScore();
							eraseBanana(bananaArray[i]);
						}

						renderBanana(bananaArray[i], background->scrollingOffset + bananaArray[i]->posX, gRenderer);
					}



					for (i = 0; i < MAX_NUM_OF_BARRIER; i++)
					{
						if( checkCollisionEnd(player->mPlayer, barrierArray[i]->mBarrier, background->scrollingOffset))
						{
							closeWin(player, background, bananaArray, barrierArray);
							return 0;
						}

						renderBarrier(barrierArray[i], background->scrollingOffset + barrierArray[i]->posX, gRenderer);
					}



					++player->frame;

					if( player->frame / 4 >= WALKING_ANIMATION_FRAMES )
					{
						player->frame = 0;
					}


					SDL_RenderPresent(gRenderer);


				}
					closeWin(player, background, bananaArray, barrierArray);

			}
		}
		return 0;
}
Example #16
0
void
newg_load( NewGameCtx* ngc, const CurGameInfo* gi )
{
    void* closure = ngc->closure;
    NGValue value;
    XP_U16 nPlayers, nLoaded;
    XP_S16 ii, jj;
    DeviceRole role;
    XP_Bool localOnly;
    XP_Bool shown[MAX_NUM_PLAYERS] = { XP_FALSE };

    ngc->juggleEnabled = TRI_ENAB_NONE;
    ngc->settingsEnabled = TRI_ENAB_NONE;
    for ( ii = 0; ii < NG_NUM_COLS; ++ii ) {
        for ( jj = 0; jj < MAX_NUM_PLAYERS; ++jj ) {
            ngc->enabled[ii][jj] = TRI_ENAB_NONE;
        }
    }

    ngc->role = role = gi->serverRole;
    localOnly = (role == SERVER_ISCLIENT) && ngc->isNewGame;
#ifndef XWFEATURE_STANDALONE_ONLY
    value.ng_role = role;
    (*ngc->setAttrProc)( closure, NG_ATTR_ROLE, value );
    (*ngc->enableAttrProc)( closure, NG_ATTR_ROLE, ngc->isNewGame? 
                            TRI_ENAB_ENABLED : TRI_ENAB_DISABLED );
#endif

    nPlayers = gi->nPlayers;
    ngc->nPlayersTotal = nPlayers;
#ifndef XWFEATURE_STANDALONE_ONLY
    for ( ii = nPlayers - 1; ii >= 0; --ii ) {
        if ( gi->players[ii].isLocal ) {
            ++ngc->nLocalPlayers;
        }
    }
#endif
    if ( localOnly ) {
        nPlayers = ngc->nLocalPlayers;
    }
    ngc->nPlayersShown = nPlayers;
        
    value.ng_u16 = ngc->nPlayersShown;
    (*ngc->setAttrProc)( closure, NG_ATTR_NPLAYERS, value );
    (*ngc->enableAttrProc)( closure, NG_ATTR_NPLAYERS, ngc->isNewGame?
                            TRI_ENAB_ENABLED : TRI_ENAB_DISABLED );

    setRoleStrings( ngc );
    considerEnable( ngc );   

    /* Load local players first */
    nLoaded = 0;
    do {
        for ( ii = 0; ii < MAX_NUM_PLAYERS; ++ii ) {
            if ( !shown[ii] ) {
                const LocalPlayer* lp = &gi->players[ii];
                if ( !localOnly
                     || (lp->isLocal && (nLoaded < ngc->nLocalPlayers)) ) {
                    shown[ii] = XP_TRUE;
                    loadPlayer( ngc, nLoaded++, lp );
                }
            }
        }
        XP_ASSERT( localOnly || nLoaded == MAX_NUM_PLAYERS );
        localOnly = XP_FALSE;   /* for second pass */
    } while ( nLoaded < MAX_NUM_PLAYERS );
    
    adjustAllRows( ngc, XP_TRUE );
} /* newg_load */
Example #17
0
Entity *addEntityFromResource(char *type, char *name, int startX, int startY)
{
	Entity *e = NULL;

	if (strcmpignorecase(type, "ITEM") == 0 || strcmpignorecase(type, "SHIELD") == 0 || strcmpignorecase(type, "WEAPON") == 0)
	{
		e = addPermanentItem(name, startX, startY);
	}

	else if (strcmpignorecase(type, "TEMP_ITEM") == 0 || strcmpignorecase(type, "HEALTH") == 0)
	{
		e = addTemporaryItem(name, startX, startY, LEFT, 0, 0);
	}

	else if (strcmpignorecase(type, "PLAYER") == 0)
	{
		e = loadPlayer(startX, startY, NULL);
	}

	else if (strcmpignorecase(type, "PLAYER_WEAPON") == 0)
	{
		setPlayerWeaponName(name);
	}

	else if (strcmpignorecase(type, "PLAYER_SHIELD") == 0)
	{
		setPlayerShieldName(name);
	}

	else if (strcmpignorecase(type, "KEY_ITEM") == 0)
	{
		e = addKeyItem(name, startX, startY);
	}

	else if (strcmpignorecase(type, "ENEMY") == 0)
	{
		e = addEnemy(name, startX, startY);
	}

	else if (strcmpignorecase(type, "NPC") == 0)
	{
		e = addNPC(name, startX, startY);
	}

	else if (strcmpignorecase(type, "AUTO_LIFT") == 0 || strcmpignorecase(type, "MANUAL_LIFT") == 0)
	{
		e = addLift(name, startX, startY, getEntityTypeByName(type));
	}

	else if (strcmpignorecase(type, "SPAWNER") == 0)
	{
		e = addSpawner(startX, startY, name);
	}

	else if (strcmpignorecase(type, "TARGET") == 0)
	{
		addTarget(startX, startY, name);
	}

	else if (strcmpignorecase(type, "PRESSURE_PLATE") == 0)
	{
		e = addPressurePlate(name, startX, startY);
	}

	else if (strcmpignorecase(type, "TELEPORTER") == 0)
	{
		e = addTeleporter(name, startX, startY);
	}

	else if (strcmpignorecase(type, "AUTO_DOOR") == 0 || strcmpignorecase(type, "MANUAL_DOOR") == 0)
	{
		e = addDoor(name, startX, startY, getEntityTypeByName(type));
	}

	else if (strcmpignorecase(type, "WEAK_WALL") == 0)
	{
		e = addWeakWall(name, startX, startY);
	}

	else if (strcmpignorecase(type, "TRAP_DOOR") == 0)
	{
		e = addTrapDoor(name, startX, startY);
	}

	else if (strcmpignorecase(type, "CONVEYOR_BELT") == 0)
	{
		e = addConveyorBelt(name, startX, startY);
	}

	else if (strcmpignorecase(type, "SWITCH") == 0)
	{
		e = addSwitch(name, startX, startY);
	}

	else if (strcmpignorecase(type, "SCRIPT_LINE_DEF") == 0 || strcmpignorecase(type, "LINE_DEF") == 0)
	{
		e = addLineDef(type, name, startX, startY);
	}

	else if (strcmpignorecase(type, "LEVEL_EXIT") == 0)
	{
		e = addLevelExit(name, startX, startY);
	}

	else if (strcmpignorecase(type, "SAVE_POINT") == 0)
	{
		/* Save points don't spawn for replays */

		if (game.gameType == NORMAL)
		{
			e = addSavePoint(startX, startY);
		}
	}

	else if (strcmpignorecase(type, "TRIGGER") == 0)
	{
		addTriggerFromResource(key, value);
	}

	else if (strcmpignorecase(type, "GLOBAL_TRIGGER") == 0)
	{
		addGlobalTriggerFromResource(key, value);
	}

	else if (strcmpignorecase(type, "MAP_TRIGGER") == 0)
	{
		addMapTriggerFromResource(key, value);
	}

	else if (strcmpignorecase(type, "OBJECTIVE") == 0)
	{
		addObjectiveFromResource(key, value);
	}

	else if (strcmpignorecase(type, "ACTION_POINT") == 0)
	{
		e = addActionPoint(name, startX, startY);
	}

	else if (strcmpignorecase(type, "FALLING_PLATFORM") == 0)
	{
		e = addFallingPlatform(startX, startY, name);
	}

	else if (strcmpignorecase(type, "VANISHING_PLATFORM") == 0)
	{
		e = addVanishingPlatform(startX, startY, name);
	}

	else if (strcmpignorecase(type, "ANTI_GRAVITY") == 0)
	{
		e = addAntiGravityField(startX, startY, name);
	}

	else
	{
		showErrorAndExit("Unknown Entity type %s", type);
	}

	return e;
}
Example #18
0
/**
 *\fn int main(int argc, char *argv[])
 * Main
 *\param[in,out] argc argc
 *\param[in,out] argv argv
 */
int main(int argc, char *argv[])
{
    SDL_Surface *screen = NULL;

    int go = 1;
    int ret,ret1, ret2 = 0, ret3, ret4;

    char level_name[MAX_SIZE_FILE_NAME];
    char player_name[MAX_SIZE_FILE_NAME];
    int nb_lvl;
    /*sound*/
    Sound *sound_system;
    sound_system = createSound();

    /*keyboard config*/
    SDLKey kc[NB_KEY-1];

    /*input*/
    Input in;

    SDL_Init(SDL_INIT_VIDEO|SDL_INIT_TIMER|SDL_INIT_JOYSTICK);

    Player *current_player;

    current_player = (Player *)malloc(sizeof(Player));

    /*screen initialization*/
    screen = SDL_SetVideoMode(SCREEN_WIDTH, SCREEN_HEIGHT, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);

    initInput(&in);

    /*configurations loading */
    loadSoundOptions("configuration/sound.conf",sound_system);


    SDL_WM_SetCaption("Super Martin", NULL); //window name

    SDL_ShowCursor(SDL_DISABLE); //delete the mouse

    while (go) //main loop
    {
        if(titleMenu(screen,&go,sound_system, &in))
        {

            while( (ret3 = menuPlayers(screen, player_name, &go, sound_system, &in)) != -1 && go)
            {
                switch(ret3)
                {
                    case -1:
                        break;
                    case 2  :
                        ret2 = newPlayer(screen, player_name, sound_system, &go);
                        if(ret2 == 1)
                        {
                            current_player->levelMax = 1;
                            current_player->nbCoins = 0;
                            current_player->nbLifes = 3;
                            current_player->nbProjectile = 5;
                            savePlayer("save/.save", player_name, current_player);
                            loadInputOptions("default",kc,&in);
                            saveInputOptions(player_name, kc, &in);
                        }
                        else
                            break;

                    case 1  :
                        loadPlayer("save/.save", player_name, current_player);
                        loadInputOptions(player_name,kc,&in);
                        while(go && (ret1 = mainMenu(screen,&go,sound_system, player_name, &in)) != -1)
                        {
                            switch(ret1)
                            {
                                case -1:
                                    break;
                                case 0:

                                    while( (ret4 = menuLevel(screen,level_name,sound_system, player_name, current_player, &go, &nb_lvl, &in)) != -1 && go)
                                    {
                                        while(play(screen,level_name,sound_system,&go,kc, &in, current_player, player_name, ret4+1, nb_lvl) && go);
                                    }
                                    break;

                                case 1 :
                                    save(screen, "save/.save", player_name, current_player, &go);
                                    loadPlayer("save/.save", player_name, current_player);
                                    break;

                                case 2 :
                                    while((ret = optionMenu(screen,&go,sound_system,kc, &in)) != -1 && go)
                                    {
                                        switch(ret)
                                        {
                                            case -1:
                                                break;
                                            case 0:
                                                soundOptions(screen,&go,sound_system, &in);
                                                break;
                                            case 1:
                                                keyBoardOptions(screen,&go,kc,&in,player_name);
                                                break;
                                            default:;
                                        }
                                    }
                                    break;

                                case 3 :
                                    deletePlayer(screen, "save/players", player_name);
                                    go = 0;
                                    break;

                                default: ;
                            }
                        }
                        go = 1;
                        break;

                    default : ;

                }
            }

        }

        SDL_FillRect(screen,NULL,SDL_MapRGB(screen->format,255,255,255)); //clear screen

        SDL_Flip(screen);
    }


    freeSound(sound_system);
    free((void*)current_player);
    freeInput(&in);
    SDL_Quit();

    return EXIT_SUCCESS;
}