Ejemplo n.º 1
0
/*
================
rvWeaponGauntlet::State_Fire
================
*/
stateResult_t rvWeaponGauntlet::State_Fire( const stateParms_t& parms ) {
	enum {
		STAGE_START,
		STAGE_START_WAIT,
		STAGE_LOOP,
		STAGE_LOOP_WAIT,
		STAGE_END,
		STAGE_END_WAIT
	};	
	switch ( parms.stage ) {
		case STAGE_START:	
			PlayAnim( ANIMCHANNEL_ALL, "attack_start", parms.blendFrames );
			StartBlade();
			loopSound = LOOP_NONE;
			// #32 - no gauntlet spin up
			//return SRESULT_STAGE( STAGE_START_WAIT );
			return SRESULT_STAGE( STAGE_LOOP );
		
		case STAGE_START_WAIT:
			if ( !wsfl.attack ) {
				return SRESULT_STAGE( STAGE_END );
			}
			if ( AnimDone( ANIMCHANNEL_ALL, parms.blendFrames ) ) {
				return SRESULT_STAGE( STAGE_LOOP );
			}
			return SRESULT_WAIT;
			
		case STAGE_LOOP:
			PlayCycle( ANIMCHANNEL_ALL, "attack_loop", parms.blendFrames );
			StartSound( "snd_spin_loop", SND_CHANNEL_WEAPON, 0, false, 0 );
			return SRESULT_STAGE(STAGE_LOOP_WAIT);
			
		case STAGE_LOOP_WAIT:
			if ( !wsfl.attack || wsfl.lowerWeapon ) {
				return SRESULT_STAGE( STAGE_END );
			}
			Attack();
			return SRESULT_WAIT;
		
		case STAGE_END:
			PlayAnim( ANIMCHANNEL_ALL, "attack_end", parms.blendFrames );
			StopBlade();
			StartSound( "snd_spin_down", SND_CHANNEL_WEAPON, 0, false, 0 );
			return SRESULT_STAGE( STAGE_END_WAIT );
		
		case STAGE_END_WAIT:
			if ( wsfl.attack || AnimDone( ANIMCHANNEL_ALL, parms.blendFrames ) ) {
				PostState( "Idle", parms.blendFrames );
				return SRESULT_DONE;
			}
			return SRESULT_WAIT;
	}			
	return SRESULT_ERROR;
}
Ejemplo n.º 2
0
void CNucAge::ProcessConsole(const char* pcszConCmd)
{
	if (GS_GAME == GetRTIntVar(NA_RT_GAME_STATE))
	{
		if (strcmp(pcszConCmd, "winlevel") == 0)
		{
			PostState(ES_LEVEL_SUCCEEDED, 0, 0, "level", "main");
		}
		else if (strcmp(pcszConCmd, "openall") == 0)
		{
			SetRTIntVar(NA_RT_MAX_LEVEL_NUMBER, NA_MAX_LEVELS - 1);
		}
	}
}
Ejemplo n.º 3
0
bool CScreenJoin::ChangeState(EState eNewState)
{
	if (!PostState(eNewState))
	{
		return false;
	}

	m_eCurState = eState_Transition;

	if (!PreState(eNewState))
	{
		return false;
	}

	m_eCurState = eNewState;

	return true;
}
END_CLASS_STATES

