Old.DirectX.Programs/apps/MasterKong2D/mastermain.cpp
Source: Old.DirectX.Programs/apps/MasterKong2D/mastermain.cpp
// masterkong
// written by jared bruni
// www.lostsidedead.com
// Open Source Open Mind
#include "thehead.h"
Player player;
MasterXHWND mxhwnd;
Intro intro;
Start start;
Game game;
Options opt;
GameOver gameover;
About about;
GIntro gintro;
LevelMap level;
SoundHandle soundhandle;
ParticleHandler hparticle;
int XSTD MasterMain(HINSTANCE hInst,LPSTR line)
{
srand(time(NULL));
if(mxhwnd.CreateMasterX("MasterKong",640,480,COLOR_DEFAULT,MasterProc,hInst,LoadIcon(hInst,MAKEINTRESOURCE(IDI_ICON1)),NULL))
{
mxhwnd.InitTimer(1,1);
mxhwnd.HideCursor();
mxhwnd.SetScreen(ID_INTRO);
intro.load();
start.load();
game.load();
opt.load();
about.load();
gameover.load();
gintro.load();
soundhandle.load();
hparticle.load();
loadlevel("demo.mxk");
soundhandle.Play(OPEN);
return mxhwnd.InitLoop(update);
}
return 0;
}
long XSTD MasterProc(HWND hwnd,UINT msg,WPARAM wParam,LPARAM lParam)
{
switch(msg)
{
case WM_DESTROY:
PostQuitMessage(0);
break;
case WM_ACTIVATEAPP:
mxhwnd.activeapp = wParam;
break;
case WM_KEYDOWN:
{
if(wParam == VK_ESCAPE)
{
mxhwnd.Kill();
} else
{
switch(mxhwnd.GetScreen())
{
case ID_START:
start.keypress(wParam);
break;
case ID_ABOUT:
about.keypress(wParam);
break;
case ID_OPTIONS:
opt.keypress(wParam);
break;
case ID_GINTRO:
gintro.keypress(wParam);
break;
case ID_GAME:
game.hero.keypress(wParam);
break;
case ID_GAMEOVER:
gameover.keypress(wParam);
break;
}
}
}
break;
case WM_KEYUP:
{
switch(mxhwnd.GetScreen())
{
case ID_GAME:
game.hero.keyrelease(wParam);
break;
}
}
break;
case WM_TIMER:
{
mxhwnd.ChangeTime();
}
break;
default: return DefWindowProc(hwnd,msg,wParam,lParam);
}
return 0;
}
void update(MASTERSCREEN screen)
{
mxhwnd.SetTimeFlag();
switch(screen)
{
case ID_INTRO:
intro.update();
break;
case ID_START:
start.update();
break;
case ID_GAME:
game.update();
break;
case ID_GAMEOVER:
gameover.update();
break;
case ID_OPTIONS:
opt.update();
break;
case ID_ABOUT:
about.update();
break;
case ID_GINTRO:
gintro.update();
break;
}
}
// load the level
void loadlevel(char* levelstr)
{
ifstream fin(levelstr, std::ios::binary );
fin.read((char*)&level,sizeof(level));
fin.close();
game.hero.hero_pos = level.hsp;
game.grandma.pos = level.gsp;
game.grandma.spos = level.gsp;
game.hero.start_pos = level.hsp;
game.grandma.birth();
}
// how many rows over
int rows(int row)
{
return (row*24);
}
Hero* GetHero()
{
return (Hero*)&game.hero;
}
Grandma* GetGrandma()
{
return (Grandma*)&game.grandma;
}
MasterJoyStick* getstick()
{
return (MasterJoyStick*)&game.stick;
}
void thegameover(bool win)
{
mxhwnd.SetScreen(ID_GAMEOVER);
gameover.passgameover(win);
}
/*************************************************************************** lostsidedead.com */