示例#1
0
        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;
            }
        }
示例#2
0
		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;
			}
		}