/*
================
rvMonsterStreamProtector::State_Killed
================
*/
stateResult_t rvMonsterStreamProtector::State_Killed ( const stateParms_t& parms ) {
	// Make sure all animation stops
	StopAnimState ( ANIMCHANNEL_TORSO );
	StopAnimState ( ANIMCHANNEL_LEGS );
	if ( head ) {
		StopAnimState ( ANIMCHANNEL_HEAD );
	}

	DisableAnimState ( ANIMCHANNEL_LEGS );
	PlayAnim ( ANIMCHANNEL_TORSO, "death", parms.blendFrames );
	PostState ( "State_Dead" );
	return SRESULT_DONE;	
}
Ejemplo n.º 5
0
BOOL CNucAge::ProcessState(E_STATE eState, DWORD dwCurrTick)
{
    switch (eState.dwStateID) {
        case ES_STARTENGINE:
            // init resources
            AddResource("data\\cursor.dat", "cursor");
            AddResource("data\\sand.dat", "sand");
            AddResource("data\\actor.dat", "actor");
            AddResource("data\\gamegui.dat", "gamegui");

            // init scenes
            AddScene("scenes\\gamegui.scn", "gamegui", "gamegui");
            AddScene("scenes\\level.scn", "level", "sand");
            AddScene("scenes\\actor.scn", "actor", "actor");

            // create game objects
            g_pLevel = new CLevel();
            g_pRlPlayer = new CPlayer();
            g_pShPlayer = new CPlayer();
            g_pGtm = new CGameTime();
            g_pKeys = new CKeys();
            g_pMenu = new CGameMenu();
			g_pHelp = new CHelpDlg();
			g_pOptions = new COptionsDlg();

            // set players name
            strcpy(g_pRlPlayer->m_szName, "rlplayer");
            strcpy(g_pShPlayer->m_szName, "shplayer");
            g_pRlPlayer->m_bIsReal = TRUE;
            g_pShPlayer->m_bIsReal = FALSE;

            // add mouse support
            CreateMouse("cursor");

            // add listeners
            GetScene("level")->AddListener(g_pLevel, "main");
            GetScene("actor")->AddListener(g_pRlPlayer, g_pRlPlayer->m_szName);
            GetScene("actor")->AddListener(g_pShPlayer, g_pShPlayer->m_szName);
            GetScene("gamegui")->AddListener(g_pGtm, "time");
            GetScene("gamegui")->AddListener(g_pKeys, "keys");
			GetScene("gamegui")->AddListener(g_pMenu, "main");
			GetScene("gamegui")->AddListener(g_pHelp, "help");
			GetScene("gamegui")->AddListener(g_pOptions, "options");

            GetScene("level")->SetVisible(FALSE);
            GetScene("actor")->SetVisible(FALSE);

			// create fonts
			GetScene("gamegui")->GetStringManager()->CreateFont("fonts\\fonts.fnt", "greenfnt");
			GetScene("gamegui")->GetStringManager()->CreateFont("fonts\\fonts.fnt", "buttonfnt");
			GetScene("gamegui")->GetStringManager()->CreateFont("fonts\\fonts.fnt", "redfnt");
			GetScene("gamegui")->GetStringManager()->CreateFont("fonts\\fonts.fnt", "labelfnt");

			// init string table
			GetStringTable()->Init("strings.dat");
			GetStringTable()->SetLocale("en");

			// init audio
			GetAudio()->LoadGroup("sfx\\sound.sfx", "sound");

			// we start game from menu screen
			SetRTIntVar(NA_RT_GAME_STATE, GS_MENU);

			// create game variable object
			AddVars("game.ini", "config");

			// get world size value
			int iLevel, iWorldSize;
			GetVars("config")->GetInt(L_GROUP, "config", "worldsize", 0, &iWorldSize);
			if (iWorldSize <= 0 || iWorldSize > 25) iWorldSize = 25;
			SetRTIntVar(NA_RT_WORLD_SIZE, iWorldSize);

			// get current level value
			GetVars("config")->GetInt(L_GROUP, "config", "curlvl", 0, &iLevel);
			if (iLevel >= NA_NUM_WORLDS*iWorldSize) iLevel = NA_NUM_WORLDS*iWorldSize - 1;
			SetRTIntVar(NA_RT_CURR_LEVEL_NUMBER, iLevel);
			SetRTIntVar(NA_RT_MINI_LEVEL_NUMBER, iLevel);

			// get maximum achieved number of levels
			GetVars("config")->GetInt(L_GROUP, "config", "maxlvl", 0, &iLevel);
			if (iLevel >= NA_NUM_WORLDS*iWorldSize) iLevel = NA_NUM_WORLDS*iWorldSize - 1;
			SetRTIntVar(NA_RT_MAX_LEVEL_NUMBER, iLevel);

			// sync current level with max level
			if (GetRTIntVar(NA_RT_CURR_LEVEL_NUMBER) > iLevel)
			{
				SetRTIntVar(NA_RT_CURR_LEVEL_NUMBER, iLevel);
				SetRTIntVar(NA_RT_MINI_LEVEL_NUMBER, iLevel);
			}

			// update audio
			int iSndVol, iMusVol;
			BOOL fMute;
			GetVars("config")->GetInt(L_GROUP, "config", "mute", 0, &fMute);
			GetVars("config")->GetInt(L_GROUP, "config", "sndvol", 0, &iSndVol);
			GetVars("config")->GetInt(L_GROUP, "config", "musvol", 0, &iMusVol);

			GetAudio()->SetSFXVolume(iSndVol);
			GetAudio()->SetMusicVolume("backlogo", iMusVol);
			GetAudio()->SetMute(fMute);

			SetRTStringVar(NA_RT_BACK_MUSIC, "backlogo");
			GetAudio()->PlayMusic("backlogo");

			//turn on music check
			PostState(ES_ENGINE_CHECKMUSIC, 0, 0);
			break;
		case ES_ENGINE_CHECKMUSIC:
			//check if back music stop then play it again
			if (!GetAudio()->IsMusicPlay(GetRTStringVar(NA_RT_BACK_MUSIC))) {
				GetAudio()->StopMusic(GetRTStringVar(NA_RT_BACK_MUSIC));
				GetAudio()->PlayMusic(GetRTStringVar(NA_RT_BACK_MUSIC));
			}
			return FALSE;
	}
	return TRUE;
}
Ejemplo n.º 6
0
BOOL CGameMenu::ProcessState(E_STATE sState, DWORD dwCurrTick)
{
    switch (sState.dwStateID) {
    case ES_LISTENERINIT:
        m_pPLBut = new CPlayLevel();
        m_pRLBut = new CRetryLevel();
        m_pNLBut = new CNextBut();
        m_pBTMBut = new CBackToMenu();
        m_pQBut = new CQuitMenu();
		m_pNextLvl = new CNextMiniLevel();
		m_pPrevLvl = new CPrevMiniLevel();
		m_pNextWorld = new CNextWorld();
		m_pPrevWorld = new CPrevWorld();
		m_pOptBut = new COptionsBut();
		m_pHelpBut = new CHelpBut();
		m_pOKBut = new COKBut();

        GetScene()->AddListener(m_pPLBut, "playbut");
        GetScene()->AddListener(m_pRLBut, "retrybut");
        GetScene()->AddListener(m_pNLBut, "nextbut");
        GetScene()->AddListener(m_pBTMBut, "backmenubut");
        GetScene()->AddListener(m_pQBut, "quitbut");
		GetScene()->AddListener(m_pNextLvl, "nextlvlbut");
		GetScene()->AddListener(m_pPrevLvl, "prevlvlbut");
		GetScene()->AddListener(m_pNextWorld, "nextworldbut");
		GetScene()->AddListener(m_pPrevWorld, "prevworldbut");
		GetScene()->AddListener(m_pOptBut, "optbut");
		GetScene()->AddListener(m_pHelpBut, "helpbut");
		GetScene()->AddListener(m_pOKBut, "okbut");

        m_pPLBut->InitButton("button", "but1", "buttonfnt");
        m_pRLBut->InitButton("button", "but2", "buttonfnt");
        m_pNLBut->InitButton("button", "but3", "buttonfnt");
        m_pBTMBut->InitButton("button", "but4", "buttonfnt");
        m_pQBut->InitButton("button", "but5", "buttonfnt");
		m_pNextLvl->InitButton("rarbutt", "", "buttonfnt");
		m_pPrevLvl->InitButton("larbutt", "", "buttonfnt");
		m_pNextWorld->InitButton("rarbutt", "", "buttonfnt");
		m_pPrevWorld->InitButton("larbutt", "", "buttonfnt");
		m_pOptBut->InitButton("button", "but6", "buttonfnt");
		m_pHelpBut->InitButton("button", "but7", "buttonfnt");
		m_pOKBut->InitButton("button", "but8", "buttonfnt");

		m_iWorldId = GET_STRING()->CreateFromTable("world1", "buttonfnt", 360, 388, 8);
		m_iLevelId = GET_STRING()->CreateFromTable("level", "buttonfnt", 380, 168, 8);
		m_iLevelValueId = GET_STRING()->Create("", "buttonfnt", 430, 168, 8);
		m_iLockedId = GET_STRING()->CreateFromTable("locked", "redfnt", 360, 280, 9);
		m_iTryAgainId = GET_STRING()->CreateFromTable("tryagain", "labelfnt", 400, 415, 8);
		m_iSuccessId = GET_STRING()->CreateFromTable("success", "labelfnt", 400, 415, 8);
		m_iWinId = GET_STRING()->CreateFromTable("win", "labelfnt", 80, 200, 8);

		char buf[MAX_BUFFER];

		for (int i = 0; i < NA_WORLD_DESC_NUM_LINES; i++) {
			wsprintf(buf, "wdesc1%i", i + 1);
			m_iWorldDesc[i] = GET_STRING()->CreateFromTable(buf, "greenfnt", 10, 400 - i*25, 8);
		}
        DrawStartMenu();
		PostState(ES_ENGINE_INITLANG, 0, 0);
        break;
	case ES_ENGINE_INITLANG:
		InitLng();
		break;
    }
    return TRUE;
}