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

📄 gameclient.cpp

📁 网络泡泡被.net管理
💻 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 + -