示例#1
0
 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;
     }
 }
示例#2
0
 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();
        }