private void findAndReplace(Item toReplace, Item newItem, FindAndReplaceOptions options, int layer)
    {
        Func <Item, Item, bool> compareFunc = GetComparer(options);
        FieldItemLayer          fil         = layer == 0 ? fieldManager.Layer1 : fieldManager.Layer2;
        int replaceCount = 0;

        for (int i = 0; i < MapItemsWidthMax; ++i)
        {
            for (int j = 0; j < MapItemsHeightMax; ++j)
            {
                Item item = fil.GetTile(i, j);
                if (compareFunc(toReplace, item))
                {
                    item.CopyFrom(newItem);
                    fil.SetExtensionTiles(item, i, j);
                    replaceCount++;
                }
            }
        }
        if (replaceCount > 0)
        {
            UI_Popup.CurrentInstance.CreatePopupMessage(2f, $"Replaced {replaceCount} items.", () => { });
        }
        else
        {
            UI_Popup.CurrentInstance.CreatePopupMessage(3f, "Unable to find any items that match desired replacement type.", () => { }, Color.red);
        }
        UpdateLayerImage();
        updateGrid(lastCursorX, lastCursorY);
    }
Exemple #2
0
        // Remove all tile checking code
        public void Spawn(Item[] newItems, int itemsPerLine = 10, bool forceFlag32 = true)
        {
            int totalXTiles = itemsPerLine * 2;
            int x           = SpawnX;
            int y           = SpawnY;

            for (int i = 0; i < newItems.Length; ++i)
            {
                var currItem = newItems[i];
                x = SpawnX + ((i * 2) % totalXTiles);
                y = SpawnY + ((i / itemsPerLine) * 2);
                var tile = ItemLayer.GetTile(x, y);
                if (!currItem.IsNone)
                {
                    tile.CopyFrom(currItem);
                    if (forceFlag32)
                    {
                        tile.SystemParam = 0x20;
                    }
                    ItemLayer.SetExtensionTiles(tile, x, y);
                }
                else
                {
                    tile.Delete();
                    ItemLayer.DeleteExtensionTiles(tile, x, y);
                }
            }
        }