public void WatchOtherDance(ChoreographerData data) { stageManager.ClearDancers(); stageManager.CreateDataFromWholeChoreographer(data); stageManager.SetChampion(true); stageManager.ShowStage(); }
private void Start() { if (but_Voice != null) { but_Voice.onClick.AddListener(() => { MicManager.Instance.PlayAllVoice(rankObjectDebug.uid, StaticData.LevelID, () => { anim_btnVoice.SetBool("isPlaying", true); }, () => { LogManager.Log("下载录音失败"); anim_btnVoice.SetBool("isPlaying", false); }); }); } if (but_Video != null) { but_Video.onClick.AddListener(() => { JsonData data = new JsonData(); data["historyID"] = rankObjectDebug.historyID; DancingWordAPI.Instance.RequestLevelDancDataFromServer(data, (string resultData) => { LogManager.Log(resultData); JsonData result = JsonMapper.ToObject(resultData); if (result.TryGetString("code").Equals("1")) { string json = result.TryGetData("data").TryGetData("danceData").TryGetString("danceResult"); if (SceneManager.GetActiveScene().name == "BookScene") { StaticData.ChoreographerData = json; LoadSceneManager.Instance.LoadNormalScene("StageScene"); } else { if (!string.IsNullOrEmpty(json)) { PageManager.Instance.CurrentPage.GetNode <ScoreListNode>().Close(true); PageManager.Instance.CurrentPage.GetNode <StageOverNode>().Close(true); ChoreographerData cData = ChoreographerData.GetChoreographerDataFromJson(json); CorePlayManager.Instance.WatchOtherDance(cData); } else { PromptManager.Instance.MessageBox(PromptManager.Type.FloatingTip, "无法获取舞蹈数据"); } } } }, () => { LogManager.Log("获取过程数据失败!"); }); }); } }
// Use this for initialization void Start() { StaticData.NowLevelData = LevelConfig.GetLevelDataByID(StaticData.LevelID); CorePlayData.SongID = LanguageManager.GetSongIdFromLanguage(StaticData.NowLevelData.songID); CorePlayData.SongScript = SongConfig.Instance.GetsongScriptBySongIDAndLevelDiffculty(LanguageManager.GetSongIdFromLanguage(StaticData.NowLevelData.songID), StaticData.NowLevelData.LevelDifficulty); CorePlayData.SongOffset = SongConfig.Instance.GetSongOffsetBySongIDAndLevelDiffculty(LanguageManager.GetSongIdFromLanguage(StaticData.NowLevelData.songID), StaticData.NowLevelData.LevelDifficulty); CorePlayData.CurrentSong = BeatmapParse.Parse(CorePlayData.SongScript); ChoreographerData cData = ChoreographerData.GetChoreographerDataFromJson(StaticData.ChoreographerData); loader.LoadAudio(); m_StageManager.Init(60f / CorePlayData.CurrentSong.BPM); m_StageManager.CreateDataFromWholeChoreographer(cData); m_StageManager.SetChampion(true); m_StageManager.ShowStage(); AnalysisManager.Instance.OnEvent("enterStage", null); }
public static ChoreographerData GetChoreographerDataFromJson(string json) { ChoreographerData cd = new ChoreographerData(); JsonData data = JsonMapper.ToObject(json); cd.StartSpellIndex = int.Parse(data.TryGetString("startSpellIndex", "-1")); JsonData middleDancer = data["middle"]; JsonData leftDancer = data["left"]; JsonData rightDancer = data["right"]; DancerInfo middle = new DancerInfo(); DancerInfo left = new DancerInfo(); DancerInfo right = new DancerInfo(); middle.Name = middleDancer.TryGetString("name"); middle.ModelID = middleDancer.TryGetString("modelID"); middle.FaceID = middleDancer.TryGetString("faceID"); middle.m_Country = (DancerInfo.Country) int.Parse(middleDancer.TryGetString("country")); middle.PlayerID = middleDancer.TryGetString("uid"); middle.m_RankingType = (DancerInfo.RankingType) int.Parse(middleDancer.TryGetString("ranking")); left.Name = leftDancer.TryGetString("name"); left.ModelID = leftDancer.TryGetString("modelID"); left.FaceID = leftDancer.TryGetString("faceID"); left.m_Country = (DancerInfo.Country) int.Parse(leftDancer.TryGetString("country")); left.PlayerID = leftDancer.TryGetString("uid"); left.m_RankingType = (DancerInfo.RankingType) int.Parse(leftDancer.TryGetString("ranking")); right.Name = rightDancer.TryGetString("name"); right.ModelID = rightDancer.TryGetString("modelID"); right.FaceID = rightDancer.TryGetString("faceID"); right.m_Country = (DancerInfo.Country) int.Parse(rightDancer.TryGetString("country")); right.PlayerID = rightDancer.TryGetString("uid"); right.m_RankingType = (DancerInfo.RankingType) int.Parse(rightDancer.TryGetString("ranking")); string[] middleActionList = middleDancer.TryGetString("actions").Split(','); string[] rightActionList = rightDancer.TryGetString("actions").Split(','); string[] leftActionList = leftDancer.TryGetString("actions").Split(','); for (int i = 0; i < middleActionList.Length; i++) { string[] array = middleActionList[i].Split('|'); int beatNumber = int.Parse(array[0]); switch (array[1]) { case "a": DanceActionData attackData = new DanceActionData("", 0, beatNumber); attackData.m_AnimationType = DanceActionData.AnimationType.Attack; switch (array[2]) { case "lr": attackData.m_AttackDir = DanceActionData.AttackDir.FromLeftToRight; break; case "rl": attackData.m_AttackDir = DanceActionData.AttackDir.FromRightToLeft; break; case "rm": attackData.m_AttackDir = DanceActionData.AttackDir.FromRightToMiddle; break; case "mr": attackData.m_AttackDir = DanceActionData.AttackDir.FromMiddleToRight; break; case "lm": attackData.m_AttackDir = DanceActionData.AttackDir.FromLeftToMiddle; break; case "ml": attackData.m_AttackDir = DanceActionData.AttackDir.FromMiddleToLeft; break; } middle.m_DanceActionList.Add(attackData); break; case "b": DanceActionData beatenkData = new DanceActionData("", 0, beatNumber); beatenkData.m_AnimationType = DanceActionData.AnimationType.Beaten; switch (array[2]) { case "lr": beatenkData.m_AttackDir = DanceActionData.AttackDir.FromLeftToRight; break; case "rl": beatenkData.m_AttackDir = DanceActionData.AttackDir.FromRightToLeft; break; case "rm": beatenkData.m_AttackDir = DanceActionData.AttackDir.FromRightToMiddle; break; case "mr": beatenkData.m_AttackDir = DanceActionData.AttackDir.FromMiddleToRight; break; case "lm": beatenkData.m_AttackDir = DanceActionData.AttackDir.FromLeftToMiddle; break; case "ml": beatenkData.m_AttackDir = DanceActionData.AttackDir.FromMiddleToLeft; break; } middle.m_DanceActionList.Add(beatenkData); break; case "d": int animationID = int.Parse(array[2]); DanceActionData danceData = new DanceActionData(StageManager.AnimationGroup[animationID], animationID, beatNumber); danceData.m_AnimationType = DanceActionData.AnimationType.Dance; middle.m_DanceActionList.Add(danceData); break; } } for (int i = 0; i < rightActionList.Length; i++) { string[] array = rightActionList[i].Split('|'); int beatNumber = int.Parse(array[0]); switch (array[1]) { case "a": DanceActionData attackData = new DanceActionData("", 0, beatNumber); attackData.m_AnimationType = DanceActionData.AnimationType.Attack; switch (array[2]) { case "lr": attackData.m_AttackDir = DanceActionData.AttackDir.FromLeftToRight; break; case "rl": attackData.m_AttackDir = DanceActionData.AttackDir.FromRightToLeft; break; case "rm": attackData.m_AttackDir = DanceActionData.AttackDir.FromRightToMiddle; break; case "mr": attackData.m_AttackDir = DanceActionData.AttackDir.FromMiddleToRight; break; case "lm": attackData.m_AttackDir = DanceActionData.AttackDir.FromLeftToMiddle; break; case "ml": attackData.m_AttackDir = DanceActionData.AttackDir.FromMiddleToLeft; break; } right.m_DanceActionList.Add(attackData); break; case "b": DanceActionData beatenkData = new DanceActionData("", 0, beatNumber); beatenkData.m_AnimationType = DanceActionData.AnimationType.Beaten; switch (array[2]) { case "lr": beatenkData.m_AttackDir = DanceActionData.AttackDir.FromLeftToRight; break; case "rl": beatenkData.m_AttackDir = DanceActionData.AttackDir.FromRightToLeft; break; case "rm": beatenkData.m_AttackDir = DanceActionData.AttackDir.FromRightToMiddle; break; case "mr": beatenkData.m_AttackDir = DanceActionData.AttackDir.FromMiddleToRight; break; case "lm": beatenkData.m_AttackDir = DanceActionData.AttackDir.FromLeftToMiddle; break; case "ml": beatenkData.m_AttackDir = DanceActionData.AttackDir.FromMiddleToLeft; break; } right.m_DanceActionList.Add(beatenkData); break; case "d": int animationID = int.Parse(array[2]); DanceActionData danceData = new DanceActionData(StageManager.AnimationGroup[animationID], animationID, beatNumber); danceData.m_AnimationType = DanceActionData.AnimationType.Dance; right.m_DanceActionList.Add(danceData); break; } } for (int i = 0; i < leftActionList.Length; i++) { string[] array = leftActionList[i].Split('|'); int beatNumber = int.Parse(array[0]); switch (array[1]) { case "a": DanceActionData attackData = new DanceActionData("", 0, beatNumber); attackData.m_AnimationType = DanceActionData.AnimationType.Attack; switch (array[2]) { case "lr": attackData.m_AttackDir = DanceActionData.AttackDir.FromLeftToRight; break; case "rl": attackData.m_AttackDir = DanceActionData.AttackDir.FromRightToLeft; break; case "rm": attackData.m_AttackDir = DanceActionData.AttackDir.FromRightToMiddle; break; case "mr": attackData.m_AttackDir = DanceActionData.AttackDir.FromMiddleToRight; break; case "lm": attackData.m_AttackDir = DanceActionData.AttackDir.FromLeftToMiddle; break; case "ml": attackData.m_AttackDir = DanceActionData.AttackDir.FromMiddleToLeft; break; } left.m_DanceActionList.Add(attackData); break; case "b": DanceActionData beatenkData = new DanceActionData("", 0, beatNumber); beatenkData.m_AnimationType = DanceActionData.AnimationType.Beaten; switch (array[2]) { case "lr": beatenkData.m_AttackDir = DanceActionData.AttackDir.FromLeftToRight; break; case "rl": beatenkData.m_AttackDir = DanceActionData.AttackDir.FromRightToLeft; break; case "rm": beatenkData.m_AttackDir = DanceActionData.AttackDir.FromRightToMiddle; break; case "mr": beatenkData.m_AttackDir = DanceActionData.AttackDir.FromMiddleToRight; break; case "lm": beatenkData.m_AttackDir = DanceActionData.AttackDir.FromLeftToMiddle; break; case "ml": beatenkData.m_AttackDir = DanceActionData.AttackDir.FromMiddleToLeft; break; } left.m_DanceActionList.Add(beatenkData); break; case "d": int animationID = int.Parse(array[2]); int beatCounts = 1; if (array.Length == 4) { beatCounts = int.Parse(array[3]); } DanceActionData danceData = new DanceActionData(StageManager.AnimationGroup[animationID], animationID, beatNumber); danceData.AnimationBeatCount = beatCounts; danceData.m_AnimationType = DanceActionData.AnimationType.Dance; left.m_DanceActionList.Add(danceData); break; } } cd.m_MiddleDancer = middle; cd.m_LeftDancer = left; cd.m_RightDancer = right; return(cd); }