void UpdateScriptData(ushort slotIndex)
{
var scriptNum = _slots[slotIndex].Number;
if (_slots[slotIndex].Where == WhereIsObject.Inventory)
{
var data = (from o in _invData
where o.Number == scriptNum
select o.Script.Data).FirstOrDefault();
_currentScriptData = data;
}
else if (_slots[slotIndex].Where == WhereIsObject.FLObject)
{
var data = (from o in _objs
where o.Number == scriptNum
let entry = (byte)_slots[slotIndex].InventoryEntry
where o.ScriptOffsets.ContainsKey(entry) || o.ScriptOffsets.ContainsKey(0xFF)
select o.Script.Data).FirstOrDefault();
_currentScriptData = data;
}
else if (scriptNum == 10002)
{
_currentScriptData = roomData.EntryScript.Data;
}
else if (scriptNum == 10001)
{
_currentScriptData = roomData.ExitScript.Data;
}
else if (_slots[slotIndex].Where == WhereIsObject.Room)
{
var data = (from o in roomData.Objects
where o.Number == scriptNum
select o.Script.Data).First();
_currentScriptData = data;
}
else if (scriptNum < _resManager.NumGlobalScripts)
{
var data = _resManager.GetScript(scriptNum);
_currentScriptData = data;
}
else if ((scriptNum - _resManager.NumGlobalScripts) < roomData.LocalScripts.Length)
{
_currentScriptData = roomData.LocalScripts[scriptNum - _resManager.NumGlobalScripts].Data;
}
else
{
var data = (from o in roomData.Objects
where o.Number == scriptNum
let entry = (byte)_slots[slotIndex].InventoryEntry
where o.ScriptOffsets.ContainsKey(entry) || o.ScriptOffsets.ContainsKey(0xFF)
select o.Script.Data).FirstOrDefault();
_currentScriptData = data;
}
}