コード例 #1
0
    public static void UnlockThisLevel(FreshLevels.Type type, bool noSave)
    {
        if (type == FreshLevels.Type.None)
        {
            //Debug.Log("Error: Level type was None. Level not unlocked!");
            return;
        }

        //special cases (when you go to these text intros, also unlock the next level, in case the player quits during the story)
        if (type == FreshLevels.Type.PreSlimeDaddyStory)
        {
            type = FreshLevels.Type.SlimeDaddy_BatterUp;
        }
        if (type == FreshLevels.Type.PostSatanStory)
        {
            type = FreshLevels.Type.MusicLvl1;
        }

        string strictLabel = FreshLevels.GetStrictLabelForType(type);

        if (strictLabel == null)
        {
            //Debug.Log("Error: Level name was NULL. Level not unlocked!");
            return;
        }
        PlayerPrefs.SetInt("nu_" + strictLabel, 1);
        if (!noSave)
        {
            PlayerPrefs.Save();
        }

        //Debug.Log("Unlocked level. " + type + ", " + strictLabel);
    }
コード例 #2
0
    public static void AddToQueue(FreshLevels.Type type, float speedruntime)
    {
        //Fail out, if:
        if (fa.dontConnectSteam)
        {
            return;
        }
        if (!SteamManager.Initialized)
        {
            return;
        }
        if (speedruntime < 2)
        {
            return;
        }                                        //less than 2 seconds is always impossible
        if (speedruntime < FreshLevels.GetImpossibleTimeForLevel(type))
        {
            return;
        }                                                                                  //time was impossible
        if (FreshLevels.DoNotSyncLevel(type))
        {
            return;
        }                                                      //don't sync this level if it's got a secret exit or other reason to not keep old scores

        Item a = new Item();

        a.leaderboard = FreshLevels.GetStrictLabelForType(type);
        a.score       = Mathf.FloorToInt(speedruntime * 1000);
        a.type        = type;
        queue.Add(a);
    }
コード例 #3
0
    public static void WonLevel(FreshLevels.Type lvlType)
    {
        //turn type into a int, then increase lvlNum to that amount, then save it.
        //Debug.Log("HERE1, won level " + lvlType + ", lvlTypes length: " + lvlTypes.Length);
        if (lvlTypes == null)
        {
            return;
        }

        for (int i = 0; i < lvlTypes.Length; i++)
        {
            if (lvlTypes[i] == lvlType || (lvlTypes[i] == FreshLevels.Type.IntroStory && lvlType == FreshLevels.Type.Tut_JumpAndAirsword))
            {
                //Debug.Log("HERE2");
                //find the next highest
                for (int a = 0; a < lvlNums.Length; a++)
                {
                    if (lvlNums[a] == lvlNums[i] + 10)
                    {
                        //Debug.Log("HERE3 " + lvlNum + ", " + lvlNums[a]);
                        if (lvlNums[a] > lvlNum)
                        {
                            //Debug.Log("HERE4");
                            lvlNum = lvlNums[a];
                        }
                        //Debug.Log("HERE5");
                        //Fresh_Saving.SaveLvlNum();
                        return;
                    }
                }
            }
        }
    }
コード例 #4
0
    public static void SendPBToSteam(FreshLevels.Type type, float speedruntime)
    {
        //Fail out, if:
        if (fa.dontConnectSteam)
        {
            return;
        }
        if (!SteamManager.Initialized)
        {
            return;
        }
        if (speedruntime < 2)
        {
            return;
        }                                        //less than 2 seconds is always impossible
        if (speedruntime < FreshLevels.GetImpossibleTimeForLevel(type))
        {
            return;
        }                                                                                  //time was impossible
        if (FreshLevels.NotALeaderboardLevel(type))
        {
            return;
        }                                                            //There are / should be no leaderboards for this level

        AddToQueue(type, speedruntime);
    }
