void OnTriggerExit(Collider player) { if(player.tag == "P1") { if(p2_On) _mode = colorMode.RED; else isEntered = false; p1_On = false; } if(player.tag == "P2") { if(p1_On) _mode = colorMode.GREEN; else isEntered = false; p2_On = false; } }
void setColor(colorMode mode) { _mode = mode; }
static void Main(string[] args) { String xmlScriptPath = @"D:\Downloads\07th Modding\sui_output_joined\sui_output_tokihogushi.xml"; //input String CGfolder = @"D:\Steam\steamapps\common\Higurashi 04 - Himatsubushi\HigurashiEp04_Data\StreamingAssets\CG"; //input String spritesDirectory = @"D:\Downloads\07th Modding\Higurashi Files\HigurashiPS3-Sprites\m"; //input String outFilePath = @"D:\Downloads\07th Modding\Higurashi Files\HigurashiPS3-Script\toki_"; //output String textOnlyFilePath = @"D:\Downloads\07th Modding\Higurashi Files\HigurashiPS3-Script\text.utf"; //output String filesUsedFilePath = @"D:\Downloads\07th Modding\Higurashi Files\HigurashiPS3-Script\filesUsed.utf"; //output String arcName = "Tokihogushi"; List <String> cgFilesList = new List <String>(); List <String> seFilesList = new List <String>(); List <String> bgmFilesList = new List <String>(); int outFileNbr = 1; bool beforeFirstChapter = true; bool channel4Active = false; bool channel7Active = false; bool bgmActive = false; bool slot5Active = false; bool slot6Active = false; bool slot7Active = false; String reg17 = ""; String reg18 = ""; colorMode activeMode = colorMode.Regular; Dictionary <String, String> spriteMapping = new Dictionary <String, String>(); //Build a sprite file name mapping, because PS3 script uses file names like "m/Si1ADefA1" but we use "si1a_defa1_0" foreach (String s in Directory.GetFiles(spritesDirectory)) { int lastSlash = s.LastIndexOf('\\'); String formattedFileName = s.Substring(lastSlash + 1); String actualFileName = ""; actualFileName = formattedFileName; actualFileName = actualFileName.Replace("A1", "_a1"); actualFileName = actualFileName.Replace("A2", "_a2"); actualFileName = actualFileName.Replace("B1", "_b1"); actualFileName = actualFileName.Replace("B2", "_b2"); formattedFileName = formattedFileName.Substring(0, formattedFileName.Length - 6); actualFileName = actualFileName.Replace("0.png", "0"); actualFileName = actualFileName.Replace("1.png", "0"); actualFileName = actualFileName.Replace("2.png", "0"); actualFileName = actualFileName.ToLower(); formattedFileName = formattedFileName.Replace("_", ""); formattedFileName = formattedFileName.ToLower(); if (!spriteMapping.ContainsKey(formattedFileName)) { spriteMapping.Add(formattedFileName, actualFileName); } } XmlTextReader reader = new XmlTextReader(xmlScriptPath); System.IO.StreamWriter outFile = new System.IO.StreamWriter(GetOutFilePath(outFilePath, outFileNbr), false, Encoding.UTF8); OutputFileHeader(outFile, arcName, outFileNbr); System.IO.StreamWriter textOnlyFile = new System.IO.StreamWriter(textOnlyFilePath, false, Encoding.UTF8); System.IO.StreamWriter filesUsed = new System.IO.StreamWriter(filesUsedFilePath, false, Encoding.UTF8); String line = ""; int lineNum = 0; while (reader.Read()) { if (!reader.Name.Equals("ins")) { continue; } string type = ""; if (reader.HasAttributes) { type = reader.GetAttribute("type"); } line = null; if (type.Equals("DIALOGUE")) { line = reader.GetAttribute("data"); processDialogLine(line, outFile, textOnlyFile); } else if (type.Equals("SECTION_START")) { line = reader.GetAttribute("section"); type = reader.GetAttribute("section_type"); if (type.Equals("CHAPTER")) { if (beforeFirstChapter) { //don't bother with rollover on the very first chapter //this ensures the text before the section is still output and the file numbers start at 1 beforeFirstChapter = false; } else { //rollover to the next script file and increment the file number OutputFileFooter(outFile); outFile.Close(); outFileNbr++; outFile = new System.IO.StreamWriter(GetOutFilePath(outFilePath, outFileNbr), false, Encoding.UTF8); OutputFileHeader(outFile, arcName, outFileNbr); } } processDialogLine(line, outFile, textOnlyFile); } else if (type.Equals("PIC_LOAD")) { string file = reader.GetAttribute("file").ToLower(); if (file.StartsWith("e/")) //this is a CG image { file = file.Substring(2); outFile.WriteLine(" DrawScene(\"scene/" + file + "\", 1000 );\r\n"); } else { outFile.WriteLine(" DrawScene(\"background/" + file + "\", 1000 );\r\n"); } slot5Active = false; slot6Active = false; slot7Active = false; if (!cgFilesList.Contains(file)) { cgFilesList.Add(file); } } else if (type.Equals("LOAD_SIMPLE")) { outFile.WriteLine(" DrawScene(\"black\", 1000 );\r\n"); slot5Active = false; slot6Active = false; slot7Active = false; } else if (type.Equals("SFX_PLAY")) { string sfxfile = reader.GetAttribute("sfx_file").ToLower(); string sfxchannel = reader.GetAttribute("sfx_channel").ToLower(); string singleplay = reader.GetAttribute("single_play"); if (singleplay.Equals("0")) { if (sfxchannel.Equals("4")) { channel4Active = true; outFile.WriteLine(" PlayBGM( 1, \"" + sfxfile + "\", 128, 0 );\r\n"); } else if (sfxchannel.Equals("7")) { channel7Active = true; outFile.WriteLine(" PlayBGM( 0, \"" + sfxfile + "\", 128, 0 );\r\n"); } if (!bgmFilesList.Contains(sfxfile)) { bgmFilesList.Add(sfxfile); } } else { outFile.WriteLine(" PlaySE(3, \"" + sfxfile + "\", 256, 64);\r\n"); if (!seFilesList.Contains(sfxfile)) { seFilesList.Add(sfxfile); } } } else if (type.Equals("CHANNEL_FADE")) { string sfxchannel = reader.GetAttribute("channel").ToLower(); if (sfxchannel.Equals("4") && channel4Active) { channel4Active = false; outFile.WriteLine(" FadeOutBGM(1, 200, TRUE);\r\n"); } else if (sfxchannel.Equals("7") && channel7Active) { channel7Active = false; outFile.WriteLine(" FadeOutBGM(0, 200, TRUE);\r\n"); } } else if (type.Equals("BGM_PLAY")) { string bgmfile = reader.GetAttribute("bgm_file").ToLower(); bgmActive = true; outFile.WriteLine(" PlayBGM(2, \"" + bgmfile + "\", 128, 0);\r\n"); if (!bgmFilesList.Contains(bgmfile)) { bgmFilesList.Add(bgmfile); } } else if (type.Equals("BGM_FADE")) { if (bgmActive) { bgmActive = false; outFile.WriteLine(" FadeOutBGM(2, 200, FALSE);\r\n"); } } else if (type.Equals("SPRITE_LOAD")) { string slot = reader.GetAttribute("slot"); string file = reader.GetAttribute("file"); string actualFile = ""; bool isZoomSprite = file.StartsWith("l/"); file = file.Replace("_", ""); file = file.Replace("m/", ""); file = file.ToLower(); spriteMapping.TryGetValue(file, out actualFile); if (activeMode == colorMode.Night) { actualFile = "night/" + actualFile; } else if (activeMode == colorMode.Sunset) { actualFile = "sunset/" + actualFile; } else { actualFile = "normal/" + actualFile; } if (isZoomSprite) { actualFile = "portrait/" + actualFile; } else { actualFile = "sprite/" + actualFile; } if (slot.Equals("5")) { slot5Active = true; outFile.WriteLine(" DrawBustshot( 3, \"" + actualFile + "\", 160, 0, 0, FALSE, 0, 0, 0, 0, 0, 0, 0, 20, 200, TRUE );\r\n"); } else if (slot.Equals("6")) { slot6Active = true; outFile.WriteLine(" DrawBustshot( 4, \"" + actualFile + "\", 0, 0, 0, FALSE, 0, 0, 0, 0, 0, 0, 0, 19, 200, TRUE );\r\n"); } else if (slot.Equals("7")) { slot7Active = true; outFile.WriteLine(" DrawBustshot( 5, \"" + actualFile + "\", -160, 0, 0, FALSE, 0, 0, 0, 0, 0, 0, 0, 18, 200, TRUE );\r\n"); } if (!cgFilesList.Contains(actualFile)) { cgFilesList.Add(actualFile); } } else if (type.Equals("REMOVE_SLOT")) { string slot = reader.GetAttribute("slot"); if (slot.Equals("5") && slot5Active) { outFile.WriteLine(" FadeBustshot(3, FALSE, 0, 0, 0, 0, 200, TRUE);\r\n"); slot5Active = false; } else if (slot.Equals("6") && slot6Active) { outFile.WriteLine(" FadeBustshot(4, FALSE, 0, 0, 0, 0, 200, TRUE);\r\n"); slot6Active = false; } if (slot.Equals("7") && slot7Active) { outFile.WriteLine(" FadeBustshot(5, FALSE, 0, 0, 0, 0, 200, TRUE);\r\n"); slot7Active = false; } } else if (type.Equals("REGISTER_MODIFY")) { string data = reader.GetAttribute("data"); string[] splitData = data.Split('='); if (splitData[0].Equals("reg17")) { reg17 = splitData[1]; } else if (splitData[0].Equals("reg18")) { reg18 = splitData[1]; } if (reg17.Equals("196u;") && reg18.Equals("196u;")) { activeMode = colorMode.Night; } else if (reg17.Equals("255u;") && reg18.Equals("232u;")) { activeMode = colorMode.Sunset; } else { activeMode = colorMode.Regular; } } lineNum++; outFile.Flush(); textOnlyFile.Flush(); } OutputFileFooter(outFile); outFile.Flush(); filesUsed.WriteLine("Images needed in CG directory:\r\n"); cgFilesList.Sort(); foreach (String s in cgFilesList) { String actualFile = ""; spriteMapping.TryGetValue(s, out actualFile); if (actualFile == null) { actualFile = s; } bool found = false; foreach (String s2 in Directory.GetFiles(CGfolder, "*", SearchOption.AllDirectories)) { int lastSlash = s2.LastIndexOf('\\'); String formattedFileName = s2.Substring(lastSlash + 1); formattedFileName = formattedFileName.Substring(0, formattedFileName.Length - 4); if (formattedFileName.ToLower().Equals(actualFile.ToLower())) { found = true; break; } } if (!found) { String CGfolder2 = CGfolder + "\\sprite"; foreach (String s2 in Directory.GetFiles(CGfolder2, "*", SearchOption.AllDirectories)) { int lastSlash = s2.IndexOf("\\sprite"); String formattedFileName = s2.Substring(lastSlash + 1); formattedFileName = formattedFileName.Substring(0, formattedFileName.Length - 4); if (formattedFileName.ToLower().Equals(actualFile.ToLower())) { found = true; break; } } } if (!found) { if (actualFile == null) { filesUsed.WriteLine(s); } else { filesUsed.WriteLine(actualFile); } } } filesUsed.WriteLine("Music needed in BGM directory:\r\n"); bgmFilesList.Sort(); foreach (String s in bgmFilesList) { filesUsed.WriteLine(s); } filesUsed.WriteLine("Audio needed in SE directory:\r\n"); seFilesList.Sort(); foreach (String s in seFilesList) { filesUsed.WriteLine(s); } filesUsed.Flush(); filesUsed.Close(); outFile.Close(); textOnlyFile.Close(); reader.Close(); }