public static string[] Split(byte[] data) { return(SCommon.Split(data).Select(bLine => Encoding.UTF8.GetString(bLine)).ToArray()); }
public static void Load() { if (!File.Exists(DDConsts.SaveDataFile)) { return; } byte[][] blocks = SCommon.Split(DDJammer.Decode(File.ReadAllBytes(DDConsts.SaveDataFile))); int bc = 0; string[] lines = DDUtils.Split(blocks[bc++]); int c = 0; if (lines[c++] != ProcMain.APP_IDENT) { throw new DDError(); } if (lines[c++] != ProcMain.APP_TITLE) { throw new DDError(); } // アプリのアップデートによって項目の更新・増減があっても処理を続行するように try ~ catch しておく。 try // Donut3 のセーブデータ { // TODO int.Parse -> IntTools.ToInt DDGround.RealScreen_W = int.Parse(lines[c++]); DDGround.RealScreen_H = int.Parse(lines[c++]); DDGround.RealScreenDraw_L = int.Parse(lines[c++]); DDGround.RealScreenDraw_T = int.Parse(lines[c++]); DDGround.RealScreenDraw_W = int.Parse(lines[c++]); DDGround.RealScreenDraw_H = int.Parse(lines[c++]); DDGround.UnfullScreen_W = int.Parse(lines[c++]); DDGround.UnfullScreen_H = int.Parse(lines[c++]); DDGround.MusicVolume = long.Parse(lines[c++]) / (double)SCommon.IMAX; DDGround.SEVolume = long.Parse(lines[c++]) / (double)SCommon.IMAX; DDInput.DIR_2.BtnId = int.Parse(lines[c++]); DDInput.DIR_4.BtnId = int.Parse(lines[c++]); DDInput.DIR_6.BtnId = int.Parse(lines[c++]); DDInput.DIR_8.BtnId = int.Parse(lines[c++]); DDInput.A.BtnId = int.Parse(lines[c++]); DDInput.B.BtnId = int.Parse(lines[c++]); DDInput.C.BtnId = int.Parse(lines[c++]); DDInput.D.BtnId = int.Parse(lines[c++]); DDInput.E.BtnId = int.Parse(lines[c++]); DDInput.F.BtnId = int.Parse(lines[c++]); DDInput.L.BtnId = int.Parse(lines[c++]); DDInput.R.BtnId = int.Parse(lines[c++]); DDInput.PAUSE.BtnId = int.Parse(lines[c++]); DDInput.START.BtnId = int.Parse(lines[c++]); DDInput.DIR_2.KeyId = int.Parse(lines[c++]); DDInput.DIR_4.KeyId = int.Parse(lines[c++]); DDInput.DIR_6.KeyId = int.Parse(lines[c++]); DDInput.DIR_8.KeyId = int.Parse(lines[c++]); DDInput.A.KeyId = int.Parse(lines[c++]); DDInput.B.KeyId = int.Parse(lines[c++]); DDInput.C.KeyId = int.Parse(lines[c++]); DDInput.D.KeyId = int.Parse(lines[c++]); DDInput.E.KeyId = int.Parse(lines[c++]); DDInput.F.KeyId = int.Parse(lines[c++]); DDInput.L.KeyId = int.Parse(lines[c++]); DDInput.R.KeyId = int.Parse(lines[c++]); DDInput.PAUSE.KeyId = int.Parse(lines[c++]); DDInput.START.KeyId = int.Parse(lines[c++]); DDGround.RO_MouseDispMode = int.Parse(lines[c++]) != 0; // 新しい項目をここへ追加... } catch (Exception e) { ProcMain.WriteLog(e); } Load_Delay = () => { lines = DDUtils.Split(blocks[bc++]); c = 0; try // アプリ固有のセーブデータ { //DDUtils.Noop(lines[c++]); // Dummy //DDUtils.Noop(lines[c++]); // Dummy //DDUtils.Noop(lines[c++]); // Dummy Ground.I.NovelMessageSpeed = int.Parse(lines[c++]); Ground.I.ショットのタイミング = (Ground.ショットのタイミング_e) int.Parse(lines[c++]); // 新しい項目をここへ追加... } catch (Exception e) { ProcMain.WriteLog(e); } Load_Delay = () => { }; // reset }; }