using System; using System.IO; using NTERA.EmuEra.Game.EraEmu.Sub; namespace NTERA.EmuEra.Game.EraEmu.Config { internal static class KeyMacro { static readonly string macroPath = Program.ExeDir + "macro.txt"; public const string gID = "グループ"; public const int MaxGroup = 10; public const int MaxFkey = 12; public const int MaxMacro = MaxFkey * MaxGroup; /// /// マクロの内容 /// static string[] macro = new string[MaxMacro]; /// /// マクロキー /// static string[] macroName = new string[MaxMacro]; static string[] groupName = new string[MaxGroup]; static bool isMacroChanged; static KeyMacro() { for (int g = 0; g < MaxGroup; g++) { groupName[g] = "マクログループ" + g + "に設定"; for (int f = 0; f < MaxFkey; f++) { int i = f + g * MaxFkey; macro[i] = ""; if (g == 0) macroName[i] = "マクロキーF" + (f + 1) + ":"; else macroName[i] = "G" + g + ":マクロキーF" + (f + 1) + ":"; } } } public static bool SaveMacro() { if (!isMacroChanged) return true; StreamWriter writer = null; try { writer = new StreamWriter(macroPath, false, Config.Encode); for (int g = 0; g < MaxGroup; g++) { writer.WriteLine(gID + g + ":" + groupName[g]); } for (int i = 0; i < MaxMacro; i++) { writer.WriteLine(macroName[i] + macro[i]); } } catch (Exception) { return false; } finally { if (writer != null) writer.Close(); } return true; } public static void LoadMacroFile(string filename) { EraStreamReader eReader = new EraStreamReader(false); if (!eReader.Open(filename)) return; try { string line = null; while ((line = eReader.ReadLine()) != null) { if ((line.Length == 0) || (line[0] == ';')) continue; if (line.StartsWith(gID)) { if (line.Length < gID.Length + 4) continue; int num = line[gID.Length] - '0'; if (num < 0 || num > 9) continue; if (line[gID.Length + 1] != ':') continue; groupName[num] = line.Substring(gID.Length + 2); } for (int i = 0; i < MaxMacro; i++) { if (line.StartsWith(macroName[i])) { macro[i] = line.Substring(macroName[i].Length); break; } } } } catch { } finally { eReader.Dispose(); } } public static void SetMacro(int FkeyNum, int groupNum, string macroStr) { isMacroChanged = true; macro[FkeyNum + groupNum * MaxFkey] = macroStr; } public static string GetMacro(int FkeyNum, int groupNum) { return macro[FkeyNum + groupNum * MaxFkey]; } public static string GetGroupName(int groupNum) { return groupName[groupNum]; } } }