亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? asl_file.cpp

?? 泡泡堂單機(jī)版(含ASL游戲引擎源碼 泡泡堂單機(jī)版(含ASL游戲引擎源碼
?? CPP
字號:
//-----------------------------------------------------------------------------
//
//    ____ Azure Star Game Engine 藍(lán)星游戲引擎 ____
//
//    Copyright (c) 2006, 藍(lán)星工作室
//    All rights reserved.
//
//    文件名稱: asl_file.cpp
//    摘    要: 文件類實(shí)現(xiàn)
//
//    當(dāng)前版本: 1.0
//    作    者: 湯  祺
//    創(chuàng)建日期: 2006-7-20
//
//-----------------------------------------------------------------------------

#include "asl_file.h"
#include "unzip.h"
#include <stdio.h>

namespace ASL
{

//-----------------------------------------------------------------------------
//
// ASLFile類實(shí)現(xiàn)部分
//
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// 函數(shù)名: ASLFile::ASLFile()
// 功  能: 構(gòu)造函數(shù)
// 參  數(shù): [void] - 無
// 返回值: [void] - 無
//-----------------------------------------------------------------------------
ASLFile::ASLFile(LPCSTR szName, BYTE* pBuffer, int nSize, bool bDelete)
: m_pBuffer(pBuffer)
, m_nSize(nSize)
, m_pCurrent(pBuffer)
, m_bDelete(bDelete)
{
	strcpy(m_szFileName, szName);
}

//-----------------------------------------------------------------------------
// 函數(shù)名: ASLFile::~ASLFile()
// 功  能: 析構(gòu)函數(shù)
// 參  數(shù): [void] - 無
// 返回值: [void] - 無
//-----------------------------------------------------------------------------
ASLFile::~ASLFile()
{
	SAFE_DELETE_ARRAY(m_pBuffer);
}

//-----------------------------------------------------------------------------
// 函數(shù)名: ASLFile::Read()
// 功  能: 從當(dāng)前位置讀取指定字節(jié)數(shù)
// 參  數(shù): [*pBuffer] - 接收文件內(nèi)容的緩沖區(qū)指針
//         [nSize] - 要讀的數(shù)據(jù)量(單位: 字節(jié))
// 返回值: [bool] - true, 如果文件未讀完
//-----------------------------------------------------------------------------
bool ASLFile::Read(void *pBuffer, int nSize)
{	
	if (!IsEnd())
	{
		memcpy(pBuffer, m_pCurrent, nSize);
		m_pCurrent += nSize;
		return true;
	}
	else
	{
		return false;
	}
}

//-----------------------------------------------------------------------------
// 函數(shù)名: ASLFile::GetCh()
// 功  能: 從當(dāng)前位置讀取一個(gè)字符
// 參  數(shù): [&ch] - 接收讀取字符的變量
// 返回值: [bool] - true, 如果文件未讀完
//-----------------------------------------------------------------------------
bool ASLFile::GetCh(char &ch)
{
	if (!IsEnd())
	{
		ch = *m_pCurrent++;
		return true;
	}
	else
	{
		return false;
	}
}

//-----------------------------------------------------------------------------
// 函數(shù)名: ASLFile::GetLine()
// 功  能: 從當(dāng)前位置讀取一行, 超過緩沖區(qū)的部分將在下次調(diào)用時(shí)讀取.
// 參  數(shù): [*pBuffer] - 接收文件內(nèi)容的緩沖區(qū)指針
//         [nBufSize] - 接收緩沖區(qū)大小
// 返回值: [bool] - true, 如果文件未讀完
//-----------------------------------------------------------------------------
bool ASLFile::GetLine(char *pBuffer, int nBufSize)
{
	if (!IsEnd())
	{
		int count;
		char *pos = strchr((char*)m_pCurrent, '\r');

		if (pos == NULL)
		{
			count = int((char*)m_pBuffer + m_nSize - (char*)m_pCurrent);
		}
		else
		{
			count = int(pos - (char*)m_pCurrent);
		}

		if (count >= nBufSize)
		{
			count = nBufSize - 1;
		}
		
		memcpy(pBuffer, m_pCurrent, count);
		pBuffer[count] = '\0';
			
		m_pCurrent += count;
		if (*m_pCurrent == '\r')
		{
			m_pCurrent += 2;	// 跳過 '\r' 和 '\n'
		}
		
		return true;
	}
	else
	{
		return false;
	}
}



//-----------------------------------------------------------------------------
//
// ASLFileLoader類實(shí)現(xiàn)部分
//
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// 函數(shù)名: ASLFileLoader::ASLFileLoader()
// 功  能: 構(gòu)造函數(shù)
// 參  數(shù): [void] - 無
// 返回值: [void] - 無
//-----------------------------------------------------------------------------
ASLFileLoader::ASLFileLoader() 
{
	m_szDir[0] = '\0';
	m_szZip[0] = '\0';
	m_szPwd[0] = '\0';
}

//-----------------------------------------------------------------------------
// 函數(shù)名: ASLFileLoader::~ASLFileLoader()
// 功  能: 析構(gòu)函數(shù)
// 參  數(shù): [void] - 無
// 返回值: [void] - 無
//-----------------------------------------------------------------------------
ASLFileLoader::~ASLFileLoader()
{
}

//-----------------------------------------------------------------------------
// 函數(shù)名: ASLFileLoader::SetZipCur()
// 功  能: 設(shè)置Zip文件(相對于當(dāng)前目錄)
// 參  數(shù): [szFileName] - 文件名
//         [szPassword] - 密碼
// 返回值: [void] - 無
//-----------------------------------------------------------------------------
void ASLFileLoader::SetZipCur(LPCSTR szFileName, LPCSTR szPassword)
{
	strcpy(m_szZip, szFileName);
	strcpy(m_szPwd, szPassword);
}

//-----------------------------------------------------------------------------
// 函數(shù)名: ASLFileLoader::SetZipApp()
// 功  能: 設(shè)置Zip文件(相對于可執(zhí)行文件所在目錄)
// 參  數(shù): [szFileName] - 文件名
//         [szPassword] - 密碼
// 返回值: [void] - 無
//-----------------------------------------------------------------------------
void ASLFileLoader::SetZipApp(LPCSTR szFileName, LPCSTR szPassword)
{
	strcpy(m_szZip, GetAppPath());
	strcat(m_szZip, szFileName);
	strcpy(m_szPwd, szPassword);
}

//-----------------------------------------------------------------------------
// 函數(shù)名: ASLFileLoader::SetDirCur()
// 功  能: 設(shè)置文件目錄(相對于當(dāng)前目錄). 所有文件均從此目錄打開文件
// 參  數(shù): [szDirName] - 文件目錄
// 返回值: [void] - 無
//-----------------------------------------------------------------------------
void ASLFileLoader::SetDirCur(LPCSTR szDirName)
{
	strcpy(m_szDir, szDirName);
	if (m_szDir[0] != '\0')
	{
		strcat(m_szDir, "\\");
	}
}

//-----------------------------------------------------------------------------
// 函數(shù)名: ASLFileLoader::SetDirApp()
// 功  能: 設(shè)置文件目錄(相對于可執(zhí)行文件所在目錄). 所有文件均從此目錄打開文件
// 參  數(shù): [szDirName] - 文件目錄
// 返回值: [void] - 無
//-----------------------------------------------------------------------------
void ASLFileLoader::SetDirApp(LPCSTR szDirName)
{
	if (szDirName[0] != '\0')
	{
		strcpy(m_szDir, GetAbsPath(szDirName));
		strcat(m_szDir, "\\");
	}
	else
	{
		strcpy(m_szDir, GetAppPath());
	}
}

//-----------------------------------------------------------------------------
// 函數(shù)名: ASLFileLoader::Load()
// 功  能: 從Zip文件或指定路徑加載一個(gè)文件
// 參  數(shù): [szFileName] - 文件名
// 返回值: [ASLFile*] - 文件類對象指針
//         加載失敗拋出ASLEFailOpenFile異常
//-----------------------------------------------------------------------------
ASLFile* ASLFileLoader::Load(LPCSTR szFileName) throw(ASLFileException)
{
	char szPath[MAX_PATH];
	int  nSize;
	BYTE *pBuffer;

	if (m_szZip[0] != '\0')	// 從Zip文件中讀取
	{
		// 若文件名含有目錄結(jié)構(gòu), 則將'\\'替換成可識別的'/'
		strcpy(szPath, szFileName);
		for (int i = 0; i < (int)strlen(szPath); ++i)
		{
			if (szPath[i] == '\\')
			{
				szPath[i] = '/';
			}
		}
		
		// 打開壓縮包
		HZIP hZip = OpenZip(m_szZip, m_szPwd);
		if (hZip == 0)
		{
			throw ASLFileException(m_szZip, ASLFileException::OpenFailed);
		}

		// 在Zip包中查找指定文件
		ZIPENTRY ze;
		int index;
		FindZipItem(hZip, szPath, true, &index, &ze);
		if (index == -1)
		{
			throw ASLFileException(szFileName, ASLFileException::OpenFailed);
		}

		// 將文件內(nèi)容解壓至pBuffer
		nSize = ze.unc_size;
		pBuffer = new BYTE[nSize+1];
		UnzipItem((HZIP)hZip, index, pBuffer, nSize);
		pBuffer[nSize] = 0;

		// 關(guān)閉壓縮包
		CloseZip(hZip);

		// 創(chuàng)建并返回ASLFile對象
		return new ASLFile(szFileName, pBuffer, nSize);
	}
	else	// 從當(dāng)前路徑讀取
	{
		// 生成文件完整路徑
		strcpy(szPath, m_szDir);
		strcat(szPath, szFileName);

		// 若文件名含有目錄結(jié)構(gòu), 則將'/'替換成可識別的'\\'
		for (int i = 0; i < (int)strlen(szPath); ++i)
		{
			if (szPath[i] == '/')
			{
				szPath[i] = '\\';
			}
		}

		// 打開文件
		FILE *fp = fopen(szPath, "rb");
		if (fp == NULL)
		{
			throw ASLFileException(szFileName, ASLFileException::OpenFailed);
		}

		// 取文件大小并分配緩沖區(qū)
		fseek(fp, 0, SEEK_END);
		nSize = ftell(fp);
		pBuffer = new BYTE[nSize+1];
		pBuffer[nSize] = 0;

		// 把整個(gè)文件內(nèi)容讀入緩沖區(qū)
		fseek(fp, 0, SEEK_SET);
		fread(pBuffer, nSize, 1, fp);

		// 關(guān)閉文件
		fclose(fp);

		// 創(chuàng)建并返回ASLFile對象
		return new ASLFile(szFileName, pBuffer, nSize);
	}
}


} // namespace ASL

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产日韩欧美高清在线| 91在线高清观看| 2021久久国产精品不只是精品 | 亚洲国产成人在线| 国产乱淫av一区二区三区 | 韩国av一区二区三区| 日韩女优视频免费观看| 韩日精品视频一区| 久久综合成人精品亚洲另类欧美| 久久99精品久久久久| 久久久久久影视| 99九九99九九九视频精品| 一区二区三区在线观看视频| 欧美网站一区二区| 欧美a一区二区| 国产欧美日韩在线视频| 91亚洲国产成人精品一区二三| 亚洲一区二区三区四区在线| 欧美一区二区三区视频免费播放| 久久99精品久久久久久国产越南 | 亚洲成av人片| 日韩精品一区二区三区中文不卡| 国产成a人无v码亚洲福利| 亚洲乱码国产乱码精品精98午夜| 欧美日韩在线电影| 国产自产v一区二区三区c| 亚洲欧洲性图库| 7777精品伊人久久久大香线蕉| 国产在线精品不卡| 国产精品天天摸av网| 99精品久久只有精品| 一区二区三区四区亚洲| 欧美xxx久久| 99在线热播精品免费| 午夜久久久久久电影| 久久久久久久网| 色婷婷一区二区三区四区| 免费在线观看日韩欧美| 国产精品久久久久久久裸模| 在线电影欧美成精品| 成人爱爱电影网址| 日韩成人一级片| 日韩毛片高清在线播放| 精品成人私密视频| 欧美日韩你懂得| 粉嫩蜜臀av国产精品网站| 午夜免费欧美电影| 综合中文字幕亚洲| 久久伊99综合婷婷久久伊| 91成人免费在线| 国产99精品在线观看| 免费看欧美女人艹b| 亚洲人成影院在线观看| 久久久亚洲高清| 欧美日韩一区二区三区四区| 99久久精品免费看国产| 免费成人你懂的| 午夜国产精品一区| 亚洲欧美一区二区三区极速播放| 精品成人在线观看| 这里只有精品99re| 欧美亚男人的天堂| 99视频精品全部免费在线| 国产91综合一区在线观看| 久久se精品一区精品二区| 视频在线观看一区| 成人免费av网站| 日韩中文字幕区一区有砖一区| 国产精品高潮呻吟| 国产一区欧美一区| 亚洲一区二区欧美激情| 亚洲欧洲成人av每日更新| 国产色91在线| 国产三级精品三级| 久久久噜噜噜久久中文字幕色伊伊| 日韩一区二区三区免费观看| 在线一区二区三区四区| 99re热这里只有精品视频| 午夜私人影院久久久久| 一区二区三区.www| 国产精品欧美久久久久无广告| 日韩欧美一区二区免费| 色综合一个色综合亚洲| 91在线观看美女| eeuss鲁片一区二区三区在线看| 久久福利视频一区二区| 午夜电影一区二区| 一区二区三区四区国产精品| 亚洲乱码国产乱码精品精的特点| 一区免费观看视频| 精品国产人成亚洲区| 日韩精品一区二区三区在线观看 | 日欧美一区二区| 国产精品网站在线播放| 日韩精品中午字幕| 欧美精品123区| 欧美色综合影院| 在线观看av一区| 在线视频一区二区免费| 99久久婷婷国产| 91在线视频免费观看| 成人免费视频视频在线观看免费| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美精品v国产精品v日韩精品| 成人开心网精品视频| 99国产精品国产精品久久| 99久久婷婷国产综合精品电影| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 国产v日产∨综合v精品视频| 国产福利91精品一区| 免播放器亚洲一区| 成人亚洲一区二区一| 国产欧美精品一区aⅴ影院| 欧美aaaaa成人免费观看视频| 日本伊人色综合网| 激情综合网av| 粉嫩av亚洲一区二区图片| 成人黄色电影在线| 欧洲一区二区三区免费视频| 欧美一三区三区四区免费在线看 | 毛片av一区二区三区| 国产91精品露脸国语对白| 97精品视频在线观看自产线路二| 欧美亚洲国产一区在线观看网站 | av男人天堂一区| 91精品福利在线| 日韩天堂在线观看| 国产欧美一区二区精品婷婷| 一区二区三区中文字幕电影| 婷婷成人激情在线网| 国产精品影视在线观看| 91麻豆swag| 日韩欧美专区在线| 久久综合色婷婷| 亚洲国产成人精品视频| 国产在线精品免费| 在线观看视频一区二区| 欧美xxx久久| 成人免费在线观看入口| 蜜臀久久99精品久久久久宅男| 久久精品国产网站| 91亚洲男人天堂| 精品国产凹凸成av人导航| 亚洲视频在线观看三级| 精品一区二区国语对白| 在线观看亚洲一区| 久久久久久麻豆| 日韩中文字幕不卡| 91小视频免费看| 18成人在线观看| 精品系列免费在线观看| 成人网页在线观看| 精品国产一区a| 亚洲观看高清完整版在线观看 | 91超碰这里只有精品国产| 日韩美女久久久| 国产麻豆成人精品| 欧美福利视频一区| 最新久久zyz资源站| 黄一区二区三区| 91精品在线观看入口| 国产精品电影院| 国产91精品免费| 日韩欧美一区二区不卡| 亚洲成人免费在线观看| 99久久er热在这里只有精品66| 久久久久久久精| 日本亚洲一区二区| 91精品国产全国免费观看| 一区二区免费视频| 成人免费av资源| 久久久噜噜噜久久中文字幕色伊伊| 日日摸夜夜添夜夜添精品视频| 91福利社在线观看| 欧美国产一区在线| av电影在线观看不卡| 国产欧美日韩综合精品一区二区| 精品亚洲成av人在线观看| 欧美一级二级在线观看| 日韩精品亚洲专区| 欧美肥大bbwbbw高潮| 亚洲v日本v欧美v久久精品| 一本久久a久久免费精品不卡| 国产精品丝袜黑色高跟| 国产成人免费视| 久久久久国产成人精品亚洲午夜| 久久国产人妖系列| 久久亚洲精品国产精品紫薇| 久久丁香综合五月国产三级网站| 欧美一级二级在线观看| 久久国产精品99精品国产| 精品国偷自产国产一区| 久久成人免费网站| 久久久蜜臀国产一区二区| 精品一区二区免费视频| 日韩一区在线免费观看| 在线观看一区二区精品视频| 亚洲国产一区二区三区青草影视| 欧美另类高清zo欧美| 日本 国产 欧美色综合|