Release builds of the game should hide the debug console by default and instead log to a debugging file. Release Build 8413.
This commit is contained in:
		
							parent
							
								
									df0d7d680f
								
							
						
					
					
						commit
						412a88d294
					
				| @ -193,7 +193,7 @@ | |||||||
|       <AdditionalIncludeDirectories>C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\steam;C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\discord-files;C:\Users\sigon\OneDrive\Documents\include</AdditionalIncludeDirectories> |       <AdditionalIncludeDirectories>C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\steam;C:\Users\sigon\source\repos\AdventuresInLestoria\Adventures in Lestoria\discord-files;C:\Users\sigon\OneDrive\Documents\include</AdditionalIncludeDirectories> | ||||||
|     </ClCompile> |     </ClCompile> | ||||||
|     <Link> |     <Link> | ||||||
|       <SubSystem>Console</SubSystem> |       <SubSystem>Windows</SubSystem> | ||||||
|       <EnableCOMDATFolding>true</EnableCOMDATFolding> |       <EnableCOMDATFolding>true</EnableCOMDATFolding> | ||||||
|       <OptimizeReferences>true</OptimizeReferences> |       <OptimizeReferences>true</OptimizeReferences> | ||||||
|       <GenerateDebugInformation>true</GenerateDebugInformation> |       <GenerateDebugInformation>true</GenerateDebugInformation> | ||||||
|  | |||||||
| @ -153,6 +153,7 @@ float AiL::SIZE_CHANGE_SPEED=1; | |||||||
| 
 | 
 | ||||||
