public override void OnResponse( NetState sender, RelayInfo info )
{
if ( info.ButtonID <= 0 )
return; // Canceled
int buttonID = info.ButtonID - 1;
int type = buttonID % 7;
int index = buttonID / 7;
CraftSystem system = m_CraftSystem;
CraftGroupCol groups = system.CraftGroups;
CraftContext context = system.GetContext( m_From );
switch ( type )
{
case 0: // Show group
{
if ( context == null )
break;
if ( index >= 0 && index < groups.Count )
{
context.LastGroupIndex = index;
m_From.SendGump( new CraftGump( m_From, system, m_Tool, null ) );
}
break;
}
case 1: // Create item
{
if ( context == null )
break;
int groupIndex = context.LastGroupIndex;
if ( groupIndex >= 0 && groupIndex < groups.Count )
{
CraftGroup group = groups.GetAt( groupIndex );
if ( index >= 0 && index < group.CraftItems.Count )
CraftItem( group.CraftItems.GetAt( index ) );
}
break;
}
case 2: // Item details
{
if ( context == null )
break;
int groupIndex = context.LastGroupIndex;
if ( groupIndex >= 0 && groupIndex < groups.Count )
{
CraftGroup group = groups.GetAt( groupIndex );
if ( index >= 0 && index < group.CraftItems.Count )
m_From.SendGump( new CraftGumpItem( m_From, system, group.CraftItems.GetAt( index ), m_Tool ) );
}
break;
}
case 3: // Create item (last 10)
{
if ( context == null )
break;
List<CraftItem> lastTen = context.Items;
if ( index >= 0 && index < lastTen.Count )
CraftItem( lastTen[index] );
break;
}
case 4: // Item details (last 10)
{
if ( context == null )
break;
List<CraftItem> lastTen = context.Items;
if ( index >= 0 && index < lastTen.Count )
m_From.SendGump( new CraftGumpItem( m_From, system, lastTen[index], m_Tool ) );
break;
}
case 5: // Resource selected
{
if ( m_Page == CraftPage.PickResource && index >= 0 && index < system.CraftSubRes.Count )
{
int groupIndex = ( context == null ? -1 : context.LastGroupIndex );
CraftSubRes res = system.CraftSubRes.GetAt( index );
if ( m_From.Skills[system.MainSkill].Base < res.RequiredSkill )
{
m_From.SendGump( new CraftGump( m_From, system, m_Tool, res.Message ) );
}
else
{
if ( context != null )
context.LastResourceIndex = index;
m_From.SendGump( new CraftGump( m_From, system, m_Tool, null ) );
}
}
else if ( m_Page == CraftPage.PickResource2 && index >= 0 && index < system.CraftSubRes2.Count )
{
int groupIndex = ( context == null ? -1 : context.LastGroupIndex );
CraftSubRes res = system.CraftSubRes2.GetAt( index );
if ( m_From.Skills[system.MainSkill].Base < res.RequiredSkill )
{
m_From.SendGump( new CraftGump( m_From, system, m_Tool, res.Message ) );
}
else
{
if ( context != null )
context.LastResourceIndex2 = index;
m_From.SendGump( new CraftGump( m_From, system, m_Tool, null ) );
}
}
break;
}
case 6: // Misc. buttons
{
switch ( index )
{
case 0: // Resource selection
{
if ( system.CraftSubRes.Init )
m_From.SendGump( new CraftGump( m_From, system, m_Tool, null, CraftPage.PickResource ) );
break;
}
case 1: // Smelt item
{
if ( system.Resmelt )
Resmelt.Do( m_From, system, m_Tool );
break;
}
case 2: // Make last
{
if ( context == null )
break;
CraftItem item = context.LastMade;
if ( item != null )
CraftItem( item );
else
m_From.SendGump( new CraftGump( m_From, m_CraftSystem, m_Tool, 1044165, m_Page ) ); // You haven't made anything yet.
break;
}
case 3: // Last 10
{
if ( context == null )
break;
context.LastGroupIndex = 501;
m_From.SendGump( new CraftGump( m_From, system, m_Tool, null ) );
break;
}
case 4: // Toggle use resource hue
{
if ( context == null )
break;
context.DoNotColor = !context.DoNotColor;
m_From.SendGump( new CraftGump( m_From, m_CraftSystem, m_Tool, null, m_Page ) );
break;
}
case 5: // Repair item
{
if ( system.Repair )
Repair.Do( m_From, system, m_Tool );
break;
}
case 6: // Toggle mark option
{
if ( context == null || !system.MarkOption )
break;
switch ( context.MarkOption )
{
case CraftMarkOption.MarkItem: context.MarkOption = CraftMarkOption.DoNotMark; break;
case CraftMarkOption.DoNotMark: context.MarkOption = CraftMarkOption.PromptForMark; break;
case CraftMarkOption.PromptForMark: context.MarkOption = CraftMarkOption.MarkItem; break;
}
m_From.SendGump( new CraftGump( m_From, m_CraftSystem, m_Tool, null, m_Page ) );
break;
}
case 7: // Resource selection 2
{
if ( system.CraftSubRes2.Init )
m_From.SendGump( new CraftGump( m_From, system, m_Tool, null, CraftPage.PickResource2 ) );
break;
}
}
break;
}
}
}
}