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; } } }