📄 gameclient.cpp
字号:
// GameClient.cpp : Defines the entry point for the application.
//
#include "stdafx.h"
//#include <stdio.h>
//#include "util.h"
#include "io.h"
GSG_SelectPlayer* g_ptr_select_player_game = NULL;
MainGame* g_ptr_main_game = NULL;
CConfig g_config;
//HFONT g_font32;
//HFONT g_font16;
std::vector<std::string> g_array_shows_res;
std::vector<std::string> g_array_musics_res;
GSANI g_ani_cards_good;
GSANI g_ani_cards_bad;
BOOL load_shows_res(const char* pszDir);
BOOL load_musics_res(const char* pszDir);
int APIENTRY WinMain(HINSTANCE hInstance,
HINSTANCE hPrevInstance,
LPSTR lpCmdLine,
int nCmdShow)
{
// TODO: Place code here.
GameClientApp app;
GameClientEngine engine;
CGsSource source;
std::string str;
srand(Sys_GetTime());
GSG_SelectPlayer game_select_player(&engine);
g_ptr_select_player_game = &game_select_player;
MainGame main_game(&engine);
g_ptr_main_game = &main_game;
LOG log;
log.BeginLog("log.txt");
// g_ptr_net_lib_log = &log;
int ret = 0;
if (!Net_Startup(2,2))
{
return 0;
}
source.Load("test.gss");
load_shows_res("shows");
load_musics_res("musics");
if(FALSE==app.CreateApp(hInstance, lpCmdLine, IDI_DEMO,
false,
800, 600))
goto exit;
engine.InitEngine(app.GetMainWnd());
str = CGsFunc::GetGsApp()->GetAppPath(NULL);
str += "\\bubble.ini";
g_config.SetINIFile(str.c_str());
if (g_config.GetBOOL("MAIN","windows_mode","true")==false)
{
engine.ChangeEngineMode();
}
engine.SetSource(&source);
engine.SetGame(&game_select_player);
main_game.LoadConfig();
g_ani_cards_good.SetGsEngine(&engine);
g_ani_cards_good.Create("ani\\cards.txg");
g_ani_cards_bad.SetGsEngine(&engine);
g_ani_cards_bad.Create("ani\\cards_bad.txg");
if(FALSE==game_select_player.InitGame())
{
goto exit;
}
ret = app.Run();
main_game.EndGame();
exit:
g_ani_cards_good.Cleanup();
g_ani_cards_bad.Cleanup();
main_game.Disconnect();
Net_Cleanup();
return ret;
}
BOOL load_shows_res(const char* pszDir)
{
_finddata_t filestruct;
int p = 0;
int fn = 0;
char szSearch[255];
if(strlen(pszDir)==0)
{
strcpy(szSearch , "*.gif");
}
else
{
strcpy(szSearch , pszDir);
strcat(szSearch , "\\*.gif");
}
int hnd = _findfirst(szSearch , &filestruct);
if(hnd==-1)
{
Sys_Log("version_lib_log", "no file found in dir [%s]\n" , szSearch);
return FALSE;
}
do
{
char szFullName[255];
if(strlen(pszDir) > 0)
{
sprintf(szFullName , "%s\\%s" , pszDir , filestruct.name);
}
else
{
strcpy(szFullName , filestruct.name);
}
if(!(filestruct.attrib & _A_SUBDIR)) // 如果文件属性不是'目录'
{
if (CGsFunc::File_GetFFT(szFullName)==GSF_GIF)
{
g_array_shows_res.push_back(std::string(szFullName));
}
}
else // 发现子目录
{
if(strcmp(filestruct.name , "..")!=0 && strcmp(filestruct.name , ".")!=0)
{
}
}
}while(!_findnext(hnd , &filestruct));
return TRUE;
}
int g_get_num_shows_res()
{
return g_array_shows_res.size();
}
const char* g_get_str_shows_res(int index)
{
if (index>=g_array_shows_res.size())
{
return g_array_shows_res[index%g_array_shows_res.size()].c_str();
}
if (index<0 || index>=g_array_shows_res.size())
{
return NULL;
}
return g_array_shows_res[index].c_str();
}
BOOL load_musics_res(const char* pszDir)
{
_finddata_t filestruct;
int p = 0;
int fn = 0;
char szSearch[255];
if(strlen(pszDir)==0)
{
strcpy(szSearch , "*.*");
}
else
{
strcpy(szSearch , pszDir);
strcat(szSearch , "\\*.*");
}
int hnd = _findfirst(szSearch , &filestruct);
if(hnd==-1)
{
Sys_Log("version_lib_log", "no file found in dir [%s]\n" , szSearch);
return FALSE;
}
do
{
char szFullName[255];
if(strlen(pszDir) > 0)
{
sprintf(szFullName , "%s\\%s" , pszDir , filestruct.name);
}
else
{
strcpy(szFullName , filestruct.name);
}
if(!(filestruct.attrib & _A_SUBDIR)) // 如果文件属性不是'目录'
{
FFT fft = CGsFunc::File_GetFFT(szFullName);
if (fft==GSF_MP3
|| fft==GSF_MIDI
|| fft==GSF_WMA
|| fft==GSF_WAV)
{
g_array_musics_res.push_back(std::string(szFullName));
}
}
else // 发现子目录
{
if(strcmp(filestruct.name , "..")!=0 && strcmp(filestruct.name , ".")!=0)
{
}
}
}while(!_findnext(hnd , &filestruct));
return TRUE;
}
int g_get_num_musics_res()
{
return g_array_musics_res.size();
}
const char* g_get_str_musics_res(int index)
{
if (index>=g_array_musics_res.size())
{
return g_array_musics_res[index%g_array_musics_res.size()].c_str();
}
if (index<0 || index>=g_array_musics_res.size())
{
return NULL;
}
return g_array_musics_res[index].c_str();
}
CGsTexture* g_get_ani_card(int style)
{
switch(style) {
case CARD_SUBTRACT_COIN: //扣一分
return g_ani_cards_bad.GetFrame(10);
break;
case CARD_SUBTRACT_GOOD: //减少有益泡泡
return g_ani_cards_bad.GetFrame(2);
break;
case CARD_RAISE: //冒泡泡
return g_ani_cards_bad.GetFrame(3);
break;
case CARD_BREAKDOWN: //下降一层
return g_ani_cards_bad.GetFrame(1);
break;
case CARD_LOST_CONTROL: //失控
return g_ani_cards_bad.GetFrame(5);
break;
case CARD_BLIND: //失明
return g_ani_cards_bad.GetFrame(6);
break;
case CARD_ADD_BAD: //加7个有害泡泡
return g_ani_cards_bad.GetFrame(7);
break;
case CARD_POP: //随机销掉3个泡泡
return g_ani_cards_good.GetFrame(1);
break;
case CARD_SUPER: //进入超级状态
return g_ani_cards_good.GetFrame(2);
break;
case CARD_ADD_GOOD: //获得7个有益泡泡
return g_ani_cards_good.GetFrame(3);
break;
case CARD_BONUS: //奖励一分
return g_ani_cards_good.GetFrame(4);
break;
default:
return NULL;
}
}
HRESULT g_render_background(CGsEngine* pEngine)
{
pEngine->PreparePaint();
{
int rw = pEngine->GetRenderWidth();
int rh = pEngine->GetRenderHeight();
float fw =pEngine->ValueLoop(0,(rw+CARD_WIDTH*2)/CARD_WIDTH*CARD_WIDTH,0,15000);
//幻境
CGsTexture* pTex;
pTex = g_ani_cards_good.GetFrame(0);
for (int y=0; y<(rh+CARD_WIDTH*2)/3; y+=CARD_WIDTH)
{
for (int x=0; x<rw+CARD_WIDTH*2; x+=CARD_WIDTH)
{
pTex = g_ani_cards_good.GetFrame((x+y*2)/CARD_WIDTH*2);
pEngine->Render_PaintFast(int(x+fw)%(rw+CARD_WIDTH*2)-CARD_WIDTH, y-CARD_WIDTH, pTex, 1.0f, 1.0f, 1.0f, 0.3f);
}
}
for (; y<(rh+CARD_WIDTH*2)*2/3; y+=CARD_WIDTH)
{
for (int x=0; x<rw+CARD_WIDTH*2; x+=CARD_WIDTH)
{
int ax = int(x+fw)%(rw+CARD_WIDTH*2)-CARD_WIDTH;
float fa = 0.5f*(ax+CARD_WIDTH)/(rw+CARD_WIDTH*2);
pTex = g_ani_cards_good.GetFrame((x+y*2)/CARD_WIDTH*2);
pEngine->Render_PaintFast(int(x+fw)%(rw+CARD_WIDTH*2)-CARD_WIDTH, y-CARD_WIDTH, pTex, 1.0f, 1.0f, 1.0f, fa);
ax = int(x+rw+CARD_WIDTH*2-fw)%(rw+CARD_WIDTH*2)-CARD_WIDTH;
fa = 0.5f*(rw+CARD_WIDTH*2 - (ax+CARD_WIDTH))/(rw+CARD_WIDTH*2);
pTex = g_ani_cards_bad.GetFrame((x+y*2)/CARD_WIDTH*2);
pEngine->Render_PaintFast(int(x+rw+CARD_WIDTH*2-fw)%(rw+CARD_WIDTH*2)-CARD_WIDTH, y-CARD_WIDTH, pTex, 1.0f, 1.0f, 1.0f, fa);
}
}
for (; y<rh+CARD_WIDTH*2; y+=CARD_WIDTH)
{
for (int x=0; x<rw+CARD_WIDTH*2; x+=CARD_WIDTH)
{
pTex = g_ani_cards_bad.GetFrame((x+y*2)/CARD_WIDTH*2);
pEngine->Render_PaintFast(int(x+rw+CARD_WIDTH*2-fw)%(rw+CARD_WIDTH*2)-CARD_WIDTH, y-CARD_WIDTH, pTex, 1.0f, 1.0f, 1.0f, 0.3f);
}
}
}
return S_OK;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -