Exemple #1
0
 static bool OnToggle(UnityModManager.ModEntry modEntry, bool value)
 {
     if (enabled == value)
     {
         return(true);
     }
     enabled = value;
     if (enabled)
     {
         harmonyInstance = HarmonyInstance.Create(modEntry.Info.Id);
         harmonyInstance.PatchAll(Assembly.GetExecutingAssembly());
         ModMenu.Instance.gameObject.AddComponent <XLShredRespawnNearBail>();
         RespawnData respawnData = PlayerController.Instance.respawn.gameObject.AddComponent <RespawnData>();
         respawnData.RespawnComponent = PlayerController.Instance.respawn;
         XLShredDataRegistry.SetData("kiwi.XLShredRespawnNearBail", "isRespawnNearBailActive", settings.respawnNearBail);
     }
     else
     {
         harmonyInstance.UnpatchAll(harmonyInstance.Id);
         UnityEngine.Object.Destroy(ModMenu.Instance.gameObject.GetComponent <XLShredRespawnNearBail>());
         UnityEngine.Object.Destroy(PlayerController.Instance.respawn.gameObject.GetComponent <RespawnData>());
         XLShredDataRegistry.SetData("kiwi.XLShredRespawnNearBail", "isRespawnNearBailActive", false);
     }
     return(true);
 }
 public static RespawnData Clone(RespawnData given)
 {
     return(new RespawnData()
     {
         respawnPosition = given.respawnPosition,
         sceneName = given.sceneName
     });
 }
    // Start is called before the first frame update
    void Awake()
    {
        respawnState = new StateSetter(this, null, null, null, StateSetter.SetStrength.Strong);
        RespawnData newMajor = new RespawnData()
        {
            sceneName       = SceneManager.GetActiveScene().name,
            respawnPosition = Player.instance.transform.position
        };

        MajorRespawnData = newMajor;
    }
    private static void Respawn(RespawnData respawnData)
    {
        // REMOVE FROM RESPAWN LIST
        respawnQueue.Remove(respawnData);

        // RESPAWN OBJECT
        GameObject obj = GameObject.Instantiate(respawnData.objectToSpawn, respawnData.respawnTransform.position, respawnData.respawnTransform.rotation);

        SetRespawnParameters(respawnData);

        // ADD TO INSTANTIATED LIST
        instantiatedObjectsList.Add(obj);
    }
Exemple #5
0
 public RespawnBehaviour(ShipTeam[] teams, Transform[] points, float[] distancies, float time)
 {
     respawn = new RespawnData[teams.Length];
     for (int i = 0; i < teams.Length; i++)
     {
         respawn[i] = new RespawnData()
         {
             team = teams[i], point = points[i], distanceToCenter = distancies[i]
         }
     }
     ;
     this.time = time;
 }
Exemple #6
0
        static void Prefix(Respawn __instance, ref bool ____init)
        {
            RespawnData respawnData = PlayerController.Instance.respawn.GetExtensionComponent();

            if (!____init && PlayerController.Instance.boardController.AllDown)
            {
                respawnData.SetSpawnPos();
                ____init = true;
            }
            if (Main.enabled && Main.settings.respawnNearBail && !__instance.respawning && !__instance.puppetMaster.isBlending && Time.time - respawnData.lastTmpSave > 0.5f && PlayerController.Instance.IsGrounded() && !__instance.bail.bailed && Time.timeScale != 0f)
            {
                respawnData.lastTmpSave = Time.time;
                respawnData.SetTmpSpawnPos();
            }
        }
    public static void QueueRespawn(RespawnData respawnData)
    {
        // ADD TO RESPAWN QUEUE
        respawnQueue.Add(respawnData);

        // SET TIMER
        Timer timer = new Timer();

        timer.Interval = respawnData.secondsToSpawn * 1000;
        timer.Enabled  = true;
        timer.Elapsed += (object source, ElapsedEventArgs e) => Respawn(respawnData);

        // DESTROY INSTANTIATED OBJECT
        instantiatedObjectsList.Remove(respawnData.objectToDestroy);
        GameObject.Destroy(respawnData.objectToDestroy);
    }
