RunUO/Scripts/Engines/Virtues/VirtueInfoGump.cs

110 lines
No EOL
3.2 KiB
C#

using System;
using Server;
using Server.Gumps;
using Server.Network;
namespace Server
{
public class VirtueInfoGump : Gump
{
private Mobile m_Beholder;
private int m_Desc;
private string m_Page;
private VirtueName m_Virtue;
public VirtueInfoGump( Mobile beholder, VirtueName virtue, int description ) : this( beholder, virtue, description, null )
{
}
public VirtueInfoGump( Mobile beholder, VirtueName virtue, int description, string webPage ) : base( 0, 0 )
{
m_Beholder = beholder;
m_Virtue = virtue;
m_Desc = description;
m_Page = webPage;
int value = beholder.Virtues.GetValue( (int)virtue );
AddPage( 0 );
AddImage( 30, 40, 2080 );
AddImage( 47, 77, 2081 );
AddImage( 47, 147, 2081 );
AddImage( 47, 217, 2081 );
AddImage( 47, 267, 2083 );
AddImage( 70, 213, 2091 );
AddPage( 1 );
int maxValue = VirtueHelper.GetMaxAmount( m_Virtue );
int valueDesc;
int dots;
if( value < 4000 )
dots = value / 400;
else if( value < 10000 )
dots = (value - 4000) / 600;
else if( value < maxValue )
dots = (value - 10000) / ((maxValue-10000)/10);
else
dots = 10;
for ( int i = 0; i < 10; ++i )
AddImage( 95 + (i * 17), 50, i < dots ? 2362 : 2360 );
if( value < 1 )
valueDesc = 1052044; // You have not started on the path of this Virtue.
else if( value < 400 )
valueDesc = 1052045; // You have barely begun your journey through the path of this Virtue.
else if( value < 2000 )
valueDesc = 1052046; // You have progressed in this Virtue, but still have much to do.
else if( value < 3600 )
valueDesc = 1052047; // Your journey through the path of this Virtue is going well.
else if( value < 4000 )
valueDesc = 1052048; // You feel very close to achieving your next path in this Virtue.
else if( dots < 1 )
valueDesc = 1052049; // You have achieved a path in this Virtue.
else if( dots < 9 )
valueDesc = 1052047; // Your journey through the path of this Virtue is going well.
else if( dots < 10 )
valueDesc = 1052048; // You feel very close to achieving your next path in this Virtue.
else
valueDesc = 1052050; // You have achieved the highest path in this Virtue.
AddHtmlLocalized( 157, 73, 200, 40, 1051000 + (int)virtue, false, false );
AddHtmlLocalized( 75, 95, 220, 140, description, false, false );
AddHtmlLocalized( 70, 224, 229, 60, valueDesc, false, false );
AddButton( 65, 277, 1209, 1209, 1, GumpButtonType.Reply, 0 );
AddButton( 280, 43, 4014, 4014, 2, GumpButtonType.Reply, 0 );
AddHtmlLocalized( 83, 275, 400, 40, (webPage == null) ? 1052055 : 1052052, false, false ); // This virtue is not yet defined. OR -click to learn more (opens webpage)
}
public override void OnResponse( NetState state, RelayInfo info )
{
switch ( info.ButtonID )
{
case 1:
{
m_Beholder.SendGump( new VirtueInfoGump( m_Beholder, m_Virtue, m_Desc, m_Page ) );
if( m_Page != null )
state.Send( new LaunchBrowser( m_Page ) ); //No message about web browser starting on OSI
break;
}
case 2:
{
m_Beholder.SendGump( new VirtueStatusGump( m_Beholder ) );
break;
}
}
}
}
}