//Skill + テキストを書くルーチン Size DrawSkillAndText(ListBox lb, int index, Graphics g, Rectangle listbounds, bool isWithDraw) { if (index < 0 || index >= lb.Items.Count) { return(new Size(listbounds.X, listbounds.Y)); } string text = lb.Items[index].ToString(); SolidBrush brush = new SolidBrush(lb.ForeColor); Font normalFont = lb.Font; Rectangle bounds = listbounds; int textmargineY = (ListBoxEx.OWNER_DRAW_ICON_SIZE - (int)lb.Font.Height) / 2; Bitmap bitmap = SkillConfigSkillSystemForm.DrawIcon((uint)index, this.IconBaseAddress); U.MakeTransparent(bitmap); //アイコンを描く. Rectangle b = bounds; b.Width = ListBoxEx.OWNER_DRAW_ICON_SIZE; b.Height = ListBoxEx.OWNER_DRAW_ICON_SIZE; bounds.X += U.DrawPicture(bitmap, g, isWithDraw, b); bitmap.Dispose(); //テキストを描く. b = bounds; b.Y += textmargineY; bounds.X += U.DrawText(text, g, normalFont, brush, isWithDraw, b); bounds.Y += ListBoxEx.OWNER_DRAW_ICON_SIZE; brush.Dispose(); return(new Size(bounds.X, bounds.Y)); }
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.SetToolTip(buttons[skillCount], skillCaption); skillCount++; if (skillCount >= buttons.Length) { break; } } return(skillCount); }
private void N1_B1_ValueChanged(object sender, EventArgs e) { N1_SKILLICON.Image = SkillConfigSkillSystemForm.DrawIcon((uint)this.N1_B1.Value, this.IconBaseAddress); N1_SKILLTEXT.Text = SkillConfigSkillSystemForm.GetSkillText((uint)this.N1_B1.Value, this.TextBaseAddress); N1_SKILLNAME.Text = U.at(this.SkillNames, (uint)this.N1_B1.Value); }
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.SetToolTip(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 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); }