Example #1
0
        public static CraneGame.Prize getCustomMoviePrize(CustomMovieData movieData, CraneGame game, Vector2 pos, float z)
        {
            if (PyTK.PyUtils.getItem(movieData.CranePrizeType, name: movieData.CranePrizeName) is Item prize)
            {
                return new CraneGame.Prize(game, prize)
                       {
                           position    = pos,
                           zPosition   = z,
                           isLargeItem = (prize is StardewValley.Object o && o.bigCraftable) || !(prize is StardewValley.Object)
                       }
            }
            ;

            return(null);
        }
Example #2
0
        public static void craneGameInstantiated(ref CraneGame __instance)
        {
            if (CMVAssetEditor.CurrentMovie == null || CMVAssetEditor.CurrentMovie.CranePrizeType == "None")
            {
                return;
            }

            var game = __instance;
            List <CraneGame.CraneGameObject> gameObjects = new List <CraneGame.CraneGameObject>((List <CraneGame.CraneGameObject>)game.GetType().GetField("_gameObjects", BindingFlags.NonPublic | BindingFlags.Instance).GetValue(game));
            Random rnd = new Random();

            foreach (CraneGame.Prize prize in gameObjects.Where(go => go is CraneGame.Prize p && !p.isLargeItem))
            {
                if (rnd.NextDouble() < 0.2)
                {
                    game.UnregisterGameObject(prize);
                    if (getCustomMoviePrize(CMVAssetEditor.CurrentMovie, game, prize.position, prize.zPosition) == null)
                    {
                        game.RegisterGameObject(prize);
                    }
                    break;
                }
            }
        }