Beispiel #1
0
            private static bool CheckMerge(FarmTileId tile1, FarmTileId tile2, FarmData __instance)
            {
                if (!settings.isEnable)
                {
                    return(true);
                }
                FarmTile tile3 = __instance.GetTile(tile1);

                if (tile3 == null || tile3.IsEmpty)
                {
                    return(false);
                }
                FarmTile tile4 = __instance.GetTile(tile2);

                if (tile4 == null || tile4.IsEmpty)
                {
                    return(false);
                }
                if (tile3.Contents.Category == tile4.Contents.Category)
                {
                    FarmTileContentsType category = tile3.Contents.Category;
                    if (category != FarmTileContentsType.Animal)
                    {
                        if (category == FarmTileContentsType.Pond)
                        {
                            PondContents pondContents  = tile3.Contents as PondContents;
                            PondContents pondContents2 = tile4.Contents as PondContents;
                            if (pondContents.Pond == pondContents2.Pond)
                            {
                                return(false);
                            }
                            if (pondContents.Pond.Tiles.Count + pondContents2.Pond.Tiles.Count > settings.maxTileCount)
                            {
                                return(false);
                            }
                            pondContents2.Pond.Merge(pondContents.Pond);
                            tile3.StateChanged(true);
                            tile4.StateChanged(true);
                        }
                    }
                    else
                    {
                        AnimalFieldContents animalFieldContents  = tile3.Contents as AnimalFieldContents;
                        AnimalFieldContents animalFieldContents2 = tile4.Contents as AnimalFieldContents;
                        if (animalFieldContents.Field == animalFieldContents2.Field)
                        {
                            return(false);
                        }
                        if (animalFieldContents.Field.TileCount + animalFieldContents2.Field.TileCount > settings.maxTileCount)
                        {
                            return(false);
                        }
                        animalFieldContents2.Field.Merge(animalFieldContents.Field);
                        tile3.StateChanged(true);
                        tile4.StateChanged(true);
                    }
                }
                return(false);
            }
        public static void SetContent(FarmTile tile, FarmTileContents content)
        {
            var ct = Traverse.Create(tile).Field("contents");

            ct.SetValue(content);
            if (content != null)
            {
                FarmTileContentsType category = content.Category;
                var tsc = Traverse.Create(tile).Field("tileState");
                switch (category)
                {
                case FarmTileContentsType.Crop:
                    tsc.SetValue(FarmTileState.Plow);
                    break;

                default:
                    if (category != FarmTileContentsType.Flower)
                    {
                        tsc.SetValue(FarmTileState.Building);
                    }
                    else
                    {
                        tsc.SetValue(FarmTileState.Flower);
                    }
                    break;

                case FarmTileContentsType.Animal:
                    tsc.SetValue(FarmTileState.Animal);
                    break;

                case FarmTileContentsType.Pond:
                    tsc.SetValue(FarmTileState.Pond);
                    break;
                }
            }
        }