⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 playingstate.cpp

📁 VIGASOCO (VIdeo GAmes SOurce COde) Windows port (v0.01)
💻 CPP
字号:
// PlayingState.cpp
//
/////////////////////////////////////////////////////////////////////////////

#include <cassert>
#include "FirstCutscene.h"
#include "SecondCutscene.h"
#include "ThirdCutscene.h"
#include "Game.h"
#include "Writer.h"
#include "CommonCutscene.h"
#include "PlayingState.h"
#include "PlayingSubstates.h"

GameSubstate *PlayingState::substates[0x26];
GameState *PlayingState::cutScene[0x15];
GameState *PlayingState::cutScenes[4];

/////////////////////////////////////////////////////////////////////////////
// initialization and cleanup
/////////////////////////////////////////////////////////////////////////////

PlayingState::PlayingState()
{
	substate = 0;

	substates[0x00] = new PlayingInitPlayerLevelDataSubstate();
	substates[0x01] = new PlayingInitRemainingDataSubstate();
	substates[0x02] = 0;
	substates[0x03] = new PlayingMainGameLoopSubstate();
	substates[0x04] = new PlayingPacmanDeadSubstate();
	substates[0x05] = 0;
	substates[0x06] = new PlayingCheckForGameOverSubstate();
	substates[0x07] = 0;
	substates[0x08] = new PlayingInitDemoSubstate();
	substates[0x09] = new PlayingInitLevelAndDifficultySubstate();
	substates[0x0a] = 0;
	substates[0x0b] = new PlayingContinueLevelSubstate();
	substates[0x0c] = new PlayingStopSoundAndWaitSubstate();
	substates[0x0d] = 0;
	substates[0x0e] = new PlayingChangeCRAMSubstate();
	substates[0x0f] = 0;
	substates[0x10] = new PlayingRestoreCRAMSubstate();
	substates[0x11] = 0;
	substates[0x12] = new PlayingChangeCRAMSubstate();
	substates[0x13] = 0;
	substates[0x14] = new PlayingRestoreCRAMSubstate();
	substates[0x15] = 0;
	substates[0x16] = new PlayingChangeCRAMSubstate();
	substates[0x17] = 0;
	substates[0x18] = new PlayingRestoreCRAMSubstate();
	substates[0x19] = 0;
	substates[0x1a] = new PlayingChangeCRAMSubstate();
	substates[0x1b] = 0;
	substates[0x1c] = new PlayingRestoreCRAMSubstate();
	substates[0x1d] = 0;
	substates[0x1e] = new PlayingInitCutsceneSubstate();
	substates[0x1f] = 0;
	substates[0x20] = new PlayingCutsceneSubstate();
	substates[0x21] = 0;
	substates[0x22] = new PlayingPrepareNextLevelDataSubstate();
	substates[0x23] = new PlayingInitLevelAndDifficultySubstate();
	substates[0x24] = 0;
	substates[0x25] = new PlayingContinueLevelSubstate();

	// cutscene states
	cutScenes[0] = new NopCutsceneState();
	cutScenes[1] = new FirstCutsceneState();
	cutScenes[2] = new SecondCutsceneState();
	cutScenes[3] = new ThirdCutsceneState();

	cutScene[0x00] = cutScenes[0];
	cutScene[0x01] = cutScenes[1];
	cutScene[0x02] = cutScenes[0];
	cutScene[0x03] = cutScenes[0];
	cutScene[0x04] = cutScenes[2];
	cutScene[0x05] = cutScenes[0];
	cutScene[0x06] = cutScenes[0];
	cutScene[0x07] = cutScenes[0];
	cutScene[0x08] = cutScenes[3];
	cutScene[0x09] = cutScenes[0];
	cutScene[0x0a] = cutScenes[0];
	cutScene[0x0b] = cutScenes[0];
	cutScene[0x0c] = cutScenes[3];
	cutScene[0x0d] = cutScenes[0];
	cutScene[0x0e] = cutScenes[0];
	cutScene[0x0f] = cutScenes[0];
	cutScene[0x10] = cutScenes[3];
	cutScene[0x11] = cutScenes[0];
	cutScene[0x12] = cutScenes[0];
	cutScene[0x13] = cutScenes[0];
	cutScene[0x14] = cutScenes[0];
}

PlayingState::~PlayingState()
{
	// delete cutscenes
	for (int i = 0; i < 4; i++){
		delete cutScenes[i];
	}

	// delete playing substates
	for (int i = 0; i < 0x26; i++){
		delete substates[i];
	}
}

void PlayingState::run()
{
	assert((substate >= 0) && (substate < 0x26));

	// delegate the action to the substate
	if (substates[substate]){
		substates[substate]->run();
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -