public void SetSkillInfo(Skill_data skill) { _current_skill_info = skill; }
public static void ReceiveMessage() { if (ClientSocket.Poll(-1, SelectMode.SelectRead)) { byte[] head = new byte[4]; ClientSocket.Receive(head); int n = TransformController.BytesToInt(head, 0); for (int i = 0; i < n; i++) { if (ClientSocket.Poll(-1, SelectMode.SelectRead)) { ClientSocket.Receive(head); //for (int j = 0; j < 4; j++) Debug.Log(j + " " + head[j]); int bodyLength = TransformController.BytesToInt(head, 0); byte[] body = new byte[bodyLength]; if (ClientSocket.Poll(-1, SelectMode.SelectRead)) { ClientSocket.Receive(body); Msg recv = TransformController.Deserialize <Msg>(body); clientFrame = recv.Frame; //Debug.Log("Optype = " + recv.Optype); //Debug.Log("Username = "******"clientFrame = " + clientFrame); int playerId = PlayerMap[recv.Username]; //Debug.Log("username = "******"playerid = " + playerId); //Debug.Log("playerid hearusername = "******"username hereplayerid = " + playerMap[recv.Username]); if ((recv.Optype & (1 << 3)) != 0) // Move { Vector3 move = new Vector3(recv.Posx, recv.Posy, recv.Posz); PlayerPos[playerId] += move; //Debug.Log(recv.Username + " " + move); //Vector3 trans = new Vector3(forward.x, forward.y, forward.z); //Debug.Log(nowPos + " " + trans); //IsWalking[playerId] = (recv.Posx != 0) || (recv.Posz != 0); IsWalking[playerId] = !Mathf.Approximately(recv.Posx, 0f) || !Mathf.Approximately(recv.Posz, 0f); //Debug.Log(recv.Posx + " " + recv.Posz + (!Mathf.Approximately(recv.Posx, 0f) || !Mathf.Approximately(recv.Posz, 0f))); } for (int j = 0; j < skills.skill_config_list.Count; j++) { if (clientFrame < SkillAnimation[playerId][j]) { IsSkill[playerId][j] = true; } else { IsSkill[playerId][j] = false; } } bool nowState = false; for (int j = 0; j < 2; j++) { nowState |= IsSkill[playerId][j]; } if (nowState == false) { if (clientFrame >= SkillNextFrame[playerId][0]) // Skill0 //Debug.Log(recv.Username); { Skill_data skill0 = skills.skill_config_list[0]; if ((recv.Optype & (1 << 4)) != 0) { //List<int> skillFrame = skillAttackFrame[playerId]; List <int> skillFrame = skill0.skill_attack_frame; foreach (int x in skillFrame) { //Skill newSkill = new Skill(playerId, clientFrame + x - 1, playerPos[playerId], skillAreaType[playerId], skillRadius[playerId], skillDamage[playerId]); Skill newSkill = new Skill(playerId, clientFrame + x - 1, PlayerPos[playerId], skill0.skill_area_type, skill0.skill_radius, skill0.skill_damage); AllSkillRelease.Add(newSkill); } //skillNextFrame[playerId] = clientFrame + skillCoolDown[playerId] - 1; SkillNextFrame[playerId][0] = clientFrame + skill0.skill_cool_down - 1; //skillAnimation[playerId] = clientFrame + skillTotFrame[playerId] - 1; SkillAnimation[playerId][0] = clientFrame + skill0.skill_tot_frame - 1; IsSkill[playerId][0] = true; } } if (clientFrame >= SkillNextFrame[playerId][1]) // Skill1 { Skill_data skill1 = skills.skill_config_list[1]; if ((recv.Optype & (1 << 5)) != 0) { List <int> skillFrame = skill1.skill_attack_frame; /*foreach (int x in skillFrame) { * Skill newSkill = new Skill(playerId, clientFrame + x - 1, PlayerPos[playerId], skill1.skill_area_type, skill1.skill_radius, skill1.skill_damage); * AllSkillRelease.Add(newSkill); * }*/ SkillNextFrame[playerId][1] = clientFrame + skill1.skill_cool_down - 1; SkillAnimation[playerId][1] = clientFrame + skill1.skill_tot_frame - 1; IsSkill[playerId][1] = true; } } for (int j = AllSkillRelease.Count - 1; j >= 0; j--) { Skill nowSkill = AllSkillRelease[j]; if (nowSkill.attackFrame == clientFrame) { for (int k = 0; k < PlayerName.Count; k++) { int nowPlayerId = PlayerMap[PlayerName[k]]; //Debug.Log("nowPlayerId = " + nowPlayerId + ", nowplayerName = " + playerName[nowPlayerId]); //Debug.Log("playerId = " + playerId + ", playerName = " + recv.Username); //Debug.Log("releasePosition = " + nowSkill.releasePosition + ", playerPosition = " + playerPos[nowPlayerId]); if (nowPlayerId != nowSkill.releasePlayerIndex && IsDie[nowPlayerId] == false) { //Debug.Log("dddddd"); bool releaseTag = false; if (nowSkill.areaType == 1 && (nowSkill.releasePosition - PlayerPos[nowPlayerId]).sqrMagnitude <= nowSkill.radius) { releaseTag = true; } if (releaseTag == true) { NowHealthPoint[nowPlayerId] -= nowSkill.damage; if (NowHealthPoint[nowPlayerId] < 0) { NowHealthPoint[nowPlayerId] = 0; IsDie[nowPlayerId] = true; } } } } AllSkillRelease.Remove(AllSkillRelease[j]); } } } } } } } }