Exemple #8
0
        static bool Load(UnityModManager.ModEntry modEntry)
        {
            settings = Settings.Load <Settings>(modEntry);

            var harmony = HarmonyInstance.Create(modEntry.Info.Id);

            harmony.PatchAll(Assembly.GetExecutingAssembly());
            modEntry.OnSaveGUI = OnSaveGUI;
            modEntry.OnToggle  = OnToggle;

            ModMenu.Instance.gameObject.AddComponent <XLShredRespawnNearBail>();

            RespawnData respawnData = PlayerController.Instance.respawn.gameObject.AddComponent <RespawnData>();

            respawnData.RespawnComponent = PlayerController.Instance.respawn;

            return(true);
        }
    IEnumerator Respawn(RespawnData areaCode)
    {
        playerRespawn?.Invoke(); //So things know that the player is respawning.

        Player.instance.DisableHitboxAndVisuals();
        Player.instance.SetLivingEntityState(respawnState, false);
        Player.instance.InputAndPhysicsCleanUp();
        Player.instance.entityRB2D.bodyType = RigidbodyType2D.Kinematic;

        yield return(new WaitForSeconds(1));

        UIManager.instance.ToggleFade();

        yield return(new WaitForSeconds(UIManager.instance.fadeTime));

        Scene activeScene = SceneManager.GetActiveScene();

        if (!activeScene.name.Equals(areaCode.sceneName))
        {
            SceneManager.LoadScene(areaCode.sceneName);
            yield return(new WaitUntil(() => activeScene.isLoaded));
        }

        Player.instance.transform.position = areaCode.respawnPosition;
        if (areaCode == miniRespawnData)
        {
            Player.instance.healthControl.ProcInvincibility();
        }
        if (areaCode == majorRespawnData)
        {
            miniRespawnData = RespawnData.Clone(areaCode);

            Player.instance.healthControl.CurrentHealth = Player.instance.healthControl.MaxHealth;
        }

        yield return(new WaitForSeconds(1));

        Player.instance.EnableHitboxAndVisuals();

        UIManager.instance.ToggleFade();

        Player.instance.entityRB2D.bodyType = RigidbodyType2D.Dynamic;
        Player.instance.OriginalStateSet();
    }
Exemple #10
0
    public void OnBotDestroyed(int botId)
    {
        Bot bot = GetBotFromBotId(botId);
        var d   = new RespawnData();

        d.botId     = bot.ID;
        d.deathTime = Time.time;
        this.respawnList.Add(d);
        if (GetEnemyTeamFromBotId(botId).flag.Stolen&& GetEnemyTeamFromBotId(botId).flag.Carrier == botId)
        {
            DropFlag(botId);
        }
        bot.Disable();


//    if(bot_infos.ID == flag_carriers[0])
//    {
//      flag_carriers[0] = -1;
//    }
//    if(bot_infos.ID == flag_carriers[1])
//    {
//      flag_carriers[1] = -1;
//    }
//
//    bot_infos.is_dead = true;
//    bot_infos.BroadcastMessage("OnDeath", SendMessageOptions.DontRequireReceiver);
//
//    RespawnData rd = new RespawnData();
//    rd.timer = respawn_delay;
//    rd.bot = bot_infos;
//    rd.invincibility_left = respawn_invincibility_time;
//    rd.respawned = false;
//    to_respawn.Add(rd);
//
//    // give some invincibility by changing object's tag
//    rd.bot.gameObject.tag = "Untagged";
//    bot_infos.Disable();
    }
Exemple #11
0
 public void MainMenu()
 {
     GameManager.Instance.Playing(true);
     RespawnData.Reset();
     SceneManager.LoadScene("MainMenu");
 }
 private static void SetRespawnParameters(RespawnData respawnData)
 {
     // SET RESPAWN PARAMETERS
 }
Exemple #13
0
    // public GameObject tutorialPanel;

    public void Play()
    {
        GameManager.Instance.Playing(true);
        RespawnData.Reset();
        SceneManager.LoadScene("Chapter1");
    }
