DancerInfo GetSelfDancerInfo() { DancerInfo self = new DancerInfo(); if (SelfPlayerData.Sex == Female) { self.m_Sex = DancerInfo.Sex.Female; } else { self.m_Sex = DancerInfo.Sex.Male; } if (SelfPlayerData.Country == China) { self.m_Country = DancerInfo.Country.China; } else { self.m_Country = DancerInfo.Country.America; } if (SelfPlayerLevelData.ScoreIncrement > 0) {//自己是胜利者 self.m_RankingType = DancerInfo.RankingType.Winner; m_SelfWinner = true; } else {//自己是失败者 self.m_RankingType = DancerInfo.RankingType.Loser; m_SelfWinner = false; } m_TempTypeCache.Clear(); self.ModelID = RoleModelConfig.Instance.GetNameById(int.Parse(SelfPlayerData.ModelId)); m_TempTypeCache.Add(self.ModelID); self.FaceID = RoleEmotionConfig.Instance.GetNameById(int.Parse(SelfPlayerData.EmotionId)); self.Name = SelfPlayerData.UserName; self.PlayerID = SelfPlayerData.Uuid; int songMax = m_SongMaxScoreInfo.MaxScore; int clickMax = (int)(m_SongMaxScoreInfo.MaxScore * m_SongMaxScoreInfo.ClickScorePercent); int voiceMax = (int)(m_SongMaxScoreInfo.MaxScore * m_SongMaxScoreInfo.VoiceScorePercent); self.WholeScore = m_Score; self.VoiceScore = (int)(m_SumVoiceScore * CorePlaySettings.Instance.m_VoiceRightPoint); self.ClickScore = self.WholeScore - self.VoiceScore; self.WholeRankingPercent = (float)self.WholeScore / songMax; self.ClickScorePercent = (float)self.ClickScore / clickMax; self.VoiceScorePercent = (float)self.VoiceScore / voiceMax; return(self); }
public static DancerInfo GetNPCDancer(bool betterOne, int wholeScore, DancerInfo.Country country, DancerInfo.Sex sex, int maxScore, int clickMaxScore, List <string> typeList) { DancerInfo dancer = new DancerInfo(); if (country == DancerInfo.Country.China) { dancer.Name = RoleManager.RandomUserNickName(LanguageType.Chinese); } else { dancer.Name = RoleManager.RandomUserNickName(LanguageType.English); } dancer.m_Country = country; dancer.m_Sex = sex; if (betterOne) { dancer.WholeScore = UnityEngine.Random.Range(wholeScore + 1, maxScore); dancer.m_RankingType = DancerInfo.RankingType.Winner; } else { dancer.WholeScore = UnityEngine.Random.Range(0, wholeScore); dancer.m_RankingType = DancerInfo.RankingType.Loser; } dancer.ClickScore = UnityEngine.Random.Range(0, dancer.WholeScore); dancer.VoiceScore = dancer.WholeScore - dancer.ClickScore; dancer.WholeRankingPercent = (float)dancer.WholeScore / maxScore; dancer.ClickScorePercent = (float)dancer.ClickScore / clickMaxScore; dancer.VoiceScorePercent = (float)dancer.VoiceScore / (maxScore - clickMaxScore); string tempType = RoleModelConfig.Instance.GetNameById(UnityEngine.Random.Range(20001, 20009)); while (typeList.Contains(tempType)) { tempType = RoleModelConfig.Instance.GetNameById(UnityEngine.Random.Range(20001, 20009)); } typeList.Add(tempType); dancer.ModelID = tempType; dancer.FaceID = RoleEmotionConfig.Instance.GetNameById(UnityEngine.Random.Range(30001, 30009)); dancer.PlayerID = "npc"; return(dancer); }
IEnumerator LoadStageData() { yield return(new WaitForSeconds(WaitingLength)); //模拟数据 if (!m_AlreadyRuning) { m_AlreadyRuning = true; int songMax = m_SongMaxScoreInfo.MaxScore; int clickMax = (int)(m_SongMaxScoreInfo.MaxScore * m_SongMaxScoreInfo.ClickScorePercent); int voiceMax = (int)(m_SongMaxScoreInfo.MaxScore * m_SongMaxScoreInfo.VoiceScorePercent); DancerInfo left = new DancerInfo(); DancerInfo right = new DancerInfo(); if (m_SelfWinner) { left = GetNPCDancer(false, m_Score, DancerInfo.Country.China, DancerInfo.Sex.Female, songMax, clickMax, m_TempTypeCache); right = GetNPCDancer(false, m_Score, DancerInfo.Country.America, DancerInfo.Sex.Male, songMax, clickMax, m_TempTypeCache); } else { int temp = UnityEngine.Random.Range(0, 2); if (temp == 0) { left = GetNPCDancer(true, m_Score, DancerInfo.Country.China, DancerInfo.Sex.Female, songMax, clickMax, m_TempTypeCache); right = GetNPCDancer(false, m_Score, DancerInfo.Country.America, DancerInfo.Sex.Male, songMax, clickMax, m_TempTypeCache); } else { left = GetNPCDancer(false, m_Score, DancerInfo.Country.China, DancerInfo.Sex.Female, songMax, clickMax, m_TempTypeCache); right = GetNPCDancer(true, m_Score, DancerInfo.Country.America, DancerInfo.Sex.Male, songMax, clickMax, m_TempTypeCache); } } stageManager.CreateDancer(left, StageManager.DancerPos.Left); stageManager.CreateDancer(right, StageManager.DancerPos.Right); stageManager.CreateDancerActionData(); } }
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); }
void ServerDataCallback() { OnReceive_ScoreData(); if (!m_AlreadyRuning) { StopCoroutine(LoadStageData()); m_AlreadyRuning = true; //从服务器获取的真实数据 int songMax = m_SongMaxScoreInfo.MaxScore; int clickMax = (int)(m_SongMaxScoreInfo.MaxScore * m_SongMaxScoreInfo.ClickScorePercent); int voiceMax = (int)(m_SongMaxScoreInfo.MaxScore * m_SongMaxScoreInfo.VoiceScorePercent); DancerInfo left = new DancerInfo(); DancerInfo right = new DancerInfo(); if (!string.IsNullOrEmpty(SelfPlayerLevelData.TempOtherLevelProcessData)) { JsonData otherPlayers = JsonMapper.ToObject(SelfPlayerLevelData.TempOtherLevelProcessData); JsonData leftJson = otherPlayers[0]; JsonData rightJson = otherPlayers[1]; if (int.Parse(leftJson.TryGetString("Country")) == China) { left.m_Country = DancerInfo.Country.China; } else { left.m_Country = DancerInfo.Country.America; } left.ModelID = RoleModelConfig.Instance.GetNameById(int.Parse(leftJson.TryGetString("ModelId"))); left.Name = leftJson.TryGetString("UserName"); left.FaceID = RoleEmotionConfig.Instance.GetNameById(int.Parse(leftJson.TryGetString("EmotionId"))); left.PlayerID = leftJson.TryGetString("uid"); PlayerOperationData leftOperation = PlayerOperationData.GetDataFromJson(leftJson.TryGetString("Process")); left.WholeScore = leftOperation.wholeScore; left.ClickScore = leftOperation.clickScore; left.VoiceScore = left.WholeScore - left.ClickScore; left.WholeRankingPercent = (float)left.WholeScore / songMax; left.ClickScorePercent = (float)left.ClickScore / clickMax; left.VoiceScorePercent = (float)left.VoiceScore / voiceMax; if (int.Parse(rightJson.TryGetString("Country")) == China) { right.m_Country = DancerInfo.Country.China; } else { right.m_Country = DancerInfo.Country.America; } right.ModelID = RoleModelConfig.Instance.GetNameById(int.Parse(rightJson.TryGetString("ModelId"))); right.Name = leftJson.TryGetString("UserName"); right.FaceID = RoleEmotionConfig.Instance.GetNameById(int.Parse(rightJson.TryGetString("EmotionId"))); right.PlayerID = rightJson.TryGetString("uid"); PlayerOperationData rightOperation = PlayerOperationData.GetDataFromJson(rightJson.TryGetString("Process")); right.WholeScore = rightOperation.wholeScore; right.ClickScore = rightOperation.clickScore; right.VoiceScore = right.WholeScore - right.ClickScore; right.WholeRankingPercent = (float)right.WholeScore / songMax; right.ClickScorePercent = (float)right.ClickScore / clickMax; right.VoiceScorePercent = (float)right.VoiceScore / voiceMax; } else { if (m_SelfWinner) { left = GetNPCDancer(false, m_Score, DancerInfo.Country.China, DancerInfo.Sex.Female, songMax, clickMax, m_TempTypeCache); right = GetNPCDancer(false, m_Score, DancerInfo.Country.America, DancerInfo.Sex.Male, songMax, clickMax, m_TempTypeCache); } else { int temp = UnityEngine.Random.Range(0, 2); if (temp == 0) { left = GetNPCDancer(true, m_Score, DancerInfo.Country.China, DancerInfo.Sex.Female, songMax, clickMax, m_TempTypeCache); right = GetNPCDancer(false, m_Score, DancerInfo.Country.America, DancerInfo.Sex.Male, songMax, clickMax, m_TempTypeCache); } else { left = GetNPCDancer(false, m_Score, DancerInfo.Country.China, DancerInfo.Sex.Female, songMax, clickMax, m_TempTypeCache); right = GetNPCDancer(true, m_Score, DancerInfo.Country.America, DancerInfo.Sex.Male, songMax, clickMax, m_TempTypeCache); } } } stageManager.CreateDancer(left, StageManager.DancerPos.Left); stageManager.CreateDancer(right, StageManager.DancerPos.Right); stageManager.CreateDancerActionData(); } }