public void Read(byte[] data)
        {
            this.amx = new Amx(data);

            var itemData = this.ItemData.ToArray();

            if (itemData.Length % 3 != 0)
            {
                throw new InvalidOperationException($"Item data in script has invalid length \"{itemData.Length}\". Length must be divisible by 3.");
            }
            if (itemData.Length / 3 < ItemCounts[this.gameVersion])
            {
                throw new InvalidOperationException($"Item data in script has invalid length \"{itemData.Length}\". Length must be at least {ItemCounts[ this.gameVersion ] * 3}.");
            }

            this.ScriptIdBase = ScriptIdBases[this.gameVersion];
            this.Items        = new List <OverworldItem>();

            for (var i = 0; i < ItemCounts[this.gameVersion]; i++)
            {
                this.Items.Add(new OverworldItem {
                    ItemId         = itemData[i * 3],
                    Unused1        = itemData[i * 3 + 1],
                    ScriptIdOffset = itemData[i * 3 + 2],
                });
            }
        }
Exemple #2
0
 public Task SaveAmxScript(AmxNames amxName, Amx amxScript) => this.SaveAmxFile(amxName, amxScript.Data);