示例#1
0
int AIScriptManager :: LoadScripts(void)
{
	std::string FileName = Platform::JoinPath(Platform::JoinPath(g_Config.ResolveStaticDataPath(), "AIScript"), "script_list.txt");
	FileReader lfr;
	if(lfr.OpenText(FileName.c_str()) != Err_OK)
	{
		g_Logs.data->error("Error opening master script list [%v]", FileName);
		return -1;
	}

	AIScriptDef newItem;
	lfr.CommentStyle = Comment_Semi;
	string LoadName;
	while(lfr.FileOpen() == true)
	{
		int r = lfr.ReadLine();
		if(r > 0)
		{
			aiDef.push_back(newItem);
			aiDef.back().CompileFromSource(Platform::JoinPath(Platform::JoinPath(g_Config.ResolveStaticDataPath(), "AIScript"), lfr.DataBuffer));
		}
	}
	lfr.CloseCurrent();
	g_Logs.data->info("Loaded %v AI Scripts", aiDef.size());

	return 0;
}
示例#2
0
文件: IGForum.cpp 项目: kgrubb/iceee
void IGFManager :: LoadConfig(void)
{
	char buffer[256];
	Platform::GenerateFilePath(buffer, "IGForum", "IGFSession.txt");
	FileReader lfr;
	if(lfr.OpenText(buffer) != Err_OK)
	{
		g_Logs.data->error("IGFManager::LoadConfig failed to open file.");
		return;
	}
	lfr.CommentStyle = Comment_Semi;
	while(lfr.FileOpen() == true)
	{
		lfr.ReadLine();
		int r = lfr.BreakUntil("=", '=');
		if(r > 0)
		{
			lfr.BlockToStringC(0, 0);
			if(strcmp(lfr.SecBuffer, "NextCategoryID") == 0)
				mNextCategoryID = lfr.BlockToIntC(1);
			else if(strcmp(lfr.SecBuffer, "NextThreadID") == 0)
				mNextThreadID = lfr.BlockToIntC(1);
			else if(strcmp(lfr.SecBuffer, "NextPostID") == 0)
				mNextPostID = lfr.BlockToIntC(1);
			else if(strcmp(lfr.SecBuffer, "PlatformLaunchMinute") == 0)
				mPlatformLaunchMinute = lfr.BlockToULongC(1);
			else
				g_Logs.data->warn("IGFManager::LoadConfig unknown identifier [%v] in file [%v] on line [%v]", lfr.SecBuffer, buffer, lfr.LineNumber);
		}
	}
	lfr.CloseCurrent();
}
示例#3
0
void FriendListManager :: LoadNetworkData(void)
{
	if(networkDataFile.size() == 0)
	{
		g_Log.AddMessageFormat("Network Cache filename not set.");
		return;
	}
	FileReader lfr;
	if(lfr.OpenText(networkDataFile.c_str()) != Err_OK)
	{
		g_Log.AddMessageFormat("Error opening Network Cache file for reading: %s", networkDataFile.c_str());
		return;
	}

	lfr.CommentStyle = Comment_Semi;
	while(lfr.FileOpen() == true)
	{
		lfr.ReadLine();
		int r = lfr.MultiBreak("=,");
		if(r >= 2)
		{
			int sourceDefID = lfr.BlockToIntC(0);
			std::vector<int> &ref = networkData[sourceDefID];
			for(int i = 1; i < r; i++)
				ref.push_back(lfr.BlockToIntC(i));
		}
	}
	lfr.CloseCurrent();
}
示例#4
0
文件: IGForum.cpp 项目: kgrubb/iceee
void IGFThreadPage :: LoadFile(const char *filename)
{
	FileReader lfr;
	if(lfr.OpenText(filename) != Err_OK)
	{
		g_Logs.data->error("IGFThreadPage::LoadFile failed to open file.");
		return;
	}
	lfr.CommentStyle = Comment_Semi;
	IGFThread entry;

	while(lfr.FileOpen() == true)
	{
		lfr.ReadLine();
		int r = lfr.BreakUntil("=", '=');
		if(r > 0)
		{
			lfr.BlockToStringC(0, 0);
			if(strcmp(lfr.SecBuffer, "[ENTRY]") == 0)
			{
				if(entry.mID != 0)
					InsertEntry(entry, false);
				entry.Clear();
			}
			else if(strcmp(lfr.SecBuffer, "ID") == 0)
				entry.mID = lfr.BlockToIntC(1);
			else if(strcmp(lfr.SecBuffer, "Title") == 0)
				entry.mTitle = lfr.BlockToStringC(1, 0);
			else if(strcmp(lfr.SecBuffer, "CreationAccount") == 0)
				entry.mCreationAccount = lfr.BlockToIntC(1);
			else if(strcmp(lfr.SecBuffer, "CreationTime") == 0)
				entry.mCreationTime = lfr.BlockToStringC(1, 0);
			else if(strcmp(lfr.SecBuffer, "CreatorName") == 0)
				entry.mCreatorName = lfr.BlockToStringC(1, 0);
			else if(strcmp(lfr.SecBuffer, "ParentCategory") == 0)
				entry.mParentCategory = lfr.BlockToIntC(1);
			else if(strcmp(lfr.SecBuffer, "Locked") == 0)
				entry.mLocked = lfr.BlockToBoolC(1);
			else if(strcmp(lfr.SecBuffer, "Stickied") == 0)
				entry.mStickied = lfr.BlockToBoolC(1);
			else if(strcmp(lfr.SecBuffer, "Flags") == 0)
				entry.mFlags.setraw(lfr.BlockToIntC(1));
			else if(strcmp(lfr.SecBuffer, "LastUpdateTime") == 0)
				entry.mLastUpdateTime = lfr.BlockToULongC(1);
			else if(strcmp(lfr.SecBuffer, "PostList") == 0)
			{
				r = lfr.MultiBreak("=,");
				for(int i = 1; i < r; i++)
					entry.mPostList.push_back(lfr.BlockToIntC(i));
			}
			else
				g_Logs.data->warn("IGFThreadPage::LoadFile unknown identifier [%v] in file [%v] on line [%v]", lfr.SecBuffer, filename, lfr.LineNumber);
		}
	}
	if(entry.mID != 0)
		InsertEntry(entry, false);
	lfr.CloseCurrent();
}
示例#5
0
文件: Clan.cpp 项目: kgrubb/iceee
bool ClanManager::LoadClan(int id, Clan &clan) {
	std::string path = GetPath(id);
	if (!Platform::FileExists(path)) {
		g_Logs.data->info("No file for CS item [%v]", path.c_str());
		return NULL;
	}

	FileReader lfr;
	if (lfr.OpenText(path.c_str()) != Err_OK) {
		g_Logs.data->error("Could not open file [%v]", path.c_str());
		return false;
	}

	lfr.CommentStyle = Comment_Semi;
	int r = 0;
	long amt = -1;
	while (lfr.FileOpen() == true) {
		r = lfr.ReadLine();
		lfr.SingleBreak("=");
		lfr.BlockToStringC(0, Case_Upper);
		if (r > 0) {
			if (strcmp(lfr.SecBuffer, "[ENTRY]") == 0) {
				if (clan.mId != 0) {
					g_Logs.data->warn(
							"%v contains multiple entries. CS items have one entry per file",
							path.c_str());
					break;
				}
				clan.mId = id;
			} else if (strcmp(lfr.SecBuffer, "NAME") == 0)
				clan.mName = lfr.BlockToStringC(1, 0);
			else if (strcmp(lfr.SecBuffer, "MOTD") == 0)
				clan.mMOTD = lfr.BlockToStringC(1, 0);
			else if (strcmp(lfr.SecBuffer, "MEMBER") == 0) {
				std::vector<std::string> l;
				Util::Split(lfr.BlockToStringC(1, 0), ",", l);
				ClanMember mem;
				if (l.size() > 1) {
					mem.mID = atoi(l[0].c_str());
					mem.mRank = atoi(l[1].c_str());
					clan.mMembers.push_back(mem);
				} else {
					g_Logs.data->info(
							"Incomplete clan member information [%v] in file [%v]",
							lfr.SecBuffer, path.c_str());
				}
			} else
				g_Logs.data->info("Unknown identifier [%v] in file [%v]",
						lfr.SecBuffer, path.c_str());
		}
	}
	lfr.CloseCurrent();
	return true;
}
示例#6
0
文件: Item.cpp 项目: kgrubb/iceee
void ItemManager :: LoadItemList(char *filename, bool itemOverride)
{
	TimeObject to("ItemManager::LoadItemList");

	FileReader lfr;
	if(lfr.OpenText(filename) != Err_OK)
	{
		g_Logs.data->error("Could not open file [%v].", filename);
		return;
	}

	//Set the prebuilt overrides.  Should be helpful since there could potentially
	//be thousands of items in the list, and it will save from having convert these values
	//for each item that applies.
	sprintf(BindingTypeOverride, "%d", g_ItemBindingTypeOverride);
	sprintf(ArmorTypeOverride, "%d", g_ItemArmorTypeOverride);
	sprintf(WeaponTypeOverride, "%d", g_ItemWeaponTypeOverride);

	char Delimiters[] = {'=', 13, 10, 0 };
	lfr.Delimiter = Delimiters;
	lfr.CommentStyle = Comment_Semi;

	ItemDef newItem;

	int count = 0;
	while(lfr.FileOpen())
	{
		newItem.Reset();
		LoadItemFromStream(lfr, &newItem, filename);
		newItem.ProcessParams();
		if(itemOverride == true)
		{
			ItemDef *ptr = GetPointerByID(newItem.mID);
			if(ptr != NULL)
				ptr->CopyFrom(&newItem);
			else
				g_Logs.data->warn("Item override specified for ID:%v was not found [%v]", newItem.mID, filename);
		}
		else
		{
			ItemDef *ptr = &ItemList[newItem.mID];
			if(ptr->mID == 0)
				ptr->CopyFrom(&newItem);
			else
				g_Logs.data->warn("Not allowed to override item %v [%v] in file [%v]", ptr->mID, ptr->mDisplayName.c_str(), filename);
				//TODO: Obsolete
			//ItemList.push_back(newItem);
		}
		count++;
	}
	lfr.CloseCurrent();
}
示例#7
0
文件: IGForum.cpp 项目: kgrubb/iceee
void IGFPostPage :: LoadFile(const char *filename)
{
	FileReader lfr;
	if(lfr.OpenText(filename) != Err_OK)
	{
		g_Logs.data->error("IGFPostPage::LoadFile failed to open: %v", filename);
		return;
	}
	//lfr.CommentStyle = Comment_Semi;  //No comments since they're valid characters for posts.
	IGFPost entry;

	while(lfr.FileOpen() == true)
	{
		lfr.ReadLine();
		int r = lfr.BreakUntil("=", '=');
		if(r > 0)
		{
			lfr.BlockToStringC(0, 0);
			if(strcmp(lfr.SecBuffer, "[ENTRY]") == 0)
			{
				if(entry.mID != 0)
					InsertEntry(entry, false);
				entry.Clear();
			}
			else if(strcmp(lfr.SecBuffer, "ID") == 0)
				entry.mID = lfr.BlockToIntC(1);
			else if(strcmp(lfr.SecBuffer, "CreationAccount") == 0)
				entry.mCreationAccount = lfr.BlockToIntC(1);
			else if(strcmp(lfr.SecBuffer, "CreationTime") == 0)
				entry.mCreationTime = lfr.BlockToStringC(1, 0);
			else if(strcmp(lfr.SecBuffer, "CreatorName") == 0)
				entry.mCreatorName = lfr.BlockToStringC(1, 0);
			else if(strcmp(lfr.SecBuffer, "ParentThread") == 0)
				entry.mParentThread = lfr.BlockToIntC(1);
			else if(strcmp(lfr.SecBuffer, "PostedTime") == 0)
				entry.mPostedTime = lfr.BlockToULongC(1);
			else if(strcmp(lfr.SecBuffer, "LastUpdateTime") == 0)
				entry.mLastUpdateTime = lfr.BlockToULongC(1);
			else if(strcmp(lfr.SecBuffer, "EditCount") == 0)
				entry.mEditCount = lfr.BlockToULongC(1);
			else if(strcmp(lfr.SecBuffer, "BodyText") == 0)
				entry.mBodyText = lfr.BlockToStringC(1, 0);
			else
				g_Logs.data->warn("IGFPostPage::LoadFile unknown identifier [%v] in file [%v] on line [%v]", lfr.SecBuffer, filename, lfr.LineNumber);
		}
	}
	if(entry.mID != 0)
		InsertEntry(entry, false);
	lfr.CloseCurrent();
}
示例#8
0
int LoadStringsFile(std::string filename, vector<string> &list) {
	FileReader lfr;
	if (lfr.OpenText(filename.c_str()) != Err_OK) {
		g_Logs.data->error("Error opening file: %v", filename);
		return -1;
	}

	lfr.CommentStyle = Comment_Semi;
	while (lfr.FileOpen() == true) {
		int r = lfr.ReadLine();
		if (r > 0) {
			list.push_back(lfr.DataBuffer);
		}
	}
	lfr.CloseCurrent();
	return list.size();
}
示例#9
0
void FriendListManager :: LoadSocialData(void)
{
	if(socialDataFile.size() == 0)
	{
		g_Log.AddMessageFormat("Social Cache filename not set.");
		return;
	}
	FileReader lfr;
	if(lfr.OpenText(socialDataFile.c_str()) != Err_OK)
	{
		g_Log.AddMessageFormat("Error opening Social Cache file for reading: %s", socialDataFile.c_str());
		return;
	}
	lfr.CommentStyle = Comment_Semi;
	SocialWindowEntry newItem;
	while(lfr.FileOpen() == true)
	{
		lfr.ReadLine();
		int r = lfr.BreakUntil(",|", '|');
		if(r >= 6)
		{
			newItem.creatureDefID = lfr.BlockToIntC(0);
			newItem.name = lfr.BlockToStringC(1, 0);
			newItem.level = lfr.BlockToIntC(2);
			newItem.profession = lfr.BlockToIntC(3);
			newItem.online = lfr.BlockToBoolC(4);
			newItem.shard = lfr.BlockToStringC(5, 0);

			//HACK: since the friend list is only loaded when the server is launched,
			//it's safe to assume that everyone is offline.  This should auto fix any
			//players that are stuck offline.  If I had been thinking when I designed
			//this, the online flag wouldn't be saved at all.
			//TODO: remove onine status from save files
			newItem.online = false;

			//Get the status last in case it contains any unusual characters.
			if(r >= 7)
				newItem.status = lfr.BlockToStringC(6, 0);
			else
				newItem.status.clear();
			UpdateSocialEntry(newItem);
		}
	}
	lfr.CloseCurrent();
}
示例#10
0
int LoadStringKeyValFile(std::string filename, vector<StringKeyVal> &list) {
	FileReader lfr;
	if (lfr.OpenText(filename.c_str()) != Err_OK) {
		g_Logs.data->error("Error opening file: %v", filename);
		return -1;
	}

	lfr.CommentStyle = Comment_Semi;
	StringKeyVal newItem;
	while (lfr.FileOpen() == true) {
		int r = lfr.ReadLine();
		lfr.SingleBreak("=");
		if (r > 0) {
			newItem.key = lfr.BlockToStringC(0, 0);
			newItem.value = lfr.BlockToStringC(1, 0);
			list.push_back(newItem);
		}
	}
	lfr.CloseCurrent();
	return list.size();
}
示例#11
0
文件: Item.cpp 项目: kgrubb/iceee
void ItemManager :: LoadItemPackages(char *listFile, bool itemOverride)
{
	FileReader lfr;
	if(lfr.OpenText(listFile) != Err_OK)
	{
		g_Logs.data->error("Could not open Item list file [%v]", listFile);
		Finalize();
		return;
	}
	lfr.CommentStyle = Comment_Semi;
	while(lfr.FileOpen() == true)
	{
		int r = lfr.ReadLine();
		if(r > 0)
		{
			Platform::FixPaths(lfr.DataBuffer);
			LoadItemList(lfr.DataBuffer, itemOverride);
		}
	}
	lfr.CloseCurrent();

	//Run any post-processing, like sorting.
	Finalize();
}
示例#12
0
bool LoadConfig(std::string filename) {
	bool oauthSet = false;

	//Loads the configuration options from the target file.  These are core options
	//required for the server to operate.

	FileReader lfr;
	if (lfr.OpenText(filename.c_str()) != Err_OK) {
		return false;
	}
	static char Delimiter[] = { '=', 13, 10 };
	lfr.Delimiter = Delimiter;
	lfr.CommentStyle = Comment_Semi;

	while (lfr.FileOpen() == true) {
		int r = lfr.ReadLine();
		if (r > 0) {
			lfr.SingleBreak("=");
			char *NameBlock = lfr.BlockToString(0);
			if (strcmp(NameBlock, "ProtocolVersion") == 0) {
				g_ProtocolVersion = lfr.BlockToInt(1);
			} else if (strcmp(NameBlock, "AuthMode") == 0) {
				g_AuthMode = lfr.BlockToInt(1);
			} else if (strcmp(NameBlock, "AuthKey") == 0) {
				strncpy(g_AuthKey, lfr.BlockToString(1), sizeof(g_AuthKey) - 1);
			} else if (strcmp(NameBlock, "RouterPort") == 0) {
				g_RouterPort = lfr.BlockToInt(1);
			} else if (strcmp(NameBlock, "SimulatorAddress") == 0) {
				strncpy(g_SimulatorAddress, lfr.BlockToString(1),
						sizeof(g_SimulatorAddress) - 1);
			} else if (strcmp(NameBlock, "BindAddress") == 0) {
				strncpy(g_BindAddress, lfr.BlockToString(1),
						sizeof(g_BindAddress) - 1);
			} else if (strcmp(NameBlock, "SimulatorPort") == 0) {
				g_SimulatorPort = lfr.BlockToInt(1);
			} else if (strcmp(NameBlock, "ThreadSleep") == 0) {
				g_ThreadSleep = lfr.BlockToInt(1);
			} else if (strcmp(NameBlock, "ErrorSleep") == 0) {
				g_ErrorSleep = lfr.BlockToInt(1);
			} else if (strcmp(NameBlock, "MainSleep") == 0) {
				g_MainSleep = lfr.BlockToInt(1);
			} else if (strcmp(NameBlock, "DefX") == 0) {
				g_Config.DefX = lfr.BlockToInt(1);
			} else if (strcmp(NameBlock, "DefY") == 0) {
				g_Config.DefY = lfr.BlockToInt(1);
			} else if (strcmp(NameBlock, "DefZ") == 0) {
				g_Config.DefZ = lfr.BlockToInt(1);
			} else if (strcmp(NameBlock, "DefZone") == 0) {
				g_Config.DefZone = lfr.BlockToInt(1);
			} else if (strcmp(NameBlock, "DefRotation") == 0) {
				g_Config.DefRotation = lfr.BlockToInt(1);
			} else if (strcmp(NameBlock, "HTTPBaseFolder") == 0) {
				g_Config.HTTPBaseFolder = lfr.BlockToString(1);
			} else if (strcmp(NameBlock, "HTTPCARFolder") == 0) {
				g_Config.HTTPCARFolder = lfr.BlockToString(1);
			} else if (strcmp(NameBlock, "HTTPListenPort") == 0) {
				g_HTTPListenPort = lfr.BlockToInt(1);
			}
#ifndef NO_SSL
			else if(strcmp(NameBlock, "HTTPSListenPort") == 0)
			{
				g_HTTPSListenPort = lfr.BlockToInt(1);
			}
			else if(strcmp(NameBlock, "SSLCertificate") == 0)
			{
				AppendString(g_SSLCertificate, lfr.BlockToStringC(1, 0));
			}
#endif
			else if (strcmp(NameBlock, "RebroadcastDelay") == 0) {
				g_RebroadcastDelay = lfr.BlockToULongC(1);
			} else if (strcmp(NameBlock, "SceneryAutosaveTime") == 0) {
				g_SceneryAutosaveTime = lfr.BlockToULongC(1);
			} else if (strcmp(NameBlock, "ForceUpdateTime") == 0) {
				g_ForceUpdateTime = lfr.BlockToInt(1);
			} else if (strcmp(NameBlock, "ItemBindingTypeOverride") == 0) {
				g_ItemBindingTypeOverride = lfr.BlockToInt(1);
			} else if (strcmp(NameBlock, "ItemArmorTypeOverride") == 0) {
				g_ItemArmorTypeOverride = lfr.BlockToInt(1);
			} else if (strcmp(NameBlock, "ItemWeaponTypeOverride") == 0) {
				g_ItemWeaponTypeOverride = lfr.BlockToInt(1);
			} else if (strcmp(NameBlock, "MOTD_Name") == 0) {
				g_MOTD_Name = lfr.BlockToStringC(1, 0);
			} else if (strcmp(NameBlock, "MOTD_Channel") == 0) {
				g_MOTD_Channel = lfr.BlockToStringC(1, 0);
			} else if (strcmp(NameBlock, "RemoteAuthenticationPassword") == 0) {
				g_Config.RemoteAuthenticationPassword = lfr.BlockToStringC(1,
						0);
			} else if (strcmp(NameBlock, "ProperSceneryList") == 0) {
				g_Config.ProperSceneryList = lfr.BlockToIntC(1);
			} else if (strcmp(NameBlock, "BuybackLimit") == 0) {
				g_Config.BuybackLimit = lfr.BlockToIntC(1);
			} else if (strcmp(NameBlock, "Upgrade") == 0)
				g_Config.Upgrade = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "HeartbeatIntervalMS") == 0)
				g_Config.HeartbeatIntervalMS = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "HeartbeatAbortCount") == 0)
				g_Config.HeartbeatAbortCount = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "WarpMovementBlockTime") == 0)
				g_Config.WarpMovementBlockTime = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "IdleCheckVerification") == 0)
				g_Config.IdleCheckVerification = lfr.BlockToBoolC(1);
			else if (strcmp(NameBlock, "IdleCheckFrequency") == 0)
				g_Config.IdleCheckFrequency = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "IdleCheckDistance") == 0)
				g_Config.IdleCheckDistance = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "IdleCheckCast") == 0)
				g_Config.IdleCheckCast = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "IdleCheckCastInterval") == 0)
				g_Config.IdleCheckCastInterval = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "IdleCheckDistanceTolerance") == 0)
				g_Config.IdleCheckDistanceTolerance = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "EnvironmentCycle") == 0)
				g_Config.EnvironmentCycle = lfr.BlockToString(1);
			else if (strcmp(NameBlock, "SendLobbyHeartbeat") == 0)
				g_Config.SendLobbyHeartbeat = lfr.BlockToBoolC(1);
			else if (strcmp(NameBlock, "CapExperienceLevel") == 0)
				g_Config.CapExperienceLevel = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "CapExperienceAmount") == 0)
				g_Config.CapExperienceAmount = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "CustomAbilityMechanics") == 0)
				g_Config.CustomAbilityMechanics = lfr.BlockToBoolC(1);
			else if (strcmp(NameBlock, "DebugPingServer") == 0)
				g_Config.DebugPingServer = lfr.BlockToBoolC(1);
			else if (strcmp(NameBlock, "DebugPingClient") == 0)
				g_Config.DebugPingClient = lfr.BlockToBoolC(1);
			else if (strcmp(NameBlock, "DebugPingFrequency") == 0)
				g_Config.DebugPingFrequency = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "DebugPingClientPollInterval") == 0)
				g_Config.DebugPingClientPollInterval = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "DebugPingServerLogThreshold") == 0)
				g_Config.DebugPingServerLogThreshold = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "HTTPDeleteConnectedTime") == 0)
				g_Config.HTTPDeleteConnectedTime = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "HTTPDeleteDisconnectedTime") == 0)
				g_Config.HTTPDeleteDisconnectedTime = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "HTTPDeleteRecheckDelay") == 0)
				g_Config.HTTPDeleteRecheckDelay = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "PartyPositionSendInterval") == 0)
				g_Config.PartyPositionSendInterval = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "VaultDefaultSize") == 0)
				g_Config.VaultDefaultSize = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "VaultInitialPurchaseSize") == 0)
				g_Config.VaultInitialPurchaseSize = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "DebugPacketSendTrigger") == 0)
				g_Config.DebugPacketSendTrigger = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "DebugPacketSendDelay") == 0)
				g_Config.DebugPacketSendDelay = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "DebugPacketSendMessage") == 0)
				g_Config.DebugPacketSendMessage = lfr.BlockToBoolC(1);
			else if (strcmp(NameBlock, "GlobalMovementBonus") == 0)
				g_Config.GlobalMovementBonus = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "AllowEliteMob") == 0)
				g_Config.AllowEliteMob = lfr.BlockToBoolC(1);
			else if (strcmp(NameBlock, "DexBlockDivisor") == 0)
				g_Config.DexBlockDivisor = lfr.BlockToFloatC(1);
			else if (strcmp(NameBlock, "DexParryDivisor") == 0)
				g_Config.DexParryDivisor = lfr.BlockToFloatC(1);
			else if (strcmp(NameBlock, "DexDodgeDivisor") == 0)
				g_Config.DexDodgeDivisor = lfr.BlockToFloatC(1);
			else if (strcmp(NameBlock, "SpiResistDivisor") == 0)
				g_Config.SpiResistDivisor = lfr.BlockToFloatC(1);
			else if (strcmp(NameBlock, "PsyResistDivisor") == 0)
				g_Config.PsyResistDivisor = lfr.BlockToFloatC(1);
			else if (strcmp(NameBlock, "ForceMaxPacketSize") == 0)
				g_Config.ForceMaxPacketSize = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "SceneryAuditDelay") == 0)
				g_Config.SceneryAuditDelay = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "SceneryAuditAllow") == 0)
				g_Config.SceneryAuditAllow = lfr.BlockToBoolC(1);
			else if (strcmp(NameBlock, "MegaLootParty") == 0)
				g_Config.MegaLootParty = lfr.BlockToBoolC(1);
			else if (strcmp(NameBlock, "LootMaxRandomizedLevel") == 0)
				g_Config.LootMaxRandomizedLevel = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "LootMaxRandomizedSpecialLevel") == 0)
				g_Config.LootMaxRandomizedSpecialLevel = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "LootNamedMobSpecial") == 0)
				g_Config.LootNamedMobSpecial = lfr.BlockToBoolC(1);
			else if (strcmp(NameBlock, "LootMinimumMobRaritySpecial") == 0)
				g_Config.LootMinimumMobRaritySpecial = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "HeroismQuestLevelTolerance") == 0)
				g_Config.HeroismQuestLevelTolerance = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "HeroismQuestLevelPenalty") == 0)
				g_Config.HeroismQuestLevelPenalty = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "NamedMobDropMultiplier") == 0)
				g_Config.NamedMobDropMultiplier =
						static_cast<float>(lfr.BlockToDblC(1));
			else if (strcmp(NameBlock, "NamedMobCreditDrops") == 0)
				g_Config.NamedMobCreditDrops = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "ProgressiveDropRateBonusMult") == 0)
				Util::AssignFloatArrayFromStringSplit(
						g_Config.ProgressiveDropRateBonusMult,
						COUNT_ARRAY_ELEMENTS(
								g_Config.ProgressiveDropRateBonusMult),
						lfr.BlockToStringC(1, 0));
			else if (strcmp(NameBlock, "ProgressiveDropRateBonusMultMax") == 0)
				g_Config.ProgressiveDropRateBonusMultMax = lfr.BlockToFloatC(1);
			else if (strcmp(NameBlock, "DropRateBonusMultMax") == 0)
				g_Config.DropRateBonusMultMax = lfr.BlockToFloatC(1);
			else if (strcmp(NameBlock, "UseIntegerHealth") == 0) {
				g_Config.UseIntegerHealth = lfr.BlockToBool(1);
				StatManager::SetHealthToInteger(g_Config.UseIntegerHealth);
			} else if (strcmp(NameBlock, "UseMessageBox") == 0)
				g_Config.UseMessageBox = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "UseStopSwim") == 0)
				g_Config.UseStopSwim = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "UseWeather") == 0)
				g_Config.UseWeather = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "UseReagents") == 0)
				g_Config.UseReagents = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "UseUserAgentProtection") == 0)
				g_Config.UseUserAgentProtection = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "InvalidLoginMessage") == 0)
				g_Config.InvalidLoginMessage = lfr.BlockToStringC(1, 0);
			else if(strcmp(NameBlock, "MaintenanceMessage") == 0)
				g_Config.MaintenanceMessage = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "GitHubToken") == 0)
				g_Config.GitHubToken = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "ServiceAuthURL") == 0)
				g_Config.ServiceAuthURL = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "VerifyMovement") == 0)
				g_Config.VerifyMovement = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "DebugLogAIScriptUse") == 0)
				g_Config.DebugLogAIScriptUse = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "SquirrelGCCallCount") == 0)
				g_Config.SquirrelGCCallCount = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "SquirrelGCDelay") == 0)
				g_Config.SquirrelGCDelay = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "SquirrelGCMaxDelay") == 0)
				g_Config.SquirrelGCMaxDelay = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "SquirrelVMStackSize") == 0)
				g_Config.SquirrelVMStackSize = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "SquirrelQueueSpeed") == 0)
				g_Config.SquirrelQueueSpeed = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "PersistentBuffs") == 0)
				g_Config.PersistentBuffs = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "FallDamage") == 0)
				g_Config.FallDamage = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "PartyLoot") == 0)
				g_Config.PartyLoot = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "AccountCredits") == 0)
				g_Config.AccountCredits = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "MinPVPPlayerLootItems") == 0)
				g_Config.MinPVPPlayerLootItems = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "MaxPVPPlayerLootItems") == 0)
				g_Config.MaxPVPPlayerLootItems = lfr.BlockToIntC(1);
			else if (strcmp(NameBlock, "NameChangeCost") == 0)
				g_Config.NameChangeCost = lfr.BlockToInt(1);
			else if (strcmp(NameBlock, "SSLVerifyPeer") == 0)
				g_Config.SSLVerifyPeer = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "SSLVerifyHostname") == 0)
				g_Config.SSLVerifyHostname = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "SMTPHost") == 0)
				g_Config.SMTPHost = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "SMTPUsername") == 0)
				g_Config.SMTPUsername = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "SMTPPassword") == 0)
				g_Config.SMTPPassword = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "SMTPPort") == 0)
				g_Config.SMTPPort = lfr.BlockToInt(1);
			else if (strcmp(NameBlock, "SMTPSSL") == 0)
				g_Config.SMTPSSL = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "SMTPSender") == 0)
				g_Config.SMTPSender = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "LegacyAccounts") == 0)
				g_Config.LegacyAccounts = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "PublicAPI") == 0)
				g_Config.PublicAPI = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "DirectoryListing") == 0)
				g_Config.DirectoryListing = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "HTTPKeepAlive") == 0)
				g_Config.HTTPKeepAlive = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "HTTPServeAssets") == 0)
				g_Config.HTTPServeAssets = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "LegacyServer") == 0)
				g_Config.LegacyServer = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "SiteServiceUsername") == 0)
				g_Config.SiteServiceUsername = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "SiteServicePassword") == 0)
				g_Config.SiteServicePassword = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "APIAuthentication") == 0)
				g_Config.APIAuthentication = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "OAuth2Client") == 0) {
				if(!oauthSet) {
					oauthSet = true;
					g_Config.OAuth2Clients.clear();
				}
				STRINGLIST output;
				Util::Split(lfr.BlockToString(1), "|", output);
				if (output.size() == 3) {
					OAuth2Client *c = new OAuth2Client();
					c->ClientId = output[0];
					c->ClientSecret = output[1];
					c->RedirectURL = output[2];
					g_Config.OAuth2Clients.push_back(c);
				} else {
					g_Logs.data->error("Invalid OAuth2Client string [%v] in config file [%v]",
							lfr.BlockToString(0), filename);
				}
			} else if (strcmp(NameBlock, "Clans") == 0)
				g_Config.Clans = lfr.BlockToBool(1);
			else if (strcmp(NameBlock, "ClanCost") == 0)
				g_Config.ClanCost = lfr.BlockToInt(1);
			else if (strcmp(NameBlock, "MaxAuctionHours") == 0)
				g_Config.MaxAuctionHours = lfr.BlockToInt(1);
			else if (strcmp(NameBlock, "MinAuctionHours") == 0)
				g_Config.MinAuctionHours = lfr.BlockToInt(1);
			else if (strcmp(NameBlock, "MinAuctionHours") == 0)
				g_Config.PercentageCommisionPerHour = lfr.BlockToFloatC(1);
			else if (strcmp(NameBlock, "MaxAuctionExpiredHours") == 0)
				g_Config.MaxAuctionExpiredHours = lfr.BlockToInt(1);
			else if (strcmp(NameBlock, "ShutdownHandlerScript") == 0)
				g_Config.ShutdownHandlerScript = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "MaxNewCreditShopItemDays") == 0)
				g_Config.MaxNewCreditShopItemDays = lfr.BlockToFloatC(1);
			else if (strcmp(NameBlock, "StaticDataPath") == 0)
				g_Config.StaticDataPath = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "VariableDataPath") == 0)
				g_Config.VariableDataPath = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "TmpDataPath") == 0)
				g_Config.TmpDataPath = lfr.BlockToStringC(1, 0);
			else if (strcmp(NameBlock, "LogPath") == 0)
				g_Config.LogPath = lfr.BlockToStringC(1, 0);
			else {
				g_Logs.data->error("Unknown identifier [%v] in config file [%v]",
						lfr.BlockToString(0), filename);
			}
		}
	}
	lfr.CloseCurrent();
	return true;
}
示例#13
0
CreditShopItem * CreditShopManager::LoadItem(int id) {
	std::string buf = GetPath(id);
	if (!Platform::FileExists(buf.c_str())) {
		g_Logs.data->error("No file for CS item [%v]", buf.c_str());
		return NULL;
	}

	CreditShopItem *item = new CreditShopItem();

	FileReader lfr;
	if (lfr.OpenText(buf.c_str()) != Err_OK) {
		g_Logs.data->error("Could not open file [%v]", buf.c_str());
		return NULL;
	}

//		unsigned long mStartDate;
//		unsigned long mEndDate;

	lfr.CommentStyle = Comment_Semi;
	int r = 0;
	long amt = -1;
	while (lfr.FileOpen() == true) {
		r = lfr.ReadLine();
		lfr.SingleBreak("=");
		lfr.BlockToStringC(0, Case_Upper);
		if (r > 0) {
			if (strcmp(lfr.SecBuffer, "[ENTRY]") == 0) {
				if (item->mId != 0) {
					g_Logs.data->warn(
							"%v contains multiple entries. CS items have one entry per file",
							buf.c_str());
					break;
				}
				item->mId = id;
			} else if (strcmp(lfr.SecBuffer, "TITLE") == 0)
				item->mTitle = lfr.BlockToStringC(1, 0);
			else if (strcmp(lfr.SecBuffer, "DESCRIPTION") == 0)
				item->mDescription = lfr.BlockToStringC(1, 0);
			else if (strcmp(lfr.SecBuffer, "BEGINDATE") == 0)
				Util::ParseDate(lfr.BlockToStringC(1, 0), item->mStartDate);
			else if (strcmp(lfr.SecBuffer, "ENDDATE") == 0)
				Util::ParseDate(lfr.BlockToStringC(1, 0), item->mEndDate);
			else if (strcmp(lfr.SecBuffer, "CREATEDDATE") == 0)
				Util::ParseDate(lfr.BlockToStringC(1, 0), item->mCreatedDate);
			else if (strcmp(lfr.SecBuffer, "PRICECURRENCY") == 0)
				item->mPriceCurrency = Currency::GetIDByName(
						lfr.BlockToStringC(1, 0));
			else if (strcmp(lfr.SecBuffer, "PRICEAMOUNT") == 0)
				amt = lfr.BlockToIntC(1);
			else if (strcmp(lfr.SecBuffer, "PRICECOPPER") == 0)
				item->mPriceCopper = lfr.BlockToIntC(1);
			else if (strcmp(lfr.SecBuffer, "PRICECREDITS") == 0)
				item->mPriceCredits = lfr.BlockToIntC(1);
			else if (strcmp(lfr.SecBuffer, "ITEMID") == 0)
				item->mItemId = lfr.BlockToIntC(1);
			else if (strcmp(lfr.SecBuffer, "ITEMAMOUNT") == 0
					|| strcmp(lfr.SecBuffer, "IV1") == 0)
				item->mIv1 = lfr.BlockToIntC(1);
			else if (strcmp(lfr.SecBuffer, "IV2") == 0)
				item->mIv2 = lfr.BlockToIntC(1);
			else if (strcmp(lfr.SecBuffer, "LOOKID") == 0)
				item->mLookId = lfr.BlockToIntC(1);
			else if (strcmp(lfr.SecBuffer, "CATEGORY") == 0)
				item->mCategory = Category::GetIDByName(
						lfr.BlockToStringC(1, 0));
			else if (strcmp(lfr.SecBuffer, "STATUS") == 0)
				item->mStatus = Status::GetIDByName(lfr.BlockToStringC(1, 0));
			else if (strcmp(lfr.SecBuffer, "QUANTITYLIMIT") == 0)
				item->mQuantityLimit = lfr.BlockToIntC(1);
			else if (strcmp(lfr.SecBuffer, "QUANTITYSOLD") == 0)
				item->mQuantitySold = lfr.BlockToIntC(1);
			else
				g_Logs.data->error("Unknown identifier [%v] in file [%v]",
						lfr.SecBuffer, buf.c_str());
		}
	}
	lfr.CloseCurrent();

// For backwards compatibility - will be able to remove once all items resaved or removed
	if (amt > 0) {
		if (item->mPriceCurrency == Currency::COPPER)
			item->mPriceCopper = amt;
		else if (item->mPriceCurrency == Currency::CREDITS)
			item->mPriceCredits = amt;
	}

	cs.Enter("CreditShopManager::LoadItem");
	mItems[id] = item;
	cs.Leave();

	return item;
}
示例#14
0
文件: Item.cpp 项目: kgrubb/iceee
int LoadItemFromStream(FileReader &fr, ItemDef *itemDef, char *debugFilename)
{
	//Return codes:
	//   1  Section end marker reached.
	//   0  End of file reached.
	//  -1  Another entry was encountered

	bool curEntry = false;
	int r;
	while(fr.FileOpen())
	{
		long CurPos = ftell(fr.FileHandle[0]);
		r = fr.ReadLine();
		if(r > 0)
			r = fr.SingleBreak(NULL);
		if(r > 0)
		{
			fr.BlockToStringC(0, Case_Upper);
			if(strcmp(fr.SecBuffer, "[ENTRY]") == 0)
			{
				if(curEntry == true)
				{
					//Reset the position so it doesn't interfere with reading the next
					//entry
					fr.FilePos = CurPos;
					fseek(fr.FileHandle[0], CurPos, SEEK_SET);
					return -1;
				}
				else
					curEntry = true;
			}
			else if(strcmp(fr.SecBuffer, "[END]") == 0)
			{
				return 1;
			}
			else
			{
				char *ValueBuf = fr.BlockToString(1);
				char *NameBuf = fr.BlockToString(0);
				if(strcmp(NameBuf, "mBindingType") == 0)
				{
					if(g_ItemBindingTypeOverride > 0)
					{
						if(ValueBuf[0] == '0' + g_ItemBindingTypeOverride)
							ValueBuf[0] = 0;
					}
					else if(g_ItemBindingTypeOverride == 0)
						ValueBuf = BindingTypeOverride;
				}
				else if(strcmp(NameBuf, "mArmorType") == 0)
				{
					if(g_ItemArmorTypeOverride >= 0)
						ValueBuf = ArmorTypeOverride;
				}
				else if(strcmp(NameBuf, "mWeaponType") == 0)
				{
					if(g_ItemWeaponTypeOverride >= 0)
						ValueBuf = WeaponTypeOverride;
				}
				/*
				if(strcmp(NameBuf, "craftItemDefId") == 0)
				{
					itemDef->craftItemDefId.push_back(fr.BlockToInt(1));
				}*/
				//int r = SetItemProperty(itemDef, fr.BlockToString(0), fr.BlockToString(1));
				int r = SetItemProperty(itemDef, NameBuf, ValueBuf);
				if(r == -1)
					g_Logs.data->warn("Unknown property [%v] in item file [%v] on line [%v]", fr.BlockToString(0), debugFilename, fr.LineNumber);
			}
		}
	}
	fr.CloseCurrent();

	return 1;
}
示例#15
0
CreditShopItem * CreditShopManager::LoadItem(int id) {
	const char * buf = GetPath(id).c_str();
	if (!Platform::FileExists(buf)) {
		g_Log.AddMessageFormat("No file for CS item [%s]", buf);
		return NULL;
	}

	CreditShopItem *item = new CreditShopItem();
	item->mId = id;

	FileReader lfr;
	if (lfr.OpenText(buf) != Err_OK) {
		g_Log.AddMessageFormat("Could not open file [%s]", buf);
		return NULL;
	}

//		unsigned long mStartDate;
//		unsigned long mEndDate;

	lfr.CommentStyle = Comment_Semi;
	int r = 0;
	while (lfr.FileOpen() == true) {
		r = lfr.ReadLine();
		lfr.SingleBreak("=");
		lfr.BlockToStringC(0, Case_Upper);
		if (r > 0) {
			if (strcmp(lfr.SecBuffer, "[ENTRY]") == 0) {
				if (item->mId != 0)
					g_Log.AddMessageFormat(
							"[WARNING] %s contains multiple entries. CS items have one entry per file",
							buf);
			}
			else if (strcmp(lfr.SecBuffer, "TITLE") == 0)
				item->mTitle = lfr.BlockToStringC(1, 0);
			else if (strcmp(lfr.SecBuffer, "DESCRIPTION") == 0)
				item->mDescription = lfr.BlockToStringC(1, 0);
			else if (strcmp(lfr.SecBuffer, "BEGINDATE") == 0)
				Util::ParseDate(lfr.BlockToStringC(1, 0), item->mStartDate);
			else if (strcmp(lfr.SecBuffer, "ENDDATE") == 0)
				Util::ParseDate(lfr.BlockToStringC(1, 0), item->mEndDate);
			else if (strcmp(lfr.SecBuffer, "PRICECURRENCY") == 0)
				item->mPriceCurrency =Currency::GetIDByName(lfr.BlockToStringC(1, 0));
			else if (strcmp(lfr.SecBuffer, "PRICEAMOUNT") == 0)
				item->mPriceAmount = lfr.BlockToIntC(1);
			else if (strcmp(lfr.SecBuffer, "ITEMID") == 0)
				item->mItemId = lfr.BlockToIntC(1);
			else if (strcmp(lfr.SecBuffer, "ITEMAMOUNT") == 0 || strcmp(lfr.SecBuffer, "IV1") == 0)
				item->mIv1 = lfr.BlockToIntC(1);
			else if (strcmp(lfr.SecBuffer, "IV2") == 0)
				item->mIv2 = lfr.BlockToIntC(1);
			else if (strcmp(lfr.SecBuffer, "LOOKID") == 0)
				item->mLookId = lfr.BlockToIntC(1);
			else if (strcmp(lfr.SecBuffer, "CATEGORY") == 0)
				item->mCategory =Category::GetIDByName(lfr.BlockToStringC(1, 0));
			else if (strcmp(lfr.SecBuffer, "STATUS") == 0)
				item->mStatus = Status::GetIDByName(lfr.BlockToStringC(1, 0));
			else if (strcmp(lfr.SecBuffer, "QUANTITYLIMIT") == 0)
				item->mQuantityLimit = lfr.BlockToIntC(1);
			else if (strcmp(lfr.SecBuffer, "QUANTITYSOLD") == 0)
				item->mQuantitySold = lfr.BlockToIntC(1);
			else
				g_Log.AddMessageFormat("Unknown identifier [%s] in file [%s]",
						lfr.SecBuffer, buf);
		}
	}
	lfr.CloseCurrent();
	mItems[id] = item;

	return item;
}
示例#16
0
void BookManager::LoadFile(std::string filename) {
	FileReader lfr;
	if (lfr.OpenText(filename.c_str()) != Err_OK) {
		g_Logs.data->error("Could not open file [%v]", filename);
		return;
	}
	int bookID = atoi(Platform::Basename(filename).c_str());
	BookDefinition newItem;
	newItem.bookID = bookID;
	int r = 0;
	std::string page;
	bool inPageText = false;
	while (lfr.FileOpen() == true) {
		r = lfr.ReadLine();
		std::string wholeLine = std::string(lfr.DataBuffer);
		bool escapedLine = Util::HasBeginning(wholeLine, "\\");
		if (r > 0 && !escapedLine) {
			lfr.SingleBreak("=");
			lfr.BlockToStringC(0, Case_Upper);
			if (strcmp(lfr.SecBuffer, "[PAGE]") == 0) {
				if(page.length() > 0) {
					newItem.pages.push_back(page);
					page = "";
				}
				inPageText = false;
			} else if (strcmp(lfr.SecBuffer, "TITLE") == 0)
				newItem.title = lfr.BlockToStringC(1, 0);
			else if (strcmp(lfr.SecBuffer, "TEXT") == 0) {
				page.clear();
				page.append(lfr.BlockToStringC(1, 0));
				inPageText = true;
			}
			else {
				if(inPageText) {
					if(page.length() > 0) {
						if(Util::HasEnding(page, "\\")) {
							page = page.substr(0, page.length() - 1);
						}
						else
							page.append("<br>");
					}
					page.append(wholeLine);
				}
			}
		}
		else if(inPageText) {
			if(escapedLine) {
				wholeLine = wholeLine.substr(1);
			}
			if(page.length() > 0) {
				if(Util::HasEnding(page, "\\")) {
					page = page.substr(0, page.length() - 1);
				}
				else
					page.append("<br>");
			}
			if(r != 0) {
				page.append(wholeLine);
			}
		}
	}
	if(page.length() > 0) {
		newItem.pages.push_back(page);
	}
	books[newItem.bookID] = newItem;
	lfr.CloseCurrent();
}
示例#17
0
bool InfoManager::Init() {

	TextFileEntityReader ter(Platform::JoinPath(Platform::JoinPath(g_Config.ResolveStaticDataPath(), "Data"), "Tips.txt" ), Case_None, Comment_Semi);
	ter.Start();
	if (!ter.Exists())
		return false;

	ter.Key("", "", true);
	ter.Index("ENTRY");
	STRINGLIST sections = ter.Sections();
	int i = 0;
	for (auto a = sections.begin(); a != sections.end(); ++a) {
		ter.PushSection(*a);
		Tip t;
		t.mID = ++i;
		if (!t.EntityKeys(&ter) || !t.ReadEntity(&ter))
			return false;
		mTips.push_back(t);
		ter.PopSection();
	}
	ter.End();

	std::string filename = Platform::JoinPath(Platform::JoinPath(g_Config.ResolveStaticDataPath(), "Data"), "Game.txt" );
	FileReader lfr;
	if (lfr.OpenText(filename.c_str()) != Err_OK) {
		g_Logs.data->error("Could not open configuration file: %v", filename);
		return false;
	}
	else {
		static char Delimiter[] = { '=', 13, 10 };
		lfr.Delimiter = Delimiter;
		lfr.CommentStyle = Comment_Semi;

		while (lfr.FileOpen() == true) {
			int r = lfr.ReadLine();
			if (r > 0) {
				lfr.SingleBreak("=");
				char *NameBlock = lfr.BlockToString(0);
				if (strcmp(NameBlock, "GameName") == 0) {
					mGameName = lfr.BlockToStringC(1, 0);
				} else if (strcmp(NameBlock, "Edition") == 0) {
					mEdition = lfr.BlockToStringC(1, 0);
				} else if (strcmp(NameBlock, "StartZone") == 0) {
					mStartZone = lfr.BlockToInt(1);
				} else if (strcmp(NameBlock, "StartX") == 0) {
					mStartX = lfr.BlockToInt(1);
				} else if (strcmp(NameBlock, "StartY") == 0) {
					mStartY = lfr.BlockToInt(1);
				} else if (strcmp(NameBlock, "StartZ") == 0) {
					mStartZ = lfr.BlockToInt(1);
				} else if (strcmp(NameBlock, "StartRotation") == 0) {
					mStartRotation = lfr.BlockToInt(1);
				}
				else {
					g_Logs.data->error("Unknown identifier [%v] in config file [%v]",
							lfr.BlockToString(0), filename);
				}
			}
		}
		lfr.CloseCurrent();
	}

	return true;

}