Esempio n. 1
0
        //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);
        }
Esempio n. 5
0
        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);
        }