コード例 #5
0
    public static bool LoadLevelUnlocked(FreshLevels.Type fType)
    {
        FreshLevels.Type type = fType;
        if (type == FreshLevels.Type.IntroStory)
        {
            return(true);
        }                                                                  //Always unlocked

        int result = 0;

        /*
         * if (PlayerPrefs.HasKey("LevelUnlocked_" + type))
         * {
         *      result = PlayerPrefs.GetInt("LevelUnlocked_" + type, 0);
         * }*/

        if (fType != FreshLevels.Type.None)
        {
            string s = FreshLevels.GetStrictLabelForType(fType);
            if (PlayerPrefs.HasKey("nu_" + s))
            {
                result = PlayerPrefs.GetInt("nu_" + type, 0);
            }
        }


        return(result == 1);
    }
コード例 #6
0
 public static void GetALvl(string lvlName)
 {
     //Get the enum from the string
     FreshLevels.Type lvlType = FreshLevels.Type.None;
     lvlType = FreshLevels.GetTypeNameForStr(lvlName);
     if (lvlType != FreshLevels.Type.None)
     {
         RemoteData.GetUsageStats(lvlName, (data) =>
         {
             if (data != "error")
             {
                 //Debug.Log("Writing unparsed for " + lvlName);
                 for (int i = 0; i < unparsedBool.Length; i++)
                 {
                     if (!unparsedBool[i])
                     {
                         unparsedBool[i] = true;
                         unparsedStr[i]  = data;
                         unparsedInt[i]  = (int)lvlType;
                         break;
                     }
                 }
             }
         });
     }
 }
コード例 #7
0
    public static void BackwardsCompat_LvlNumCheck()
    {
        if (BackwardsCompat_Index == 999)
        {
            return;
        }

        int r = PlayerPrefs.GetInt("doneBackCompat1", 0);

        if (r == 1)
        {
            BackwardsCompat_Index = 999; return;
        }
        int lvlnum = PlayerPrefs.GetInt("lvlNum", 0);
        int index  = BackwardsCompat_Index;

        FreshLevels.Type t = (FreshLevels.Type)index;
        if (t == FreshLevels.Type.End)
        {
            BackwardsCompat_Index = 999;

            PlayerPrefs.SetInt("doneBackCompat1", 1);
            return;
        }

        if (lvlnum >= FreshLevels.GetLvlNumForType(t))
        {
            UnlockThisLevel(t, true);
        }
        if (BackwardsCompat_Index == 50)
        {
            PlayerPrefs.Save();
        }                                                               //Only save every so often. Don't need to save every frame.
        if (BackwardsCompat_Index == 100)
        {
            PlayerPrefs.Save();
        }
        if (BackwardsCompat_Index == 150)
        {
            PlayerPrefs.Save();
        }
        if (BackwardsCompat_Index == 200)
        {
            PlayerPrefs.Save();
        }
        if (BackwardsCompat_Index == 250)
        {
            PlayerPrefs.Save();
        }
        if (BackwardsCompat_Index == 300)
        {
            PlayerPrefs.Save();
        }
        if (BackwardsCompat_Index == 500)
        {
            PlayerPrefs.Save();
        }
        BackwardsCompat_Index++;
    }
コード例 #8
0
    public static void BackwardsCompat_Misc()
    {
        if (BackwardsCompat_MiscFlag)
        {
            return;
        }

        int r = PlayerPrefs.GetInt("doneBackCompat2", 0);

        if (r == 1)
        {
            BackwardsCompat_MiscFlag = true; return;
        }

        //check some of the side levels, see if you've played them

        FreshLevels.Type t = FreshLevels.Type.None;
        for (int i = 0; i <= 11; i++)
        {
            switch (i)
            {
            case 0: t = FreshLevels.Type.Challenge1; break;

            case 1: t = FreshLevels.Type.Challenge2; break;

            case 2: t = FreshLevels.Type.Challenge3; break;

            case 3: t = FreshLevels.Type.Challenge4; break;

            case 4: t = FreshLevels.Type.TR_3; break;

            case 5: t = FreshLevels.Type.FPS_Hallway2; break;

            case 6: t = FreshLevels.Type.FPS_LavaPits; break;

            case 7: t = FreshLevels.Type.FPS_IceCaves; break;

            case 8: t = FreshLevels.Type.FPS_SlimeCity; break;

            case 9: t = FreshLevels.Type.FPS_Boss1; break;

            case 10: t = FreshLevels.Type.ThreeDee_Sewer; break;

            case 11: t = FreshLevels.Type.ThreeDee_Spinning; break;
            }

            if (PlayerPrefs.GetInt("LevelDeaths_" + t, -1) > -1)
            {
                UnlockThisLevel(t, true);
            }
        }


        PlayerPrefs.SetInt("doneBackCompat2", 1);
        PlayerPrefs.Save();
    }