Exemple #14
0
    void Update()
    {
        // CHECK PLAYERS TO RESPAWN
        int k = 0;

        while (k < to_respawn.Count)
        {
            RespawnData dat = to_respawn[k];
            dat.timer    -= Time.deltaTime;
            to_respawn[k] = dat;

            if (dat.timer < 0)
            {
                Respawn(dat.bot);
                to_respawn.RemoveAt(k);
            }
            else
            {
                k++;
            }
        }


        // FLAG INTERACTIONS FOR RED TEAM
        for (int i = 0; i < teams[0].bots.Length; i++)
        {
            if (!teams[0].bots[i].gameObject.activeSelf)
            {
                continue;
            }

            Collider c = teams[0].bots[i].GetComponent <Collider>();
            // Got enemy flag
            if (c.bounds.Intersects(teams[0].enemy_flag.bounds))
            {
                // check if no one already carries this flag
                if (flag_carriers[1] == -1)
                {
                    is_flag_home[1]  = false;
                    flag_carriers[1] = teams[0].bots[i].ID;
                }
            }
            else if (c.bounds.Intersects(teams[0].team_flag.bounds)) // get back team flag
            {
                // check if flag is not home AND no enemy is carrying it
                if (!is_flag_home[0] && flag_carriers[0] == -1)
                {
                    // bring back flag to base
                    teams[0].team_flag.transform.position = teams[0].team_base.transform.position;
                    is_flag_home[0] = true;
                }
            }
        }

        // FLAG INTERACTIONS FOR BLUE TEAM
        for (int i = 0; i < teams[1].bots.Length; i++)
        {
            if (!teams[1].bots[i].gameObject.activeSelf)
            {
                continue;
            }

            Collider c = teams[1].bots[i].GetComponent <Collider>();
            // Got master flag
            if (c.bounds.Intersects(teams[1].enemy_flag.bounds))
            {
                // check if no one already carries this flag
                if (flag_carriers[0] == -1)
                {
                    is_flag_home[0]  = false;
                    flag_carriers[0] = teams[1].bots[i].ID;
                }
            }
            else if (c.bounds.Intersects(teams[1].team_flag.bounds))
            {
                // check if flag is not home AND no bot from team red is carrying it
                if (!is_flag_home[1] && flag_carriers[1] == -1)
                {
                    // bring back flag to base
                    teams[1].team_flag.transform.position = teams[1].team_base.position;
                    is_flag_home[1] = true;
                }
            }
        }


        // FLAG MOVEMENT
        if (flag_carriers[1] != -1)
        {
            teams[0].enemy_flag.transform.position = GetBotFromID(flag_carriers[1]).transform.position;
        }

        if (flag_carriers[0] != -1)
        {
            teams[0].team_flag.transform.position = GetBotFromID(flag_carriers[0]).transform.position;
        }



        if (teams[0].team_flag.bounds.Intersects(teams[0].enemy_flag.bounds))
        {
            if (is_flag_home[0])
            {
                // red scores
                score[0]++;

                is_flag_home[1] = true;
                is_flag_home[0] = true;
                teams[0].enemy_flag.transform.position = teams[0].enemy_base.position;
                flag_carriers[1] = -1;
                flag_carriers[0] = -1;

                teams[0].SendMessageToTeam("OnScored");
            }
            else if (is_flag_home[1])
            {
                // blue scores
                score[1]++;

                is_flag_home[1] = true;
                is_flag_home[0] = true;
                teams[1].enemy_flag.transform.position = teams[1].enemy_base.position;
                flag_carriers[1] = -1;
                flag_carriers[0] = -1;

                teams[1].SendMessageToTeam("OnScored");
            }
        }

        text_score_team_red.text  = score[0].ToString();
        text_score_team_blue.text = score[1].ToString();
    }
