예제 #1
0
        private static void UpdateHK(On.RainWorldGame.orig_Update orig, RainWorldGame self)
        {
            if (mainGame == null)
            {
                mainGame = self;
            }

            if (!self.lastPauseButton)
            {
                self.lastPauseButton = MonklandSteamManager.isInGame;
            }

            orig(self);

            try
            {
                if (MonklandSteamManager.isInGame)
                {
                    if (MonklandSteamManager.monklandUI != null)
                    {
                        MonklandSteamManager.monklandUI.Update(self);
                    }
                    MonklandSteamManager.WorldManager.TickCycle();

                    bool flag = Input.GetKey(self.rainWorld.options.controls[0].KeyboardPause) || Input.GetKey(self.rainWorld.options.controls[0].GamePadPause) || Input.GetKey(KeyCode.Escape);
                    if (flag && !lastMultiPauseButton && (self.cameras[0].hud != null || self.cameras[0].hud.map.fade < 0.1f) && !self.cameras[0].hud.textPrompt.gameOverMode)
                    {
                        (self.cameras[0].hud.parts.Find(x => x is MultiplayerHUD) as MultiplayerHUD).ShowMultiPauseMenu();
                    }

                    lastMultiPauseButton = flag;
                }
            }
            catch (Exception e)
            {
                Debug.LogError(e);
            }
        }
예제 #2
0
        static void RainWorldGame_Update(On.RainWorldGame.orig_Update orig, RainWorldGame self)
        {
            orig(self);

            if (self.Players.Count < 1)
            {
                return;
            }

            AbstractWorldEntity[] entities = self.world.offScreenDen.entitiesInDens.ToArray();

            foreach (AbstractWorldEntity aEntity in entities)
            {
                if (aEntity is AbstractCreature aCreature && aCreature.creatureTemplate.type == CreatureTemplate.Type.Overseer)
                {
                    OverseersPlugin.Logger_.LogInfo($"moving overseer {aCreature.ID} " +
                                                    $"from offscreen den to {self.Players[0].Room.name}");
                    aCreature.ChangeRooms(new WorldCoordinate(self.Players[0].Room.index, 1, 1, 0));

                    self.world.offScreenDen.entitiesInDens.Remove(aCreature);
                }
            }
        }