コード例 #9
0
ファイル: FrFuncs.cs プロジェクト: thegamedesigner/OpenESJ2
 public static void GetLeaderboard(FreshLevels.Type type)
 {
     if (fa.dontConnect3rdParty)
     {
         return;
     }
     Debug.Log("Trying to get leaderboard");
     FrRemoteData.Fr_GetLeaderboard("" + type, fa.token, (data) =>
     {
         AddResult(data, Type.GetLeaderboard);
     });
 }
コード例 #10
0
ファイル: FrFuncs.cs プロジェクト: thegamedesigner/OpenESJ2
 public static void Qc_GetEntireMMLeaderboard(FreshLevels.Type type)
 {
     if (fa.dontConnect3rdParty)
     {
         return;
     }
     Debug.Log("Trying to get qc leaderboard");
     FrRemoteData.Qc_GetEntireLeaderboard("" + type, fa.token, fa.lengthOfMainMenuLeaderboard, (data) =>
     {
         fa.entireMMLeaderboard = data;
     });
 }
コード例 #11
0
ファイル: FrFuncs.cs プロジェクト: thegamedesigner/OpenESJ2
 public static void Qc_GetMMLeaderboardNameSlot(FreshLevels.Type type, int slot)
 {
     if (fa.dontConnect3rdParty)
     {
         return;
     }
     //Debug.Log("Trying to get qc leaderboard time slot " + slot);
     FrRemoteData.Qc_GetLeaderboardSlotName(slot, "" + type, (data) =>
     {
         fa.mmleaderboardNames[slot] = data;
     });
 }
コード例 #12
0
    // Use this for initialization
    void Start()
    {
        float t = 0;

        FreshLevels.Type type = FreshLevels.Type.MusicLvl2;
        if (PlayerPrefs.HasKey("LevelTime_" + type))
        {
            t = PlayerPrefs.GetFloat("LevelTime_" + type, -1);
        }

        textMesh.text = "Your score is:\n" + t;
    }
コード例 #13
0
 public void Defunct_CallReportLevelTime(FreshLevels.Type type, float levelTime)
 {
     if (fa.dontConnect3rdParty)
     {
         return;
     }
     RemoteData.Account a = new RemoteData.Account();
     a.username = "******";
     a.token    = "valid";
     RemoteData.ReportLevelTime(a, type.ToString(), "" + levelTime, (data) =>
     {
         genericPrint += "" + data;
     });
 }
コード例 #14
0
 public void Defunct_ReportLevelTime(FreshLevels.Type type, float levelTime)
 {
     if (fa.dontConnect3rdParty)
     {
         return;
     }
     if (RemoteData.myAccount != null)
     {
         RemoteData.ReportLevelTime(RemoteData.myAccount, type.ToString(), "" + levelTime, (data) =>
         {
             genericDebug += "" + data;
         });
     }
 }
コード例 #15
0
ファイル: FrFuncs.cs プロジェクト: thegamedesigner/OpenESJ2
 public static void ReportLevelTime(FreshLevels.Type type, float levelTime)
 {
     if (fa.dontConnect3rdParty)
     {
         return;
     }
     if (fa.cheater)
     {
         return;
     }
     FrRemoteData.Fr_ReportLevelTime("" + type, levelTime, (data) =>
     {
         AddResult(data, Type.Generic);
     });
 }
コード例 #16
0
 public void RequestLeaderboard(FreshLevels.Type type)
 {
     if (fa.dontConnect3rdParty)
     {
         return;
     }
     if (RemoteData.myAccount != null)
     {
         RemoteData.RequestLeaderboard(RemoteData.myAccount, type.ToString(), (data) =>
         {
             resultFromRequestLeaderboard      = true;
             resultFromRequestLeaderboard_data = data;
         });
     }
 }
