Exemplo n.º 1
0
        private void LoadFontSheet(string stdDir)
        {
            Console.WriteLine("Loading font sheet...");

            string fontSheetPath = Path.Join(stdDir, "PSP_GAME", "USRDIR", "font", "SYS_RunTime.uvr");

            using (Stream stream = File.OpenRead(fontSheetPath)) {
                GBIX gbix = new GBIX(stream);
                KONTextRepacker.SetFontImage(((UVRT)gbix.Content).ToBitmap());
            }
        }
Exemplo n.º 2
0
        private byte[] RewriteFile(string translationDir, string path, byte[] data)
        {
            if (_rewriteCache.ContainsKey(path))
            {
                return(_rewriteCache[path]);
            }

            using (Stream stream = new MemoryStream(data)) {
                byte[] rewritten = null;
                if (IsFmdx(path))
                {
                    FMDX fmdx     = new FMDX(stream);
                    bool modified = false;
                    foreach (FMDX.File file in fmdx.Files)
                    {
                        if (ShouldRewriteFile(translationDir, file.Path))
                        {
                            file.Data = RewriteFile(translationDir, file.Path, file.Data);
                            modified  = true;
                        }
                    }

                    if (modified)
                    {
                        using (MemoryStream outStream = new MemoryStream()) {
                            fmdx.Write(outStream);
                            rewritten = outStream.ToArray();
                        }
                    }
                }
                else
                {
                    string replacementPath = GetReplacementPath(translationDir, path);
                    if (File.Exists(replacementPath))
                    {
                        if (path.EndsWith(".uvr"))
                        {
                            Bitmap bitmap = new Bitmap(Image.FromFile(replacementPath));

                            GBIX gbix = new GBIX(stream);
                            UVRT uvrt = (UVRT)gbix.Content;
                            gbix.Content = new UVRT(bitmap, uvrt.Format, uvrt.Type, uvrt.MipLevels);

                            using (MemoryStream outStream = new MemoryStream()) {
                                gbix.Write(outStream);
                                rewritten = outStream.ToArray();
                            }
                        }
                        else if (path.EndsWith(".tts"))
                        {
                            string[] lines = File.ReadAllLines(replacementPath);
                            rewritten = KONTextRepacker.RewriteTTS(data, lines);
                        }
                        else
                        {
                            string[] lines = File.ReadAllLines(replacementPath);
                            rewritten = KONTextRepacker.RewriteSystemText(data, lines);
                        }
                    }
                }

                if (rewritten != null)
                {
                    _rewriteCache[path] = rewritten;
                }

                return(rewritten);
            }
        }