Added eagames.bmp reading to the LoginScreen scene.

Added BCON parsing functionality contributed by Propeng.
This commit is contained in:
Fatbag 2012-04-08 12:20:25 -05:00
parent cb751c0bb8
commit 7d9259b63d
13 changed files with 157 additions and 54 deletions

View file

@ -19,8 +19,6 @@
namespace Audio {
HANDLE Thread;
IXAudio2 *pXAudio2 = NULL;
IXAudio2MasteringVoice *MasterVoice = NULL;

View file

@ -1,17 +1,19 @@
cmake_minimum_required(VERSION 2.6)
project(NiotsoClient)
if(WIN32)
set(NIOTSOCLIENT_SOURCES
Client.cpp
MessageHandler.cpp
Audio/Startup.cpp
Audio/windows/XAudio2.cpp
Graphics/Startup.cpp
Graphics/Viewport.cpp
resources/Resource.rc
System/System.cpp
)
add_executable(TSO WIN32 ${NIOTSOCLIENT_SOURCES})
target_link_libraries(TSO ole32 opengl32)
cmake_minimum_required(VERSION 2.6)
project(NiotsoClient)
include_directories(${CMAKE_SOURCE_DIR}/Libraries/FileHandler)
if(WIN32)
set(NIOTSOCLIENT_SOURCES
Client.cpp
MessageHandler.cpp
Audio/Startup.cpp
Audio/windows/XAudio2.cpp
Graphics/Startup.cpp
Graphics/Viewport.cpp
resources/Resource.rc
System/System.cpp
)
add_executable(TSO WIN32 ${NIOTSOCLIENT_SOURCES})
target_link_libraries(TSO FileHandler_shared ole32 opengl32)
endif()

View file

@ -69,7 +69,8 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int)
}
CurrentScene = new LoginScreen();
if(CurrentScene == NULL){
if(System::SceneFailed || CurrentScene == NULL){
if(System::SceneFailed) delete CurrentScene;
Shutdown();
return ERROR_INIT | ERROR_INIT_LOGIC | ERROR_LOGIC_CREATE_SCENE;
}
@ -110,8 +111,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE, LPSTR, int)
}
ShowWindow(Window::hWnd, SW_HIDE);
Audio::Shutdown();
Graphics::Shutdown();
delete CurrentScene;
Shutdown();
return 0;
@ -193,10 +193,12 @@ int CreateWindowInvisible(HINSTANCE hInst, unsigned Width, unsigned Height, bool
void Shutdown()
{
Audio::Shutdown();
Graphics::Shutdown();
if(Window::hWnd){
DestroyWindow(Window::hWnd);
Window::hWnd = NULL;
}
UnregisterClass("TSO_NIOTSO", System::hInst);
}

View file

@ -23,13 +23,7 @@
#undef NULL
#define NULL 0
#include "version.h"
#include "System/System.hpp"
#include "Resources/Resource.h"
#include "Audio/Audio.hpp"
#include "Graphics/Graphics.hpp"
#include "Scene/Scene.hpp"
#include "FileHandler.hpp"
//IsometricEngine.cpp
namespace Window {
@ -39,4 +33,12 @@ namespace Window {
}
//MessageHandler.cpp
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
LRESULT CALLBACK WndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam);
#include "version.h"
#include "System/System.hpp"
#include "Resources/Resource.h"
#include "Audio/Audio.hpp"
#include "Graphics/Graphics.hpp"
#include "Scene/Scene.hpp"

View file

@ -19,7 +19,6 @@
namespace Graphics {
HANDLE Thread;
HDC hDC;
HGLRC hRC;

View file

@ -15,6 +15,11 @@
along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#define EXIT_SCENE() do { System::SceneFailed = true; delete this; return; } while(0)
#define SCENE_EXIT 0
#define SCENE_NEED_REDRAW 1
#define SCENE_NO_REDRAW -1
class Scene {
const float TickPeriod;
float TimeDelta;
@ -45,15 +50,43 @@ class Scene {
};
class LoginScreen : public Scene {
public: LoginScreen() : Scene(1.0f/15) {}
public:
LoginScreen() : Scene(1.0f/15){
Image_t * Image = File::ReadImageFile("eagames.bmp");
if(!Image){
const char * Message;
switch(File::Error){
case FERR_NOT_FOUND:
Message = "%s does not exist.";
break;
case FERR_OPEN:
Message = "%s could not be opened for reading.";
break;
case FERR_BLANK:
case FERR_UNRECOGNIZED:
case FERR_INVALIDDATA:
Message = "%s is corrupt or invalid.";
break;
case FERR_MEMORY:
Message = "Memory for %s could not be allocated.";
break;
default:
Message = "%s could not be read.";
}
char Buffer[1024];
sprintf(Buffer, Message, "eagames.bmp");
MessageBox(Window::hWnd, Buffer, NULL, MB_OK | MB_ICONERROR);
EXIT_SCENE();
}
}
private:
int Run(float){
if(System::UserInput.CloseWindow){
System::Shutdown = true;
return 0;
return SCENE_EXIT;
}
return 1;
return SCENE_NEED_REDRAW;
}
public:

View file

@ -18,13 +18,13 @@
#include "../EngineInterface.hpp"
namespace System {
bool Shutdown = false;
HINSTANCE hInst = NULL;
HANDLE Process;
HANDLE ProcessHeap;
LARGE_INTEGER ClockFreq;
float FramePeriod;
UserInput_t UserInput;
bool SceneFailed = false;
int Initialize(){
memset(&UserInput, 0, sizeof(UserInput));

View file

@ -18,13 +18,11 @@
//System/System.cpp
namespace System {
int Initialize();
extern bool Shutdown;
extern HINSTANCE hInst;
extern HANDLE Process;
extern HANDLE ProcessHeap;
extern LARGE_INTEGER ClockFreq;
extern float FramePeriod;
extern bool Keys[256];
struct UserInput_t {
bool Keys[256];
@ -33,6 +31,8 @@ namespace System {
};
extern UserInput_t UserInput;
extern bool SceneFailed;
//Constants
enum {
SHUTDOWN = 0