public RewardGump(TextDefinition title, IRewardEntry[] rewards, int points, RewardPickedHandler onPicked) : base(250, 50) { Title = title; Rewards = rewards; Points = points; OnPicked = onPicked; AddPage(0); AddImage(0, 0, 0x1F40); AddImageTiled(20, 37, 300, 308, 0x1F42); AddImage(20, 325, 0x1F43); AddImage(35, 8, 0x39); AddImageTiled(65, 8, 257, 10, 0x3A); AddImage(290, 8, 0x3B); AddImage(32, 33, 0x2635); AddImageTiled(70, 55, 230, 2, 0x23C5); if (Title.String != null) { AddHtml(70, 35, 270, 20, Title.String); } else if (Title.Number != 0) { AddHtmlLocalized(70, 35, 270, 20, Title.Number, 1); } AddHtmlLocalized(50, 65, 150, 20, 1072843, 1); // Your Reward Points: AddLabel(230, 65, 0x64, Points.ToString()); AddImageTiled(35, 85, 270, 2, 0x23C5); AddHtmlLocalized(35, 90, 270, 20, 1072844, 1); // Please Choose a Reward: AddPage(1); var offset = 110; var page = 1; for (var i = 0; i < Rewards.Length; ++i) { var entry = Rewards[i]; var bounds = ItemBounds.Table[entry.ItemID]; var height = Math.Max(36, bounds.Height); if (offset + height > 320) { AddHtmlLocalized(240, 335, 60, 20, 1072854, 1); // <div align=right>Next</div> AddButton(300, 335, 0x15E1, 0x15E5, 51, GumpButtonType.Page, page + 1); AddPage(++page); AddButton(150, 335, 0x15E3, 0x15E7, 52, GumpButtonType.Page, page - 1); AddHtmlLocalized(170, 335, 60, 20, 1074880, 1); // Previous offset = 110; } var available = entry.Price <= Points; var half = offset + height / 2; if (available) { AddButton(35, half - 6, 0x837, 0x838, 100 + i); } AddItem( 83 - bounds.Width / 2 - bounds.X, half - bounds.Height / 2 - bounds.Y, entry.ItemID, available ? entry.Hue : 995 ); if (entry.Tooltip != 0) { AddTooltip(entry.Tooltip); } AddLabel(133, half - 10, available ? 0x64 : 0x21, entry.Price.ToString()); if (entry.Description != null) { if (entry.Description.String != null) { AddHtml(190, offset, 114, height, entry.Description.String); } else if (entry.Description.Number != 0) { AddHtmlLocalized(190, offset, 114, height, entry.Description.Number, 1); } } offset += height + 10; } }
public RewardGump( TextDefinition title, IRewardEntry[] rewards, int points, RewardPickedHandler onPicked ) : base( 250, 50 ) { m_Title = title; m_Rewards = rewards; m_Points = points; m_OnPicked = onPicked; AddPage( 0 ); AddImage( 0, 0, 0x1F40 ); AddImageTiled( 20, 37, 300, 308, 0x1F42 ); AddImage( 20, 325, 0x1F43 ); AddImage( 35, 8, 0x39 ); AddImageTiled( 65, 8, 257, 10, 0x3A ); AddImage( 290, 8, 0x3B ); AddImage( 32, 33, 0x2635 ); AddImageTiled( 70, 55, 230, 2, 0x23C5 ); if ( m_Title.String != null ) AddHtml( 70, 35, 270, 20, m_Title.String, false, false ); else if ( m_Title.Number != 0 ) AddHtmlLocalized( 70, 35, 270, 20, m_Title.Number, 1, false, false ); AddHtmlLocalized( 50, 65, 150, 20, 1072843, 1, false, false ); // Your Reward Points: AddLabel( 230, 65, 0x64, m_Points.ToString() ); AddImageTiled( 35, 85, 270, 2, 0x23C5 ); AddHtmlLocalized( 35, 90, 270, 20, 1072844, 1, false, false ); // Please Choose a Reward: AddPage( 1 ); int offset = 110; int page = 1; for ( int i = 0; i < m_Rewards.Length; ++i ) { IRewardEntry entry = m_Rewards[i]; Rectangle2D bounds = ItemBounds.Table[entry.ItemID]; int height = Math.Max( 36, bounds.Height ); if ( offset + height > 320 ) { AddHtmlLocalized( 240, 335, 60, 20, 1072854, 1, false, false ); // <div align=right>Next</div> AddButton( 300, 335, 0x15E1, 0x15E5, 51, GumpButtonType.Page, page + 1 ); AddPage( ++page ); AddButton( 150, 335, 0x15E3, 0x15E7, 52, GumpButtonType.Page, page - 1 ); AddHtmlLocalized( 170, 335, 60, 20, 1074880, 1, false, false ); // Previous offset = 110; } bool available = ( entry.Price <= m_Points ); int half = offset + ( height / 2 ); if ( available ) AddButton( 35, half - 6, 0x837, 0x838, 100 + i, GumpButtonType.Reply, 0 ); AddItem( 83 - ( bounds.Width / 2 ) - bounds.X, half - ( bounds.Height / 2 ) - bounds.Y, entry.ItemID, available ? entry.Hue : 995 ); if ( entry.Tooltip != 0 ) AddTooltip( entry.Tooltip ); AddLabel( 133, half - 10, available ? 0x64 : 0x21, entry.Price.ToString() ); if ( entry.Description != null ) { if ( entry.Description.String != null ) AddHtml( 190, offset, 114, height, entry.Description.String, false, false ); else if ( entry.Description.Number != 0 ) AddHtmlLocalized( 190, offset, 114, height, entry.Description.Number, 1, false, false ); } offset += height + 10; } }