public override void OnResponse(NetState sender, RelayInfo info)
{
var buttonID = info.ButtonID - 1;
var type = buttonID % TypeCount;
var index = buttonID / TypeCount;
switch (type)
{
case -1:
{
return;
}
case 1:
{
_page = 0;
if (index < 4)
{
_search.Type = (SpawnSearchType)index;
var isNumeric = int.TryParse(_search.SearchPattern, out _);
if (index == 1 && !isNumeric || index != 1 && isNumeric)
{
_search.SearchPattern = "";
}
}
else if (index == 4)
{
var entry = info.GetTextEntry(0xFFFF);
if (entry?.Text?.Length > 0)
{
_search.SearchPattern = entry.Text;
}
}
else if (index == 5 && _copy != null && _spawners?.Length > 0)
{
foreach (var spawner in _spawners)
{
CopyProperty(_copy, spawner);
}
}
else if (index == 6 && _copy != null && _spawners?.Length > 0)
{
foreach (var spawner in _spawners)
{
CopyEntry(_copy, spawner);
}
}
else if (index == 7 && _copy != null)
{
var newSpawner = new Spawner();
FullCopy(_copy, newSpawner);
newSpawner.Map = _mobile.Map;
newSpawner.Location = _mobile.Location;
newSpawner.Stop();
newSpawner.Start();
newSpawner.Respawn();
}
break;
}
//copy
case 2:
{
if (index < _spawners.Length)
{
_copy = _spawners[index];
}
break;
}
//paste props
case 3:
{
if (index < _spawners.Length && _copy != null)
{
CopyProperty(_copy, _spawners[index]);
}
break;
}
//paste entry
case 4:
{
if (index < _spawners.Length && _copy != null)
{
CopyEntry(_copy, _spawners[index]);
}
break;
}
//save
case 8:
{
if (index < _spawners.Length)
{
var spawner = _spawners[index];
var indexEntry = index >= _lineCount ? (index - _lineCount * _page) * EntryCount : index * EntryCount;
var name = info.GetTextEntry(indexEntry);
if (name?.Text.Length > 0)
{
spawner.Name = name.Text;
}
if (int.TryParse(info.GetTextEntry(indexEntry + 1)?.Text, out var walkRange))
{
spawner.WalkingRange = walkRange;
}
if (int.TryParse(info.GetTextEntry(indexEntry + 2)?.Text, out var homeHange))
{
spawner.HomeRange = homeHange;
}
if (TimeSpan.TryParse(info.GetTextEntry(indexEntry + 3)?.Text, out var minDelay))
{
spawner.MinDelay = minDelay;
}
if (TimeSpan.TryParse(info.GetTextEntry(indexEntry + 4)?.Text, out var maxDelay))
{
spawner.MaxDelay = maxDelay;
}
}
break;
}
//go
case 5:
{
if (index < _spawners.Length)
{
var spawner = _spawners[index];
_mobile.Map = spawner.Map;
_mobile.Location = spawner.Location;
}
Refresh(false);
return;
}
//open entry
case 6:
case 7:
{
if (index < _spawners.Length)
{
var spawner = _spawners[index];
Refresh();
if (type == 7)
{
_mobile.SendGump(new SpawnerGump(spawner));
}
else
{
_mobile.SendGump(new PropertiesGump(_mobile, spawner));
}
return;
}
break;
}
//delete
case 9:
{
if (index < _spawners.Length)
{
_spawners[index].Delete();
}
break;
}
case 10:
{
_page++;
break;
}
case 11:
{
if (_page > 0)
{
_page--;
}
break;
}
}
Refresh();
}