示例#1
0
    public override void OnUpdate(float deltaTime)
    {
        foreach (var entity in _healthFilter)
        {
            ref var health = ref entity.GetComponent <Health>();
            if (health.Value == 0)
            {
                if (entity.Has <PlayerData>())
                {
                    var respawnMarker = new RespawnMarker()
                    {
                        RespawnTime = 3f
                    };
                    entity.SetComponent(respawnMarker);
                    entity.AddComponent <LockInputMarker>();
                    health.Value = Config.Lives;

                    ref var transform = ref entity.GetComponent <TransformData>();
                    transform.transform.position = new Vector2(100, 100);
                }
                else if (entity.Has <Emblem>())
                {
                    health.Value = 1;
                    ref var emblem     = ref entity.GetComponent <Emblem>();
                    ref var spriteView = ref entity.GetComponent <SpriteView>();
示例#2
0
 private static void HandleBenchSave(On.PlayerData.orig_SetBenchRespawn_RespawnMarker_string_int orig,
                                     PlayerData self, RespawnMarker spawnMarker, string sceneName, int spawnType)
 {
     if (CanSaveInRoom(sceneName))
     {
         orig(self, spawnMarker, sceneName, spawnType);
     }
 }
示例#3
0
        public override void OnEnter()
        {
            GameManager gm = Ref.GM;

            if (gm == null)
            {
                Finish();
                return;
            }

            PlayerData pd = gm.playerData;

            if (pd == null)
            {
                Finish();
                return;
            }

            GameObject spawnPoint = GameObject.FindGameObjectWithTag("RespawnPoint");

            if (spawnPoint == null)
            {
                LogWarn(
                    "RandomizerSetHardSave action present in scene with no respawn points: " +
                    Ref.GM.GetSceneNameString());
                Finish();
                return;
            }

            PlayMakerFSM  bench  = FSMUtility.LocateFSM(spawnPoint, "Bench Control");
            RespawnMarker marker = spawnPoint.GetComponent <RespawnMarker>();

            if (bench != null)
            {
                pd.SetBenchRespawn(spawnPoint.name, gm.GetSceneNameString(), 1, true);
            }
            else if (marker != null)
            {
                pd.SetBenchRespawn(marker, gm.GetSceneNameString(), 2);
            }
            else
            {
                LogWarn(
                    "RandomizerSetHardSave could not identify type of RespawnPoint object in scene " +
                    Ref.GM.GetSceneNameString());
                Finish();
                return;
            }

            gm.SaveGame();
            Finish();
        }
 private static void PlayerData_SetBenchRespawn
 (
     On.PlayerData.orig_SetBenchRespawn_RespawnMarker_string_int orig,
     PlayerData self,
     RespawnMarker spawnMarker,
     string sceneName,
     int spawnType
 )
 {
     if (IsGarbage || spawnMarker != null && !string.IsNullOrEmpty(spawnMarker.name) && spawnMarker.name.ToLower().Contains("bench"))
     {
         orig(self, spawnMarker, sceneName, spawnType);
     }
 }