Exemple #15
0
 private void CreateMonster()
 {
     if (this.mgInfo == null)
     {
         return;
     }
     this.index = 0;
     int num = 0;
     for (int i = 0; i < 6; i++)
     {
         if (i >= this.mgInfo.RespawnID.Count || this.mgInfo.RespawnID[i] == 0)
         {
             break;
         }
         MGRespawnInfo info = Globals.Instance.AttDB.MGRespawnDict.GetInfo(this.mgInfo.RespawnID[i]);
         if (info == null)
         {
             break;
         }
         if (this.respawnActors[this.maxWave] == null)
         {
             this.respawnActors[this.maxWave] = new List<RespawnData>();
         }
         int num2 = UtilFunc.RangeRandom(0, 100) % 3;
         this.way[i] = num2;
         if (i <= 0)
         {
             num = 1;
         }
         else
         {
             if (this.way[i - 1] == num2)
             {
                 num++;
             }
             else
             {
                 num = 1;
             }
             if (num >= 3)
             {
                 num2 = (num2 + 1) % 3;
                 this.way[i] = num2;
                 num = 1;
             }
         }
         this.timer += this.mgInfo.Delay[i];
         for (int j = 0; j < info.InfoID.Count; j++)
         {
             if (info.InfoID[j] != 0)
             {
                 int num3 = info.PosIndex[i];
                 if (num3 > 5)
                 {
                     global::Debug.LogErrorFormat("MGRespawnInfo InfoID count = {0} > {1}", new object[]
                     {
                         j,
                         5
                     });
                     break;
                 }
                 if (this.respawnPoints[num2, num3] == null)
                 {
                     global::Debug.LogError(new object[]
                     {
                         string.Format("respawnPoints error, wayIndex = {0}, posIndex = {1}", num2, num3)
                     });
                     break;
                 }
                 RespawnData respawnData = new RespawnData();
                 if (respawnData == null)
                 {
                     global::Debug.LogError(new object[]
                     {
                         "Allocate RespawnData error"
                     });
                     break;
                 }
                 respawnData.Actor = this.actorMgr.CreateMonster(info.InfoID[j], this.respawnPoints[num2, num3].Position, this.respawnPoints[num2, num3].Rotation, new Vector3(info.Scale[j], info.Scale[j], info.Scale[j]), 10000);
                 if (respawnData.Actor != null)
                 {
                     respawnData.Actor.AiCtrler.FindEnemyDistance = 3.40282347E+38f;
                     respawnData.Actor.AiCtrler.SetInitTarget(this.gearActor);
                     respawnData.Actor.gameObject.SetActive(false);
                     respawnData.DelayTime = info.Delay[j];
                     this.respawnActors[this.maxWave].Add(respawnData);
                 }
             }
         }
         this.maxWave++;
     }
     this.index = 0;
 }
Exemple #16
0
 public void RestartLevel()
 {
     GameManager.Instance.Playing(true);
     RespawnData.Reset();
     SceneManager.LoadScene(SceneManager.GetActiveScene().name);
 }
Exemple #17
0
 private void CreateMonster()
 {
     int startID = this.GetStartID();
     for (int i = 0; i < 5; i++)
     {
         TrialRespawnInfo info = Globals.Instance.AttDB.TrialRespawnDict.GetInfo(startID + i);
         if (info == null)
         {
             if (this.respawnActors[i] != null)
             {
                 this.respawnActors[i].Clear();
             }
             break;
         }
         if (this.respawnActors[i] == null)
         {
             this.respawnActors[i] = new List<RespawnData>();
         }
         this.respawnActors[i].Clear();
         for (int j = 0; j < info.InfoID.Count; j++)
         {
             if (j >= 15)
             {
                 global::Debug.LogError(new object[]
                 {
                     string.Format("TrialRespawnInfo InfoID count = {0} >= {1}", j, 15)
                 });
                 break;
             }
             if (info.InfoID[j] != 0)
             {
                 if (this.respawnPoints[j] == null)
                 {
                     global::Debug.LogError(new object[]
                     {
                         string.Format("respawnPoints error, index = {0}", j)
                     });
                     break;
                 }
                 RespawnData respawnData = new RespawnData();
                 if (respawnData == null)
                 {
                     global::Debug.LogError(new object[]
                     {
                         "Allocate RespawnData error"
                     });
                     break;
                 }
                 respawnData.Actor = this.actorMgr.CreateMonster(info.InfoID[j], this.respawnPoints[j].Position, this.respawnPoints[j].Rotation, new Vector3(info.Scale[j], info.Scale[j], info.Scale[j]), 10000);
                 if (respawnData.Actor != null)
                 {
                     respawnData.Actor.AiCtrler.FindEnemyDistance = 3.40282347E+38f;
                     respawnData.Actor.gameObject.SetActive(false);
                     respawnData.DelayTime = info.Delay[j];
                     this.respawnActors[i].Add(respawnData);
                 }
             }
         }
     }
 }