public static int MakeClassSkillButtons(uint cid, Button[] buttons, ToolTipEx tooltip) { uint[] pointer = FindSkillFE8NVer2IconPointers(); if (pointer == null) { return(0); } if (pointer.Length < 5) { return(0); } InputFormRef InputFormRef = Init(null, pointer[4]); InputFormRef N2_InputFormRef = N2_Init(null); int skillCount = 0; List <U.AddrResult> list = InputFormRef.MakeList(); for (int i = 1; i < list.Count; i++) { uint classAddr = Program.ROM.p32(list[i].addr + 8); if (!U.isSafetyOffset(classAddr)) { continue; } bool found = false; N2_InputFormRef.ReInit(classAddr); List <U.AddrResult> classList = N2_InputFormRef.MakeList(); for (int n = 0; n < classList.Count; n++) { uint classID = Program.ROM.u8(classList[n].addr); if (cid == classID) { found = true; break; } } if (!found) { continue; } uint textid = Program.ROM.u16(list[i].addr + 0); buttons[skillCount].BackgroundImage = DrawSkillIconLow((uint)i, pointer[4]); buttons[skillCount].Tag = (uint)i; tooltip.SetToolTipOverraide(buttons[skillCount], TextForm.Direct(textid)); skillCount++; if (skillCount >= buttons.Length) { break; } } return(skillCount); }
public void ApplyFilter(string search, bool isJP, ToolTipEx tooltip) { this.LastSearchWord = search; if (search == "" || this.PatchButton.Visible) { this.PatchLabelName.Hide(); for (int i = 0; i < Buttons.Length; i++) { this.Buttons[i].Hide(); } return; } if (Patchs == null) { Patchs = PatchForm.ScanPatch(); } int foundCount = 0; for (int i = 0; i < this.Patchs.Length; i++) { PatchForm.PatchSt patch = this.Patchs[i]; if (!U.StrStrEx(patch.SearchData, search, isJP)) {//フィルターで消す. continue; } Button b = Buttons[foundCount]; b.Text = patch.Name; string info = U.at(patch.Param, "INFO"); tooltip.SetToolTipOverraide(b, U.nl2br(info)); b.Show(); foundCount++; if (foundCount == 1) {//ボタンがあるならラベルも出す. this.PatchLabelName.Show(); } if (foundCount >= Buttons.Length) { return; } } for (int n = foundCount; n < Buttons.Length; n++) { Button b = Buttons[n]; b.Hide(); } }
public static int MakeUnitSkillButtons(uint uid, Button[] buttons, ToolTipEx tooltip) { uint iconP = SkillConfigSkillSystemForm.FindIconPointer(); uint textP = SkillConfigSkillSystemForm.FindTextPointer(); uint assignUnitP = SkillConfigSkillSystemForm.FindAssignPersonalSkillPointer(); if (iconP == U.NOT_FOUND) { return(0); } if (textP == U.NOT_FOUND) { return(0); } if (assignUnitP == U.NOT_FOUND) { return(0); } InputFormRef InputFormRef = Init(null, assignUnitP); List <U.AddrResult> list = InputFormRef.MakeList(); if (uid < 0 || uid >= list.Count) { return(0); } uint classaddr = list[(int)uid].addr; if (!U.isSafetyOffset(classaddr)) { return(0); } uint b0 = Program.ROM.u8(classaddr); if (b0 <= 0) { return(0); } uint icon = Program.ROM.p32(iconP); uint text = Program.ROM.p32(textP); int skillCount = 0; { Bitmap bitmap = SkillConfigSkillSystemForm.DrawIcon((uint)b0, icon); U.MakeTransparent(bitmap); buttons[0].BackgroundImage = bitmap; buttons[0].Tag = b0; string skillCaption = SkillConfigSkillSystemForm.GetSkillText((uint)b0, text); tooltip.SetToolTipOverraide(buttons[skillCount], skillCaption); } skillCount++; //レベルアップで覚えるスキル. Dictionary <uint, string> skillNames = new Dictionary <uint, string>(); InputFormRef N1_InputFormRef = N1_Init(null, skillNames); uint assignLevelUpP = SkillConfigSkillSystemForm.FindAssignUnitLevelUpSkillPointer(); if (assignLevelUpP == U.NOT_FOUND) {//昔のバージョンには、存在しなかった return(skillCount); } SkillAssignmentClassSkillSystemForm.MakeUnitSkillButtonsList(uid, buttons, tooltip, assignLevelUpP, icon, text, skillCount); return(skillCount); }
public static int MakeUnitSkillButtonsList(uint id, Button[] buttons, ToolTipEx tooltip, uint assignLevelUpP, uint icon, uint text, int skillCount) { uint assignLevelUp = Program.ROM.p32(assignLevelUpP); if (!U.isSafetyOffset(assignLevelUp)) { return(skillCount); } uint assignLevelUpAddr = assignLevelUp + (id * 4); if (!U.isSafetyOffset(assignLevelUpAddr)) { return(skillCount); } uint levelupList = Program.ROM.p32(assignLevelUpAddr); if (!U.isSafetyOffset(levelupList)) { return(skillCount); } //レベルアップで覚えるスキル. Dictionary <uint, string> skillNames = new Dictionary <uint, string>(); InputFormRef N1_InputFormRef = N1_Init(null, skillNames); N1_InputFormRef.ReInit(levelupList); List <U.AddrResult> levelupSkillList = N1_InputFormRef.MakeList(); for (int i = 0; i < levelupSkillList.Count; i++) { uint levelUpSkillAddr = levelupSkillList[i].addr; uint level = Program.ROM.u8(levelUpSkillAddr + 0); uint skill = Program.ROM.u8(levelUpSkillAddr + 1); if (skill <= 0) { continue; } Bitmap bitmap = SkillConfigSkillSystemForm.DrawIcon(skill, icon); U.MakeTransparent(bitmap); buttons[skillCount].BackgroundImage = bitmap; buttons[skillCount].Tag = skill; string skillCaption = SkillConfigSkillSystemForm.GetSkillText(skill, text); if (level > 0 && level < 0xFF) { skillCaption = skillCaption + "\r\n" + R._("(Lv{0}で習得)", level); } tooltip.SetToolTipOverraide(buttons[skillCount], skillCaption); skillCount++; if (skillCount >= buttons.Length) { break; } } return(skillCount); }
public static int MakeClassSkillButtons(uint cid, Button[] buttons, ToolTipEx tooltip) { uint iconP = SkillConfigSkillSystemForm.FindIconPointer(); uint textP = SkillConfigSkillSystemForm.FindTextPointer(); uint assignClassP = SkillConfigSkillSystemForm.FindAssignClassSkillPointer(); uint assignLevelUpP = SkillConfigSkillSystemForm.FindAssignClassLevelUpSkillPointer(); if (iconP == U.NOT_FOUND) { return(0); } if (textP == U.NOT_FOUND) { return(0); } if (assignClassP == U.NOT_FOUND) { return(0); } if (assignLevelUpP == U.NOT_FOUND) { return(0); } InputFormRef InputFormRef = Init(null, assignClassP); List <U.AddrResult> list = InputFormRef.MakeList(); if (cid >= list.Count) { return(0); } uint classaddr = list[(int)cid].addr; if (!U.isSafetyOffset(classaddr)) { return(0); } uint icon = Program.ROM.p32(iconP); uint text = Program.ROM.p32(textP); uint assignLevelUp = Program.ROM.p32(assignLevelUpP); int skillCount = 0; uint b0 = Program.ROM.u8(classaddr); if (b0 > 0) {//クラスの基本スキル. Bitmap bitmap = SkillConfigSkillSystemForm.DrawIcon((uint)b0, icon); U.MakeTransparent(bitmap); buttons[0].BackgroundImage = bitmap; buttons[0].Tag = b0; string skillCaption = SkillConfigSkillSystemForm.GetSkillText((uint)b0, text); tooltip.SetToolTipOverraide(buttons[skillCount], skillCaption); skillCount++; } MakeUnitSkillButtonsList(cid, buttons, tooltip, assignLevelUpP, icon, text, skillCount); return(skillCount); }
public static int MakeUnitSkillButtons(uint uid, Button[] buttons, ToolTipEx tooltip) { uint unitAddr = UnitForm.GetUnitAddr(uid - 1); if (unitAddr == U.NOT_FOUND) { return(0); } uint b38 = Program.ROM.u8(unitAddr + 38); //自軍 uint b39 = Program.ROM.u8(unitAddr + 39); //友軍 uint b49 = Program.ROM.u8(unitAddr + 49); //敵軍 if (b38 <= 0 && b39 <= 0 && b49 <= 0) {//なし return(0); } uint[] pointer = FindSkillFE8NVer2IconPointers(); if (pointer == null) { return(0); } if (pointer.Length < 5) { return(0); } InputFormRef InputFormRef = Init(null, pointer[4]); InputFormRef N1_InputFormRef = N1_Init(null); int skillCount = 0; List <U.AddrResult> list = InputFormRef.MakeList(); for (int i = 1; i < list.Count; i++) { if (b38 == i || b39 == i || b49 == i) { uint textid = Program.ROM.u16(list[i].addr + 0); string name = TextForm.Direct(textid); if (b38 == i) { name += "\r\n" + R._("(自軍時のみ)"); } if (b39 == i) { name += "\r\n" + R._("(敵軍時のみ)"); } if (b49 == i) { name += "\r\n" + R._("(友軍時のみ)"); } buttons[skillCount].BackgroundImage = DrawSkillIconLow((uint)i, pointer[4]); buttons[skillCount].Tag = (uint)i; tooltip.SetToolTipOverraide(buttons[skillCount], name); skillCount++; if (skillCount >= buttons.Length) { break; } } } return(skillCount); }