コード例 #17
0
    public static void SaveLevelDeaths(FreshLevels.Type type, int deaths)
    {
        if (fa.cheater)
        {
            return;
        }
        int previous = -1;

        previous = PlayerPrefs.GetInt("LevelDeaths_" + type, -1);

        if (previous <= -1 || previous > deaths)
        {
            PlayerPrefs.SetInt("LevelDeaths_" + type, deaths);
            PlayerPrefs.Save();
        }
    }
コード例 #18
0
    public static float LoadLevelTime(FreshLevels.Type fType)
    {
        FreshLevels.Type type = fType;
        if (type == FreshLevels.Type.IntroStory)
        {
            type = FreshLevels.Type.Tut_JumpAndAirsword;
        }
        if (type == FreshLevels.Type.AlpDLC_IntroStory)
        {
            type = FreshLevels.Type.Alp0;
        }
        float result = -1;

        if (PlayerPrefs.HasKey("LevelTime_" + type))
        {
            result = PlayerPrefs.GetFloat("LevelTime_" + type, -1);
        }
        return(result);
    }
コード例 #19
0
    public static int LoadLevelDeaths(FreshLevels.Type fType)
    {
        FreshLevels.Type type = fType;
        if (type == FreshLevels.Type.IntroStory)
        {
            type = FreshLevels.Type.Tut_JumpAndAirsword;
        }                                                                                                //IntroStory isn't a real level
        if (type == FreshLevels.Type.AlpDLC_IntroStory)
        {
            type = FreshLevels.Type.Alp0;
        }                                                                                        //IntroStory isn't a real level

        int result = -1;

        if (PlayerPrefs.HasKey("LevelDeaths_" + type))
        {
            result = PlayerPrefs.GetInt("LevelDeaths_" + type, -1);
        }
        return(result);
    }
コード例 #20
0
    public static void SaveLevelTime(FreshLevels.Type type, float levelTime)
    {
        if (fa.cheater)
        {
            return;
        }
        //RemoteData.CallReportLevelTime(type,levelTime);

        float previousPB = -1;

        if (PlayerPrefs.HasKey("LevelTime_" + type))
        {
            previousPB = PlayerPrefs.GetFloat("LevelTime_" + type, -1);
        }

        if (previousPB < 0 || previousPB > levelTime)
        {
            PlayerPrefs.SetFloat("LevelTime_" + type, levelTime);
            PlayerPrefs.Save();
        }
    }
コード例 #21
0
ファイル: FrFuncs.cs プロジェクト: thegamedesigner/OpenESJ2
    public static void Qc_ReportLevelTime(FreshLevels.Type type, float levelTime, string ghostData)
    {
        if (fa.dontConnect3rdParty)
        {
            return;
        }
        if (fa.cheater)
        {
            return;
        }
        if (FreshLevels.NotALeaderboardLevel(type))
        {
            return;
        }                                                            //There are / should be no leaderboards for this level

        Debug.Log("Reported QC level time");
        FrRemoteData.Qc_ReportLevelTime("" + type, levelTime, ghostData, (data) =>
        {
            AddResult(data, Type.Generic);
        });
    }
コード例 #22
0
    public static void UnlockThisLevel(string level)
    {
        if (level == "StartMenu")
        {
            return;
        }
        if (level == "ESJ2Title")
        {
            return;
        }
        if (level == "MegaMetaWorld")
        {
            return;
        }

        FreshLevels.Type t = FreshLevels.GetTypeNameForStr(level);
        if (t == FreshLevels.Type.None)
        {
            Debug.Log("Error: string " + level + " returned type .None in GetTypeNameForStr. Level not unlocked!"); return;
        }
        UnlockThisLevel(t);
    }
