123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- 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;
- /// <summary>
- /// マクロの内容
- /// </summary>
- static string[] macro = new string[MaxMacro];
- /// <summary>
- /// マクロキー
- /// </summary>
- 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];
- }
- }
- }
|