| AiL::AiL() | AiL::AiL() | ||||||
| { | { | ||||||
|  | 	debugLogger.open("debug.log"); | ||||||
| 	utils::datafile::Read(DATA,"assets/config/configuration.txt"); | 	utils::datafile::Read(DATA,"assets/config/configuration.txt"); | ||||||
| 	std::filesystem::create_directories("save_file_path"_S); | 	std::filesystem::create_directories("save_file_path"_S); | ||||||
| 
 | 
 | ||||||
| @ -207,7 +208,7 @@ AiL::AiL() | |||||||
| 
 | 
 | ||||||
| 	std::vector<std::string>values=DATA.GetProperty("class_list").GetValues(); | 	std::vector<std::string>values=DATA.GetProperty("class_list").GetValues(); | ||||||
| 	for(const std::string&cl:values){ | 	for(const std::string&cl:values){ | ||||||
| 		std::cout<<cl<<std::endl; | 		LOG(cl); | ||||||
| 		utils::datafile::Read(DATA,CONFIG_PATH + "class_directory"_S + cl + ".txt"); | 		utils::datafile::Read(DATA,CONFIG_PATH + "class_directory"_S + cl + ".txt"); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| @ -303,7 +304,7 @@ bool AiL::OnUserCreate(){ | |||||||
| 	 | 	 | ||||||
| 	#ifdef __EMSCRIPTEN__ | 	#ifdef __EMSCRIPTEN__ | ||||||
| 		emscripten_idb_async_load("/assets",("save_file_path"_S+"system.conf").c_str(),0,[](void*arg,void*data,int length){ | 		emscripten_idb_async_load("/assets",("save_file_path"_S+"system.conf").c_str(),0,[](void*arg,void*data,int length){ | ||||||
| 			std::cout<<"Loaded System Save File successfully!"<<std::endl; | 			LOG("Loaded System Save File successfully!"); | ||||||
| 				 | 				 | ||||||
| 			std::string rawMetadata=(char*)data; | 			std::string rawMetadata=(char*)data; | ||||||
| 			std::ofstream file("save_file_path"_S+"system.conf"); | 			std::ofstream file("save_file_path"_S+"system.conf"); | ||||||
| @ -313,7 +314,7 @@ bool AiL::OnUserCreate(){ | |||||||
| 			file.close(); | 			file.close(); | ||||||
| 			GameSettings::Initialize(); | 			GameSettings::Initialize(); | ||||||
| 		},[](void*arg){ | 		},[](void*arg){ | ||||||
| 			std::cout<<"Failed to load System Save File!"<<std::endl; | 			LOG("Failed to load System Save File!"); | ||||||
| 		}); | 		}); | ||||||
| 	#else | 	#else | ||||||
| 		GameSettings::Initialize(); | 		GameSettings::Initialize(); | ||||||
| @ -328,9 +329,9 @@ bool AiL::OnUserCreate(){ | |||||||
| 		SetupDiscord(); | 		SetupDiscord(); | ||||||
| 		if(SteamAPI_RestartAppIfNecessary(2895980U))return false; //Immediately quit if steam is detected and can be started through it.
 | 		if(SteamAPI_RestartAppIfNecessary(2895980U))return false; //Immediately quit if steam is detected and can be started through it.
 | ||||||
| 		if(Steam_Init()){ | 		if(Steam_Init()){ | ||||||
| 			std::cout<<"Steam API Initialized successfully!"<<std::endl; | 			LOG("Steam API Initialized successfully!"); | ||||||
| 		}else{ | 		}else{ | ||||||
| 			std::cout<<"Steam API failed to initialize!"<<std::endl; | 			LOG("Steam API failed to initialize!"); | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 	#endif | 	#endif | ||||||
| @ -339,7 +340,7 @@ bool AiL::OnUserCreate(){ | |||||||
| 
 | 
 | ||||||
| 	if(!gamepack.Loaded()&&"GENERATE_GAMEPACK"_B){ | 	if(!gamepack.Loaded()&&"GENERATE_GAMEPACK"_B){ | ||||||
| 		gamepack.SavePack("assets/"+"gamepack_file"_S,PACK_KEY); | 		gamepack.SavePack("assets/"+"gamepack_file"_S,PACK_KEY); | ||||||
| 		std::cout<<"Game Pack has been generated!"<<std::endl<<"========================"<<std::endl<<std::endl; | 		LOG("Game Pack has been generated!"<<std::endl<<"========================"<<std::endl); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	return true; | 	return true; | ||||||
| @ -381,7 +382,7 @@ bool AiL::OnUserUpdate(float fElapsedTime){ | |||||||
| 		if(Discord){ | 		if(Discord){ | ||||||
| 			auto result=Discord->RunCallbacks(); | 			auto result=Discord->RunCallbacks(); | ||||||
| 			if(result!=::discord::Result::Ok){ | 			if(result!=::discord::Result::Ok){ | ||||||
| 				std::cout<<"Discord Error Code "<<int(result)<<std::endl; | 				LOG("Discord Error Code "<<int(result)); | ||||||
| 				delete Discord; | 				delete Discord; | ||||||
| 				Discord=nullptr; | 				Discord=nullptr; | ||||||
| 			} | 			} | ||||||
| @ -1948,7 +1949,7 @@ void AiL::InitializeLevel(std::string mapFile,MapName map){ | |||||||
| 			MAP_TILESETS["assets/maps/"+baseSourceDir].reflectiveData=tileset.GetData().ReflectiveData; | 			MAP_TILESETS["assets/maps/"+baseSourceDir].reflectiveData=tileset.GetData().ReflectiveData; | ||||||
| 			MAP_TILESETS["assets/maps/"+baseSourceDir].isTerrain=tileset.GetData().isTerrain; | 			MAP_TILESETS["assets/maps/"+baseSourceDir].isTerrain=tileset.GetData().isTerrain; | ||||||
| 			MAP_TILESETS["assets/maps/"+baseSourceDir].collision.SetInitialized(); | 			MAP_TILESETS["assets/maps/"+baseSourceDir].collision.SetInitialized(); | ||||||
| 			std::cout<<"assets/maps/"+baseSourceDir<<" Animation Data Size: "<<MAP_TILESETS["assets/maps/"+baseSourceDir].animationData.size()<<std::endl; | 			LOG("assets/maps/"+baseSourceDir<<" Animation Data Size: "<<MAP_TILESETS["assets/maps/"+baseSourceDir].animationData.size()); | ||||||
| 			std::string mapPath="assets/maps/"+tileset.GetData().ImageData.data["source"]; | 			std::string mapPath="assets/maps/"+tileset.GetData().ImageData.data["source"]; | ||||||
| 			if(gamepack.Loaded()){ | 			if(gamepack.Loaded()){ | ||||||
| 				r->Load(mapPath,&gamepack); | 				r->Load(mapPath,&gamepack); | ||||||
| @ -1959,7 +1960,7 @@ void AiL::InitializeLevel(std::string mapFile,MapName map){ | |||||||
| 					gamepack.AddFile(mapPath); | 					gamepack.AddFile(mapPath); | ||||||
| 				} | 				} | ||||||
| 			}else{ | 			}else{ | ||||||
| 				std::cout<<"WARNING! "<<mapPath<<" does not exist, auto-generating mock-up texture"<<std::endl; | 				LOG("WARNING! "<<mapPath<<" does not exist, auto-generating mock-up texture"); | ||||||
| 				r->Create(tileset.GetData().imagewidth,tileset.GetData().imageheight); | 				r->Create(tileset.GetData().imagewidth,tileset.GetData().imageheight); | ||||||
| 				SetDrawTarget(r->Sprite()); | 				SetDrawTarget(r->Sprite()); | ||||||
| 				int tileXCount=tileset.GetData().imagewidth/tileset.GetData().tilewidth; | 				int tileXCount=tileset.GetData().imagewidth/tileset.GetData().tilewidth; | ||||||
| @ -2001,7 +2002,7 @@ void AiL::InitializeLevel(std::string mapFile,MapName map){ | |||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	if(MAP_DATA[map].MapData.optimized){ | 	if(MAP_DATA[map].MapData.optimized){ | ||||||
| 		std::cout<<"Generating optimized map for Map "<<map<<std::endl; | 		LOG("Generating optimized map for Map "<<map); | ||||||
| 		MAP_DATA[map].optimizedTile=NEW Renderable(); | 		MAP_DATA[map].optimizedTile=NEW Renderable(); | ||||||
| 		MAP_DATA[map].optimizedTile->Create(MAP_DATA[map].MapData.width*MAP_DATA[map].MapData.tilewidth,MAP_DATA[map].MapData.height*MAP_DATA[map].MapData.tileheight); | 		MAP_DATA[map].optimizedTile->Create(MAP_DATA[map].MapData.width*MAP_DATA[map].MapData.tilewidth,MAP_DATA[map].MapData.height*MAP_DATA[map].MapData.tileheight); | ||||||
| 		SetDrawTarget(MAP_DATA[map].optimizedTile->Sprite()); | 		SetDrawTarget(MAP_DATA[map].optimizedTile->Sprite()); | ||||||
| @ -2028,7 +2029,7 @@ void AiL::InitializeLevel(std::string mapFile,MapName map){ | |||||||
| 		SetPixelMode(prevMode); | 		SetPixelMode(prevMode); | ||||||
| 		MAP_DATA[map].optimizedTile->Decal()->Update(); | 		MAP_DATA[map].optimizedTile->Decal()->Update(); | ||||||
| 		SetDrawTarget(nullptr); | 		SetDrawTarget(nullptr); | ||||||
| 		std::cout<<" Clearing Layer Data..."<<std::endl; | 		LOG(" Clearing Layer Data..."); | ||||||
| 		MAP_DATA[map].LayerData.clear(); | 		MAP_DATA[map].LayerData.clear(); | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| @ -2695,11 +2696,11 @@ int main() | |||||||
| 				if(line.find("AiL\\")!=std::string::npos){ | 				if(line.find("AiL\\")!=std::string::npos){ | ||||||
| 					if(!leaked){ | 					if(!leaked){ | ||||||
| 						leaked=true; | 						leaked=true; | ||||||
| 						std::cout<<std::endl<<std::endl<<std::endl<<"Memory leak detected!"<<std::endl; | 						LOG(std::endl<<std::endl<<std::endl<<"Memory leak detected!"); | ||||||
| 					} | 					} | ||||||
| 					std::cout<<line<<std::endl; | 					LOG(line); | ||||||
| 					std::getline(file,line); | 					std::getline(file,line); | ||||||
| 					std::cout<<line<<std::endl; | 					LOG(line); | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 			if(leaked)ERR("") | 			if(leaked)ERR("") | ||||||
| @ -2710,6 +2711,14 @@ int main() | |||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | #ifndef _DEBUG | ||||||
|  | #ifdef _WIN32 | ||||||
|  | 	int CALLBACK WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance,LPSTR lpCmdLine,int nCmdShow){ | ||||||
|  | 		main(); | ||||||
|  | 	} | ||||||
|  | #endif | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| datafilestringdata operator ""_s(const char*key,std::size_t len){ | datafilestringdata operator ""_s(const char*key,std::size_t len){ | ||||||
| 	AiL::OutputDebugInfo(key,len); | 	AiL::OutputDebugInfo(key,len); | ||||||
| 	return {DATA,std::string(key,len)}; | 	return {DATA,std::string(key,len)}; | ||||||
| @ -2783,7 +2792,7 @@ void AiL::OutputDebugInfo(const char*key,std::size_t len){ | |||||||
| 		if(utils::datafile::DEBUG_ACCESS_OPTIONS){ | 		if(utils::datafile::DEBUG_ACCESS_OPTIONS){ | ||||||
| 			std::string k=std::string(key); | 			std::string k=std::string(key); | ||||||
| 			if(!k.starts_with("debug_")){ | 			if(!k.starts_with("debug_")){ | ||||||
| 				std::cout<<"Reading "<<k<<std::endl; | 				LOG("Reading "<<k); | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 	#endif | 	#endif | ||||||
| @ -3152,7 +3161,7 @@ void AiL::InitializeGraphics(){ | |||||||
| 	for(auto&val:DATA["Images"].GetKeys()){ | 	for(auto&val:DATA["Images"].GetKeys()){ | ||||||
| 		std::string key=val.first; | 		std::string key=val.first; | ||||||
| 		std::string imgFile=DATA["Images"][key].GetString(0); | 		std::string imgFile=DATA["Images"][key].GetString(0); | ||||||
| 		std::cout<<"Loading image "+imgFile+"..."<<std::endl; | 		LOG("Loading image "+imgFile+"..."); | ||||||
| 		bool filtering=false; | 		bool filtering=false; | ||||||
| 		bool clamping=false; | 		bool clamping=false; | ||||||
| 		if(DATA["Images"][key].GetValueCount()>1){ | 		if(DATA["Images"][key].GetValueCount()>1){ | ||||||
| @ -3196,11 +3205,11 @@ void AiL::InitializeGraphics(){ | |||||||
| 		} | 		} | ||||||
| 		SetPixelMode(prevMode); | 		SetPixelMode(prevMode); | ||||||
| 		 | 		 | ||||||
| 		std::cout<<"Theme "<<themeName<<" Loaded."<<std::endl; | 		LOG("Theme "<<themeName<<" Loaded."); | ||||||
| 
 | 
 | ||||||
| 		if(DATA["Themes"][themeName].HasProperty("CustomBack")){ | 		if(DATA["Themes"][themeName].HasProperty("CustomBack")){ | ||||||
| 			std::string backPath=DATA["Themes"][themeName]["CustomBack"].GetString(); | 			std::string backPath=DATA["Themes"][themeName]["CustomBack"].GetString(); | ||||||
| 			std::cout<<" Custom background detected, Loading "<<backPath<<"..."<<std::endl; | 			LOG(" Custom background detected, Loading "<<backPath<<"..."); | ||||||
| 			if(!GFX.count(backPath)){ | 			if(!GFX.count(backPath)){ | ||||||
| 				Renderable&background=GFX[backPath]; | 				Renderable&background=GFX[backPath]; | ||||||
| 				LoadResource(background,"GFX_Prefix"_S+backPath,false,false); | 				LoadResource(background,"GFX_Prefix"_S+backPath,false,false); | ||||||
| @ -3215,15 +3224,15 @@ void AiL::InitializeGraphics(){ | |||||||
| 		Renderable&image=GFX[img]; | 		Renderable&image=GFX[img]; | ||||||
| 		LoadResource(image,"GFX_Prefix"_S+img); | 		LoadResource(image,"GFX_Prefix"_S+img); | ||||||
| 	} | 	} | ||||||
| 	std::cout<<VisualNovel::graphicsToLoad.size()<<" images for visual novel engine have been loaded."<<std::endl; | 	LOG(VisualNovel::graphicsToLoad.size()<<" images for visual novel engine have been loaded."); | ||||||
| 	 | 	 | ||||||
| 	SetFontSprite("GFX_Prefix"_S+"font.png",&gamepack,"GENERATE_GAMEPACK"_B); | 	SetFontSprite("GFX_Prefix"_S+"font.png",&gamepack,"GENERATE_GAMEPACK"_B); | ||||||
| 	std::cout<<"Custom font loaded."<<std::endl; | 	LOG("Custom font loaded."); | ||||||
| 
 | 
 | ||||||
| 	Menu::themes.SetInitialized(); | 	Menu::themes.SetInitialized(); | ||||||
| 	std::cout<<Menu::themes.size()<<" themes have been loaded."<<std::endl; | 	LOG(Menu::themes.size()<<" themes have been loaded."); | ||||||
| 	GFX.SetInitialized(); | 	GFX.SetInitialized(); | ||||||
| 	std::cout<<GFX.size()<<" images have been loaded."<<std::endl; | 	LOG(GFX.size()<<" images have been loaded."); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| const Map&AiL::GetCurrentMap()const{ | const Map&AiL::GetCurrentMap()const{ | ||||||
| @ -3273,12 +3282,12 @@ void AiL::ValidateGameStatus(){ | |||||||
| 						monsterCounts[monsterName]++; | 						monsterCounts[monsterName]++; | ||||||
| 					} | 					} | ||||||
| 				} | 				} | ||||||
| 				std::cout<<"Spawns Report for "<<map<<":"<<std::endl; | 				LOG("Spawns Report for "<<map<<":"); | ||||||
| 				for(auto&[monster,count]:monsterCounts){ | 				for(auto&[monster,count]:monsterCounts){ | ||||||
| 					std::cout<<"\t"<<count<<"x "<<monster<<std::endl; | 					LOG("\t"<<count<<"x "<<monster); | ||||||
| 				} | 				} | ||||||
| 				std::map<ItemInfo*,long>totalDrops; | 				std::map<ItemInfo*,long>totalDrops; | ||||||
| 				std::cout<<"Monte Carlo Test: 100000 tries:"<<std::endl; | 				LOG("Monte Carlo Test: 100000 tries:"); | ||||||
| 				for(int i=0;i<100000;i++){ | 				for(int i=0;i<100000;i++){ | ||||||
| 					//Try to kill every single monster and see what drops.
 | 					//Try to kill every single monster and see what drops.
 | ||||||
| 					for(auto&[monster,count]:monsterCounts){ | 					for(auto&[monster,count]:monsterCounts){ | ||||||
| @ -3292,9 +3301,9 @@ void AiL::ValidateGameStatus(){ | |||||||
| 						} | 						} | ||||||
| 					} | 					} | ||||||
| 				} | 				} | ||||||
| 				std::cout<<"Average: "<<std::endl; | 				LOG("Average: "); | ||||||
| 				for(auto&[itemInfo,count]:totalDrops){ | 				for(auto&[itemInfo,count]:totalDrops){ | ||||||
| 					std::cout<<"\t"<<itemInfo->Name()<<" x"<<std::format("{:.3}",count/100000.)<<std::endl; | 					LOG("\t"<<itemInfo->Name()<<" x"<<std::format("{:.3}",count/100000.)); | ||||||
| 				} | 				} | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| @ -3531,10 +3540,10 @@ void AiL::EndGame(){ | |||||||
| 				discord::LogLevel::Debug, [](discord::LogLevel level, const char* message) { | 				discord::LogLevel::Debug, [](discord::LogLevel level, const char* message) { | ||||||
| 					std::cerr << "Log(" << static_cast<uint32_t>(level) << "): " << message << "\n"; | 					std::cerr << "Log(" << static_cast<uint32_t>(level) << "): " << message << "\n"; | ||||||
| 				}); | 				}); | ||||||
| 			std::cout<<"Connected to Discord!"<<std::endl; | 			LOG("Connected to Discord!"); | ||||||
| 			UpdateDiscordStatus("Main Menu",player.get()->GetClassName()); | 			UpdateDiscordStatus("Main Menu",player.get()->GetClassName()); | ||||||
| 		}else{ | 		}else{ | ||||||
| 			std::cout<<"Could not connect to Discord. Error Code "<<int(result)<<std::endl; | 			LOG("Could not connect to Discord. Error Code "<<int(result)); | ||||||
| 		} | 		} | ||||||
| 		return result; | 		return result; | ||||||
| 	} | 	} | ||||||
| @ -3562,9 +3571,9 @@ void AiL::UpdateDiscordStatus(std::string levelName,std::string className){ | |||||||
| 			} | 			} | ||||||
| 			Discord->ActivityManager().UpdateActivity(newActivity,[](::discord::Result result){ | 			Discord->ActivityManager().UpdateActivity(newActivity,[](::discord::Result result){ | ||||||
| 				if(result==::discord::Result::Ok){ | 				if(result==::discord::Result::Ok){ | ||||||
| 					std::cout<<"Discord Activity successfully updated!"<<std::endl; | 					LOG("Discord Activity successfully updated!"); | ||||||
| 				}else{ | 				}else{ | ||||||
| 					std::cout<<"Could not update Discord Activity. Error Code "<<int(result)<<std::endl; | 					LOG("Could not update Discord Activity. Error Code "<<int(result)); | ||||||
| 				} | 				} | ||||||
| 			}); | 			}); | ||||||
| 		}else{ | 		}else{ | ||||||
| @ -3583,7 +3592,7 @@ void AiL::UpdateDiscordStatus(std::string levelName,std::string className){ | |||||||
| 		}else{ | 		}else{ | ||||||
| 			if(Steam_Init()){ | 			if(Steam_Init()){ | ||||||
| 				retry=true; | 				retry=true; | ||||||
| 				std::cout<<"Steam API Initialized successfully!"<<std::endl; | 				LOG("Steam API Initialized successfully!"); | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 		if(retry){ | 		if(retry){ | ||||||
| @ -3597,7 +3606,7 @@ void AiL::InitializePlayerLevelCap(){ | |||||||
| 		player->levelCap++; | 		player->levelCap++; | ||||||
| 	} | 	} | ||||||
| 	if(player->levelCap<=1)ERR("Could not detect level cap properly!") | 	if(player->levelCap<=1)ERR("Could not detect level cap properly!") | ||||||
| 	std::cout<<"Level cap detected as "<<int(player->levelCap)<<std::endl; | 	LOG("Level cap detected as "<<int(player->levelCap)); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void AiL::ResetGame(bool changeToMainMenu){ | void AiL::ResetGame(bool changeToMainMenu){ | ||||||
| @ -3796,7 +3805,7 @@ bool AiL::Steam_Init(){ | |||||||
| 	if(SteamAPI_Init()){ | 	if(SteamAPI_Init()){ | ||||||
| 		if(SteamUtils()!=nullptr){ | 		if(SteamUtils()!=nullptr){ | ||||||
| 			SteamUtils()->SetWarningMessageHook([](int severity,const char*message){ | 			SteamUtils()->SetWarningMessageHook([](int severity,const char*message){ | ||||||
| 				std::cout<<std::format("STEAM[{}]: {}",severity,std::string(message))<<std::endl; | 				LOG(std::format("STEAM[{}]: {}",severity,std::string(message))); | ||||||
| 			}); | 			}); | ||||||
| 			if(steamKeyboardCallbackListener==nullptr){ | 			if(steamKeyboardCallbackListener==nullptr){ | ||||||
| 				steamKeyboardCallbackListener=new SteamKeyboardCallbackHandler(); | 				steamKeyboardCallbackListener=new SteamKeyboardCallbackHandler(); | ||||||
|  | |||||||
| @ -250,7 +250,7 @@ void sig::Animation::InitializeAnimations(){ | |||||||
| 	for(auto&dat:GFX){ | 	for(auto&dat:GFX){ | ||||||
| 		std::string imgFile=dat.first; | 		std::string imgFile=dat.first; | ||||||
| 		if(!ANIMATION_DATA.count(imgFile)){ | 		if(!ANIMATION_DATA.count(imgFile)){ | ||||||
| 			std::cout<<"WARNING! Animation data for "<<imgFile<<" not found! Auto-generating..."<<std::endl; | 			LOG("WARNING! Animation data for "<<imgFile<<" not found! Auto-generating..."); | ||||||
| 			CreateStillAnimation(imgFile,GFX[imgFile].Sprite()->Size()); | 			CreateStillAnimation(imgFile,GFX[imgFile].Sprite()->Size()); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | |||||||
| @ -42,6 +42,9 @@ All rights reserved. | |||||||
| #include <any> | #include <any> | ||||||
| #include <memory> | #include <memory> | ||||||
| #include <source_location> | #include <source_location> | ||||||
|  | #include <fstream> | ||||||
|  | 
 | ||||||
|  | inline std::ofstream debugLogger; | ||||||
| 
 | 
 | ||||||
| #ifdef _DEBUG | #ifdef _DEBUG | ||||||
| #ifndef __EMSCRIPTEN__ | #ifndef __EMSCRIPTEN__ | ||||||
| @ -67,10 +70,18 @@ All rights reserved. | |||||||
| 		std::stringstream errStream; \ | 		std::stringstream errStream; \ | ||||||
| 		errStream<<err; \ | 		errStream<<err; \ | ||||||
| 		Error::log(errStream,std::source_location::current());} | 		Error::log(errStream,std::source_location::current());} | ||||||
| 
 | 	#define LOG(msg) { \ | ||||||
|  | 		std::stringstream debugStream; \ | ||||||
|  | 		debugStream<<msg; \ | ||||||
|  | 		Error::debug(debugStream,std::source_location::current());} | ||||||
| 	class Error{ | 	class Error{ | ||||||
| 	public: | 	public: | ||||||
|  | 		inline static void debug(std::stringstream&str,std::source_location loc){ | ||||||
|  | 			debugLogger<<loc.file_name()<<"("<<loc.line()<<":"<<loc.column()<<") "<<loc.function_name()<<": "<<str.str()<<std::endl; | ||||||
|  | 			std::cout<<loc.file_name()<<"("<<loc.line()<<":"<<loc.column()<<") "<<loc.function_name()<<": "<<str.str()<<std::endl; | ||||||
|  | 		} | ||||||
| 		inline static void log(std::stringstream&str,std::source_location loc){ | 		inline static void log(std::stringstream&str,std::source_location loc){ | ||||||
|  | 			debugLogger<<loc.file_name()<<"("<<loc.line()<<":"<<loc.column()<<") "<<loc.function_name()<<": "<<str.str()<<std::endl; | ||||||
| 			std::cout<<loc.file_name()<<"("<<loc.line()<<":"<<loc.column()<<") "<<loc.function_name()<<": "<<str.str()<<std::endl; | 			std::cout<<loc.file_name()<<"("<<loc.line()<<":"<<loc.column()<<") "<<loc.function_name()<<": "<<str.str()<<std::endl; | ||||||
| 			throw; | 			throw; | ||||||
| 		} | 		} | ||||||
| @ -84,7 +95,7 @@ All rights reserved. | |||||||
| 	class Error{ | 	class Error{ | ||||||
| 	public: | 	public: | ||||||
| 		inline static void log(std::stringstream&str,std::source_location loc){ | 		inline static void log(std::stringstream&str,std::source_location loc){ | ||||||
| 			std::cout<<loc.file_name()<<"("<<loc.line()<<":"<<loc.column()<<") "<<loc.function_name()<<": "<<str.str()<<std::endl; | 			LOG(loc.file_name()<<"("<<loc.line()<<":"<<loc.column()<<") "<<loc.function_name()<<": "<<str.str()); | ||||||
| 			#ifdef __DEBUG__ | 			#ifdef __DEBUG__ | ||||||
| 				throw; | 				throw; | ||||||
| 			#endif | 			#endif | ||||||
|  | |||||||
| @ -111,7 +111,7 @@ void GameSettings::Initialize(){ | |||||||
| 	std::string loadSystemFilename="save_file_path"_S+"system.conf"; | 	std::string loadSystemFilename="save_file_path"_S+"system.conf"; | ||||||
| 	 | 	 | ||||||
| 	if(std::filesystem::exists(loadSystemFilename)){ | 	if(std::filesystem::exists(loadSystemFilename)){ | ||||||
| 		std::cout<<"Reading system data file..."<<std::endl; | 		LOG("Reading system data file..."); | ||||||
| 		utils::datafile::Read(loadSystemFile,loadSystemFilename); | 		utils::datafile::Read(loadSystemFile,loadSystemFilename); | ||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
|  | |||||||
| @ -335,8 +335,8 @@ void ItemInfo::InitializeItems(){ | |||||||
| 		if(tempItem.Description().length()==0)ERR("WARNING! Item "<<info.name<<" does not have a description!"); | 		if(tempItem.Description().length()==0)ERR("WARNING! Item "<<info.name<<" does not have a description!"); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	std::cout<<ITEM_DATA.size()<<" items have been loaded."<<std::endl; | 	LOG(ITEM_DATA.size()<<" items have been loaded."); | ||||||
| 	std::cout<<ITEM_CATEGORIES.size()<<" item categories have been loaded."<<std::endl; | 	LOG(ITEM_CATEGORIES.size()<<" item categories have been loaded."); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| ItemProps::ItemProps(utils::datafile*scriptProps,utils::datafile*customProps) | ItemProps::ItemProps(utils::datafile*scriptProps,utils::datafile*customProps) | ||||||
| @ -423,7 +423,7 @@ void ItemInfo::InitializeScripts(){ | |||||||
| 	}; | 	}; | ||||||
| 
 | 
 | ||||||
| 	ITEM_SCRIPTS.SetInitialized(); | 	ITEM_SCRIPTS.SetInitialized(); | ||||||
| 	std::cout<<ITEM_SCRIPTS.size()<<" item scripts have been loaded."<<std::endl; | 	LOG(ITEM_SCRIPTS.size()<<" item scripts have been loaded."); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Item::Item() | Item::Item() | ||||||
|  | |||||||
| @ -174,13 +174,13 @@ void Input::Initialize(){ | |||||||
| 
 | 
 | ||||||
| void Input::LoadSteamButtonIcons(){ | void Input::LoadSteamButtonIcons(){ | ||||||
| 	GFX.Unlock(); | 	GFX.Unlock(); | ||||||
| 	std::cout<<std::format("Steam Icons may be required... Loading in {} icons",int(k_EInputActionOrigin_Count))<<std::endl; | 	LOG(std::format("Steam Icons may be required... Loading in {} icons",int(k_EInputActionOrigin_Count))); | ||||||
| 	for(int i=1;i<k_EInputActionOrigin_Count;i++){ | 	for(int i=1;i<k_EInputActionOrigin_Count;i++){ | ||||||
| 		const char*imageName{SteamInput()->GetGlyphPNGForActionOrigin(EInputActionOrigin(i),k_ESteamInputGlyphSize_Small,0U)}; | 		const char*imageName{SteamInput()->GetGlyphPNGForActionOrigin(EInputActionOrigin(i),k_ESteamInputGlyphSize_Small,0U)}; | ||||||
| 		if(imageName!=nullptr){ | 		if(imageName!=nullptr){ | ||||||
| 			std::string loadImage{imageName}; | 			std::string loadImage{imageName}; | ||||||
| 			if(loadImage.length()>0&&!GFX.count(loadImage)){ | 			if(loadImage.length()>0&&!GFX.count(loadImage)){ | ||||||
| 				std::cout<<std::format("Loading steam image {}",loadImage)<<std::endl; | 				LOG(std::format("Loading steam image {}",loadImage)); | ||||||
| 				GFX[loadImage].Load(loadImage); | 				GFX[loadImage].Load(loadImage); | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
|  | |||||||
| @ -129,7 +129,7 @@ void Merchant::Initialize(){ | |||||||
| 			merchantCount++; | 			merchantCount++; | ||||||
| 		} | 		} | ||||||
| 		if(merchantCount==0)ERR(std::format("WARNING! No merchants available for Chapter {}!",chapter)); | 		if(merchantCount==0)ERR(std::format("WARNING! No merchants available for Chapter {}!",chapter)); | ||||||
| 		std::cout<<std::format("Added {} merchants to Chapter {}",merchantCount,chapter)<<std::endl; | 		LOG(std::format("Added {} merchants to Chapter {}",merchantCount,chapter)); | ||||||
| 	} | 	} | ||||||
| 	Merchant::RandomizeTravelingMerchant(); | 	Merchant::RandomizeTravelingMerchant(); | ||||||
| } | } | ||||||
| @ -255,7 +255,7 @@ void Merchant::SetTravelingMerchant(std::string_view key){ | |||||||
| 			return; | 			return; | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	std::cout<<std::format("WARNING! Could not set traveling merchant with key {}!",std::string(key))<<std::endl; | 	LOG(std::format("WARNING! Could not set traveling merchant with key {}!",std::string(key))); | ||||||
| 	std::cout<<"Falling back to a randomized merchant."<<std::endl; | 	LOG("Falling back to a randomized merchant."); | ||||||
| 	RandomizeTravelingMerchant(); | 	RandomizeTravelingMerchant(); | ||||||
| } | } | ||||||
| @ -724,7 +724,7 @@ bool Player::Hurt(int damage,bool onUpperLevel,float z){ | |||||||
| 		float finalPctDmgTaken=armorDmgTaken*otherDmgTaken; | 		float finalPctDmgTaken=armorDmgTaken*otherDmgTaken; | ||||||
| 	 | 	 | ||||||
| 		if(finalPctDmgTaken<=6._Pct){ | 		if(finalPctDmgTaken<=6._Pct){ | ||||||
| 			std::cout<<"WARNING! Damage Reduction has somehow ended up below 6%, which is over the cap!"<<std::endl; | 			LOG("WARNING! Damage Reduction has somehow ended up below 6%, which is over the cap!"); | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		finalPctDmgTaken=std::max(6.25_Pct,finalPctDmgTaken);//Apply Damage Cap.
 | 		finalPctDmgTaken=std::max(6.25_Pct,finalPctDmgTaken);//Apply Damage Cap.
 | ||||||
|  | |||||||
| @ -208,11 +208,11 @@ const void SaveFile::SaveGame(){ | |||||||
| 				if(response!="ERR"){ | 				if(response!="ERR"){ | ||||||
| 					Server_SaveFile([](std::string_view response){ | 					Server_SaveFile([](std::string_view response){ | ||||||
| 						if(response=="ERR"){ | 						if(response=="ERR"){ | ||||||
| 							std::cout<<"WARNING! Could not save data to server!"<<std::endl; | 							LOG("WARNING! Could not save data to server!"); | ||||||
| 						} | 						} | ||||||
| 					}); | 					}); | ||||||
| 				}else{ | 				}else{ | ||||||
| 					std::cout<<"WARNING! Could not save metadata to server!"<<std::endl; | 					LOG("WARNING! Could not save metadata to server!"); | ||||||
| 				} | 				} | ||||||
| 			}; | 			}; | ||||||
| 			Server_SaveMetadataFile(RetryResponse); | 			Server_SaveMetadataFile(RetryResponse); | ||||||
| @ -227,9 +227,9 @@ const void SaveFile::SaveGame(){ | |||||||
| 			} | 			} | ||||||
| 			std::string contents=fileContents.str(); | 			std::string contents=fileContents.str(); | ||||||
| 			emscripten_idb_async_store("/assets",("save_file_path"_S+std::format("save.{:04}",saveFileID)).c_str(),contents.data(),contents.length(),0,[](void*arg){ | 			emscripten_idb_async_store("/assets",("save_file_path"_S+std::format("save.{:04}",saveFileID)).c_str(),contents.data(),contents.length(),0,[](void*arg){ | ||||||
| 				std::cout<<"Successfully saved save file "<<saveFileID<<"!"<<std::endl; | 				LOG("Successfully saved save file "<<saveFileID<<"!"); | ||||||
| 			},[](void*arg){ | 			},[](void*arg){ | ||||||
| 				std::cout<<"Failed to save save file "<<saveFileID<<"!"<<std::endl; | 				LOG("Failed to save save file "<<saveFileID<<"!"); | ||||||
| 			}); | 			}); | ||||||
| 
 | 
 | ||||||
| 			file.close(); | 			file.close(); | ||||||
| @ -245,9 +245,9 @@ const void SaveFile::SaveGame(){ | |||||||
| 			} | 			} | ||||||
| 			std::string metaContents=metafileContents.str(); | 			std::string metaContents=metafileContents.str(); | ||||||
| 			emscripten_idb_async_store("/assets",("save_file_path"_S+"metadata.dat").c_str(),metaContents.data(),metaContents.length(),0,[](void*arg){ | 			emscripten_idb_async_store("/assets",("save_file_path"_S+"metadata.dat").c_str(),metaContents.data(),metaContents.length(),0,[](void*arg){ | ||||||
| 				std::cout<<"Successfully saved metafile!"<<std::endl; | 				LOG("Successfully saved metafile!"); | ||||||
| 			},[](void*arg){ | 			},[](void*arg){ | ||||||
| 				std::cout<<"Failed to save save metafile!"<<std::endl; | 				LOG("Failed to save save metafile!"); | ||||||
| 			}); | 			}); | ||||||
| 
 | 
 | ||||||
| 			metafile.close(); | 			metafile.close(); | ||||||
| @ -262,9 +262,9 @@ const void SaveFile::SaveGame(){ | |||||||
| 		} | 		} | ||||||
| 		std::string systemContents=systemFileContents.str(); | 		std::string systemContents=systemFileContents.str(); | ||||||
| 		emscripten_idb_async_store("/assets",("save_file_path"_S+"system.conf").c_str(),systemContents.data(),systemContents.length(),0,[](void*arg){ | 		emscripten_idb_async_store("/assets",("save_file_path"_S+"system.conf").c_str(),systemContents.data(),systemContents.length(),0,[](void*arg){ | ||||||
| 			std::cout<<"Successfully saved system file!"<<std::endl; | 			LOG("Successfully saved system file!"); | ||||||
| 		},[](void*arg){ | 		},[](void*arg){ | ||||||
| 			std::cout<<"Failed to save system file!"<<std::endl; | 			LOG("Failed to save system file!"); | ||||||
| 		}); | 		}); | ||||||
| 
 | 
 | ||||||
| 		systemfile.close(); | 		systemfile.close(); | ||||||
| @ -366,7 +366,7 @@ void SaveFile::LoadFile(){ | |||||||
| 
 | 
 | ||||||
| 		GameState::ChangeState(States::OVERWORLD_MAP,0.5f); | 		GameState::ChangeState(States::OVERWORLD_MAP,0.5f); | ||||||
| 	}else{ | 	}else{ | ||||||
| 		std::cout<<std::format("WARNING! File {} does not exist for loading!","save_file_path"_S+std::format("save.{:04}",saveFileID))<<std::endl; | 		LOG(std::format("WARNING! File {} does not exist for loading!","save_file_path"_S+std::format("save.{:04}",saveFileID))); | ||||||
| 	} | 	} | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| @ -382,12 +382,12 @@ const void SaveFile::LoadGame(){ | |||||||
| 					file.close(); | 					file.close(); | ||||||
| 					LoadFile(); | 					LoadFile(); | ||||||
| 				}else{ | 				}else{ | ||||||
| 					std::cout<<"WARNING! Could not load save file!"<<std::endl; | 					LOG("WARNING! Could not load save file!"); | ||||||
| 				} | 				} | ||||||
| 			}); | 			}); | ||||||
| 		}else{ | 		}else{ | ||||||
| 			emscripten_idb_async_load("/assets",("save_file_path"_S+std::format("save.{:04}",saveFileID)).c_str(),0,[](void*arg,void*data,int length){ | 			emscripten_idb_async_load("/assets",("save_file_path"_S+std::format("save.{:04}",saveFileID)).c_str(),0,[](void*arg,void*data,int length){ | ||||||
| 				std::cout<<"Loaded Save File "<<saveFileID<<" successfully!"<<std::endl; | 				LOG("Loaded Save File "<<saveFileID<<" successfully!"); | ||||||
| 				 | 				 | ||||||
| 				std::string rawMetadata=(char*)data; | 				std::string rawMetadata=(char*)data; | ||||||
| 				std::ofstream file("save_file_path"_S+std::format("save.{:04}",saveFileID)); | 				std::ofstream file("save_file_path"_S+std::format("save.{:04}",saveFileID)); | ||||||
| @ -397,7 +397,7 @@ const void SaveFile::LoadGame(){ | |||||||
| 				file.close(); | 				file.close(); | ||||||
| 				LoadFile(); | 				LoadFile(); | ||||||
| 			},[](void*arg){ | 			},[](void*arg){ | ||||||
| 				std::cout<<"Failed to load Save File "<<saveFileID<<"!"<<std::endl; | 				LOG("Failed to load Save File "<<saveFileID<<"!"); | ||||||
| 			}); | 			}); | ||||||
| 		} | 		} | ||||||
| 	#else | 	#else | ||||||
| @ -433,7 +433,7 @@ const void SaveFile::SetSaveFileOfflineID_TransitionToOverworldMap(){ | |||||||
| 			SaveFile::saveFileID=saveFileCount; | 			SaveFile::saveFileID=saveFileCount; | ||||||
| 			GameState::ChangeState(States::OVERWORLD_MAP); | 			GameState::ChangeState(States::OVERWORLD_MAP); | ||||||
| 		},[](void*arg){ | 		},[](void*arg){ | ||||||
| 			std::cout<<"Failed to load metadata! Initializing as save file 0."<<std::endl; | 			LOG("Failed to load metadata! Initializing as save file 0."); | ||||||
| 			SaveFile::saveFileID=0; //Since we couldn't find metadata, we are assuming we start at save file 0.
 | 			SaveFile::saveFileID=0; //Since we couldn't find metadata, we are assuming we start at save file 0.
 | ||||||
| 			GameState::ChangeState(States::OVERWORLD_MAP); | 			GameState::ChangeState(States::OVERWORLD_MAP); | ||||||
| 		}); | 		}); | ||||||
| @ -494,7 +494,7 @@ const void SaveFile::UpdateSaveGameData(std::function<void()>afterSaveGameDataUp | |||||||
| 		gameFilesList->RemoveAllComponents(); | 		gameFilesList->RemoveAllComponents(); | ||||||
| 		#ifdef __EMSCRIPTEN__ | 		#ifdef __EMSCRIPTEN__ | ||||||
| 			emscripten_idb_async_load("/assets",("save_file_path"_S+"metadata.dat").c_str(),0,[](void*arg,void*data,int length){ | 			emscripten_idb_async_load("/assets",("save_file_path"_S+"metadata.dat").c_str(),0,[](void*arg,void*data,int length){ | ||||||
| 				std::cout<<"Loaded metadata successfully!"<<std::endl; | 				LOG("Loaded metadata successfully!"); | ||||||
| 				auto gameFilesList=Component<ScrollableWindowComponent>(LOAD_GAME,"Game Files List"); | 				auto gameFilesList=Component<ScrollableWindowComponent>(LOAD_GAME,"Game Files List"); | ||||||
| 				 | 				 | ||||||
| 				std::string rawMetadata=(char*)data; | 				std::string rawMetadata=(char*)data; | ||||||
| @ -521,7 +521,7 @@ const void SaveFile::UpdateSaveGameData(std::function<void()>afterSaveGameDataUp | |||||||
| 				} | 				} | ||||||
| 				SaveFile::afterSaveGameDataUpdate(); | 				SaveFile::afterSaveGameDataUpdate(); | ||||||
| 			},[](void*arg){ | 			},[](void*arg){ | ||||||
| 				std::cout<<"Failed to load metadata!"<<std::endl; | 				LOG("Failed to load metadata!"); | ||||||
| 				SaveFile::afterSaveGameDataUpdate(); | 				SaveFile::afterSaveGameDataUpdate(); | ||||||
| 			}); | 			}); | ||||||
| 		#endif | 		#endif | ||||||
| @ -632,9 +632,9 @@ const void SaveFile::Server_SaveMetadataFile(std::function<void(std::string_view | |||||||
| 	std::string contents=fileContents.str(); | 	std::string contents=fileContents.str(); | ||||||
| 	#ifdef __EMSCRIPTEN__ | 	#ifdef __EMSCRIPTEN__ | ||||||
| 		emscripten_idb_async_store("/assets",("save_file_path"_S+"metadata.dat"+"_online").c_str(),contents.data(),contents.length(),0,[](void*arg){ | 		emscripten_idb_async_store("/assets",("save_file_path"_S+"metadata.dat"+"_online").c_str(),contents.data(),contents.length(),0,[](void*arg){ | ||||||
| 			std::cout<<"Saved metadata successfully!"<<std::endl; | 			LOG("Saved metadata successfully!"); | ||||||
| 		},[](void*arg){ | 		},[](void*arg){ | ||||||
| 			std::cout<<"Failed to save metadata!"<<std::endl; | 			LOG("Failed to save metadata!"); | ||||||
| 		}); | 		}); | ||||||
| 	#endif | 	#endif | ||||||
| 	game->SendRequest("save_server"_S,CreateServerRequest(SaveFileOperation::SAVE_METADATA_FILE,fileContents.str())); | 	game->SendRequest("save_server"_S,CreateServerRequest(SaveFileOperation::SAVE_METADATA_FILE,fileContents.str())); | ||||||
|  | |||||||
| @ -87,7 +87,7 @@ public: | |||||||
| 
 | 
 | ||||||
|             removedCount+=Menu::menus[parentMenu]->components.erase(componentName); |             removedCount+=Menu::menus[parentMenu]->components.erase(componentName); | ||||||
|             if(removedCount!=1){ |             if(removedCount!=1){ | ||||||
|                 std::cout<<"WARNING! Attempted to remove subbuttons from button listing, but not found!"; |                 LOG("WARNING! Attempted to remove subbuttons from button listing, but not found!"); | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| @ -103,7 +103,7 @@ public: | |||||||
| 
 | 
 | ||||||
|         removedCount+=Menu::menus[parentMenu]->components.erase(button.lock()->GetName()); |         removedCount+=Menu::menus[parentMenu]->components.erase(button.lock()->GetName()); | ||||||
|         if(removedCount!=1){ |         if(removedCount!=1){ | ||||||
|             std::cout<<"WARNING! Attempted to remove buttons from button listing, but not found!"; |             LOG("WARNING! Attempted to remove buttons from button listing, but not found!"); | ||||||
|         } |         } | ||||||
|         CalculateBounds(); |         CalculateBounds(); | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -390,7 +390,7 @@ class TMXParser{ | |||||||
|                     if (newTag.tag.length()==0) { //Tag's empty, so first line is the tag.
 |                     if (newTag.tag.length()==0) { //Tag's empty, so first line is the tag.
 | ||||||
|                         newTag.tag=data; |                         newTag.tag=data; | ||||||
|                         #if _DEBUG |                         #if _DEBUG | ||||||
|                             if(_DEBUG_MAP_LOAD_INFO)std::cout<<"Tag: "<<newTag.tag<<"\n"; |                             if(_DEBUG_MAP_LOAD_INFO)LOG("Tag: "<<newTag.tag<<"\n"; | ||||||
|                         #endif |                         #endif | ||||||
|                     } else { |                     } else { | ||||||
|                         std::string key = data.substr(0,data.find("=")); |                         std::string key = data.substr(0,data.find("=")); | ||||||
| @ -402,7 +402,7 @@ class TMXParser{ | |||||||
| 
 | 
 | ||||||
|                         newTag.data[key]=value; |                         newTag.data[key]=value; | ||||||
|                         #if _DEBUG |                         #if _DEBUG | ||||||
|                             if(_DEBUG_MAP_LOAD_INFO)std::cout<<"  "<<key<<":"<<newTag.data[key]<<"\n"; |                             if(_DEBUG_MAP_LOAD_INFO)LOG("  "<<key<<":"<<newTag.data[key]<<"\n"; | ||||||
|                         #endif |                         #endif | ||||||
|                     } |                     } | ||||||
|                 } |                 } | ||||||
| @ -534,11 +534,11 @@ class TMXParser{ | |||||||
|             prevZoneData=&zones.back(); |             prevZoneData=&zones.back(); | ||||||
|         }else{ |         }else{ | ||||||
|             #ifdef _DEBUG |             #ifdef _DEBUG | ||||||
|                 if(_DEBUG_MAP_LOAD_INFO)std::cout<<"Unsupported tag format! Ignoring."<<"\n"; |                 if(_DEBUG_MAP_LOAD_INFO)LOG("Unsupported tag format! Ignoring."<<"\n"; | ||||||
|             #endif |             #endif | ||||||
|         } |         } | ||||||
|             #ifdef _DEBUG |             #ifdef _DEBUG | ||||||
|                 if(_DEBUG_MAP_LOAD_INFO)std::cout<<"\n"<<"=============\n"; |                 if(_DEBUG_MAP_LOAD_INFO)LOG("\n"<<"=============\n"; | ||||||
|             #endif |             #endif | ||||||
|     } |     } | ||||||
|     TMXParser::TMXParser(std::string file){ |     TMXParser::TMXParser(std::string file){ | ||||||
| @ -596,7 +596,7 @@ class TMXParser{ | |||||||
| 
 | 
 | ||||||
|         if(infiniteMap){ |         if(infiniteMap){ | ||||||
|             #if _DEBUG |             #if _DEBUG | ||||||
|                 if(_DEBUG_MAP_LOAD_INFO)std::cout<<"Infinite map detected. Parsing stopped early."<<std::endl; |                 if(_DEBUG_MAP_LOAD_INFO)LOG("Infinite map detected. Parsing stopped early."); | ||||||
|             #endif |             #endif | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
| @ -682,7 +682,7 @@ class TMXParser{ | |||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         #ifdef _DEBUG |         #ifdef _DEBUG | ||||||
|             if(_DEBUG_MAP_LOAD_INFO)std::cout<<"Parsed Map Data:\n"<<parsedMapInfo<<"\n"; |             if(_DEBUG_MAP_LOAD_INFO)LOG("Parsed Map Data:\n"<<parsedMapInfo<<"\n"; | ||||||
|         #endif |         #endif | ||||||
|     } |     } | ||||||
| #endif | #endif | ||||||
| @ -19,10 +19,6 @@ Remove Unlock All Button | |||||||
| Sword attack should linger | Sword attack should linger | ||||||
| Add game file debug logging | Add game file debug logging | ||||||
| 
 | 
 | ||||||
| Controller Vibration |  | ||||||
| 
 |  | ||||||
| PS5 LED color support |  | ||||||
| 
 |  | ||||||
| ============================================ | ============================================ | ||||||
| 
 | 
 | ||||||
| Make another actions config file for the main build (The app # is different) | Make another actions config file for the main build (The app # is different) | ||||||
| @ -116,7 +116,7 @@ class TSXParser{ | |||||||
|             if(valid&&data.length()>0){ |             if(valid&&data.length()>0){ | ||||||
|                 if (newTag.tag.length()==0) { //Tag's empty, so first line is the tag.
 |                 if (newTag.tag.length()==0) { //Tag's empty, so first line is the tag.
 | ||||||
|                     newTag.tag=data; |                     newTag.tag=data; | ||||||
|                     if(_DEBUG_MAP_LOAD_INFO)std::cout<<"Tag: "<<newTag.tag<<"\n"; |                     if(_DEBUG_MAP_LOAD_INFO)LOG("Tag: "<<newTag.tag<<"\n"); | ||||||
|                 } else { |                 } else { | ||||||
|                     std::string key = data.substr(0,data.find("=")); |                     std::string key = data.substr(0,data.find("=")); | ||||||
|                     std::string value = data.substr(data.find("=")+1,std::string::npos); |                     std::string value = data.substr(data.find("=")+1,std::string::npos); | ||||||
| @ -126,7 +126,7 @@ class TSXParser{ | |||||||
|                     value = value.substr(0,value.length()-1); |                     value = value.substr(0,value.length()-1); | ||||||
| 
 | 
 | ||||||
|                     newTag.data[key]=value; |                     newTag.data[key]=value; | ||||||
|                     if(_DEBUG_MAP_LOAD_INFO)std::cout<<"  "<<key<<":"<<newTag.data[key]<<"\n"; |                     if(_DEBUG_MAP_LOAD_INFO)LOG("  "<<key<<":"<<newTag.data[key]<<"\n"); | ||||||
|                 } |                 } | ||||||
|             } |             } | ||||||
|         } |         } | ||||||
| @ -194,7 +194,7 @@ class TSXParser{ | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|         #ifdef _DEBUG |         #ifdef _DEBUG | ||||||
|             if(_DEBUG_MAP_LOAD_INFO)std::cout<<"\n"<<"=============\n"; |             if(_DEBUG_MAP_LOAD_INFO)LOG("\n"<<"=============\n"; | ||||||
|         #endif |         #endif | ||||||
|     } |     } | ||||||
|     TSXParser::TSXParser(std::string file) |     TSXParser::TSXParser(std::string file) | ||||||
| @ -228,7 +228,7 @@ class TSXParser{ | |||||||
|                 } |                 } | ||||||
|         } |         } | ||||||
|         #ifdef _DEBUG |         #ifdef _DEBUG | ||||||
|             if(_DEBUG_MAP_LOAD_INFO)std::cout<<"Parsed Tileset Data:\n"<<parsedTilesetInfo<<"\n"; |             if(_DEBUG_MAP_LOAD_INFO)LOG("Parsed Tileset Data:\n"<<parsedTilesetInfo<<"\n"); | ||||||
|         #endif |         #endif | ||||||
|     } |     } | ||||||
| #endif | #endif | ||||||
| @ -45,7 +45,7 @@ INCLUDE_game | |||||||
| int Test::totalTests=0; | int Test::totalTests=0; | ||||||
| 
 | 
 | ||||||
| void Test::is(std::string conditionStr,bool testResult){ | void Test::is(std::string conditionStr,bool testResult){ | ||||||
| 	std::cout<<"Running test "<<Test::totalTests<<std::endl; | 	LOG("Running test "<<Test::totalTests); | ||||||
| 	if(!testResult){  | 	if(!testResult){  | ||||||
| 		ERR(("\t"+conditionStr+" returned FALSE")); | 		ERR(("\t"+conditionStr+" returned FALSE")); | ||||||
| 	} | 	} | ||||||
|  | |||||||
| @ -39,7 +39,7 @@ All rights reserved. | |||||||
| #define VERSION_MAJOR 1 | #define VERSION_MAJOR 1 | ||||||
| #define VERSION_MINOR 0 | #define VERSION_MINOR 0 | ||||||
| #define VERSION_PATCH 0 | #define VERSION_PATCH 0 | ||||||
| #define VERSION_BUILD 8399 | #define VERSION_BUILD 8413 | ||||||
| 
 | 
 | ||||||
| #define stringify(a) stringify_(a) | #define stringify(a) stringify_(a) | ||||||
| #define stringify_(a) #a | #define stringify_(a) #a | ||||||
|  | |||||||
| @ -52,6 +52,7 @@ All rights reserved. | |||||||
| #include <limits> | #include <limits> | ||||||
| #include <string> | #include <string> | ||||||
| #include <vector> | #include <vector> | ||||||
|  | #include "Error.h" | ||||||
| #include FT_FREETYPE_H | #include FT_FREETYPE_H | ||||||
| #include FT_GLYPH_H | #include FT_GLYPH_H | ||||||
| 
 | 
 | ||||||
| @ -160,7 +161,7 @@ namespace olc { | |||||||
|                 FT_Set_Transform(toUse->fontFace, &rotMat, &pen); |                 FT_Set_Transform(toUse->fontFace, &rotMat, &pen); | ||||||
|                 FT_Error error = FT_Load_Char(toUse->fontFace, chr, FT_LOAD_RENDER); |                 FT_Error error = FT_Load_Char(toUse->fontFace, chr, FT_LOAD_RENDER); | ||||||
|                 if(error){ |                 if(error){ | ||||||
|                     std::cout<<"FT Error: "<<error<<std::endl; |                     LOG("FT Error: "<<error); | ||||||
|                     continue; |                     continue; | ||||||
|                 } |                 } | ||||||
| 
 | 
 | ||||||
| @ -168,7 +169,7 @@ namespace olc { | |||||||
|                 FT_Glyph glyph; |                 FT_Glyph glyph; | ||||||
|                 error = FT_Get_Glyph(slot, &glyph); |                 error = FT_Get_Glyph(slot, &glyph); | ||||||
|                 if(error){ |                 if(error){ | ||||||
|                     std::cout<<"FT Error: "<<error<<std::endl; |                     LOG("FT Error: "<<error); | ||||||
|                     continue; |                     continue; | ||||||
|                 } |                 } | ||||||
| 
 | 
 | ||||||
|  | |||||||
										
											Binary file not shown.
										
									
								
							
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user