コード例 #23
0
    void Update()
    {
        if (playerObj == null)
        {
            playerObj = GameObject.FindGameObjectWithTag("Player");
        }
        else
        {
            //Debug.Log("HERE1 " + playerObj.transform.position + ", " + transform.position + ", " + portalDist + ", Triggered/Fading: " + triggered + ", " + xa.fadingOut);
            if (Vector3.Distance(playerObj.transform.position, transform.position) < portalDist)
            {
                if (!triggered)
                {
                    triggered           = true;
                    xa.allowPlayerInput = false;
                    xa.hasCheckpointed  = false;
                    Time.timeScale      = 1;
                    FreshLevels.Type levelType = FreshLevels.GetTypeOfCurrentLevel();


                    if (!isSecretExit)
                    {
                        Fresh_Saving.SaveLevelDeaths(levelType, za.deaths);
                        Fresh_Saving.SaveLevelTime(levelType, fa.speedrunTime);

                        FrFuncs.Qc_ReportLevelTime(levelType, fa.speedrunTime, "noGhostData");
                        SteamLeaderboards.SendPBToSteam(levelType, fa.speedrunTime);
                    }



                    //Update unlocked levels (lvlNum)
                    NodeController.WonLevel(levelType);

                    xa.re.cleanLoadLevel(Restart.RestartFrom.RESTART_FROM_MENU, FreshLevels.GetStrNameForType(gotoLvl));
                }
            }
        }
    }
コード例 #24
0
    public static void ParseData(FreshLevels.Type lvlType, string data)
    {
        if (data == null)
        {
            return;
        }
        if (data.Length < 3)
        {
            return;
        }                                        // must be rubbish data, white space, to be so short

        //Debug.Log("HERE1");

        //find or create the totalData and recalc it
        int lvlIndex = -1;

        for (int i = 0; i < lvlStats.Count; i++)
        {
            if (lvlStats[i].levelType == lvlType)
            {
                lvlIndex = i;
            }
        }
        if (lvlIndex == -1)
        {
            //create it
            TotalPoint tp = new TotalPoint();
            tp.levelType = lvlType;
            lvlIndex     = lvlStats.Count;
            lvlStats.Add(tp);
        }
        //Debug.Log("RAW DATA: " + lvlType + ", " + data);

        //Ok, now parse the data
        string[] chunks = data.Split(',');
        //Debug.Log("HERE2 " + chunks.Length);

        List <string> names = new List <string>();
        List <float>  times = new List <float>();

        for (int d = 0; d < chunks.Length; d++)
        {
            if (chunks[d].Length < 3)
            {
                continue;
            }
            //Debug.Log("HERE3 " + chunks[d]);
            string[] bits = chunks[d].Split(':');
            names.Add(bits[0]);
            float r = -1;
            float.TryParse(bits[1], out r);
            times.Add(r);
        }
        //Debug.Log("HERE 4");



        for (int i = 0; i < names.Count; i++)
        {
            //Debug.Log(names[i]);
            lvlStats[lvlIndex].names.Add(names[i]);

            bool unique = true;
            for (int a = 0; a < lvlStats[lvlIndex].names.Count; a++)
            {
                if (lvlStats[lvlIndex].names[a] == names[i])
                {
                    unique = false;
                }
            }
            if (unique)
            {
                Debug.Log(names[i]);
                lvlStats[lvlIndex].names.Add(names[i]);
            }
        }

        for (int i = 0; i < times.Count; i++)
        {
            //	Debug.Log(times[i]);
            lvlStats[lvlIndex].times.Add(times[i]);
        }

        /*
         * for (int d = 0; d < chunks.Length; d++)
         * {
         *      string[] bits = chunks[d].Split(':');
         *
         *      Debug.Log("HERE5 " + chunks[d]);
         *      Debug.Log("HERE6 " + bits[0] + "--" + bits[1] + ", Chunk length: " + chunks.Length);
         *
         *
         *
         *      lvlStats[lvlIndex].times.Add(float.Parse(bits[1]));
         *
         *
         *      //check if name already exists, if so, don't add it
         *      bool unique = true;
         *      for (int a = 0; a < lvlStats[lvlIndex].names.Count; a++)
         *      {
         *              if (lvlStats[lvlIndex].names[a] == bits[0])
         *              {
         *                      unique = false;
         *              }
         *      }
         *      if (unique)
         *      {
         *              lvlStats[lvlIndex].names.Add(bits[0]);
         *      }
         * }*/
        lvlStats[lvlIndex].rawData = data;
        lvlStats[lvlIndex].Calc();
    }
コード例 #25
0
 public static void UnlockThisLevel(FreshLevels.Type type)
 {
     UnlockThisLevel(type, false);
 }