private void MoveUnit() { // 이동데이터 한번 앞으로 lock (movelist) { if (movelist.Count > 0) { position = movelist[0]; movelist.RemoveAt(0); JObject json = new JObject(); json["type"] = NetworkProtocol.Move; json["no"] = no; json["x"] = position.x; json["y"] = position.y; json["z"] = position.z; json["q"] = position.q; if (this is User) { NetworkSend.SendAllUser(json, (User)this); } else { NetworkSend.SendAllUser(json); } } } }
private void MoveUnit() { // 이동데이터 한번 앞으로, 모든 유저에게 움직인 정보를 전송 lock (movelist) { if (movelist.Count > 0) { // 다음 위치 꺼내오기 position = movelist[0]; movelist.RemoveAt(0); // 위치정보를 담은 JObject 만들기 JObject json = new JObject(); json["type"] = NetworkProtocol.Move; json["no"] = no; json["x"] = position.x; json["y"] = position.y; json["z"] = position.z; json["q"] = position.q; // 이 클래스가 User 클래스의 부모 클래스일경우 if (this is User) { NetworkSend.SendAllUser(json, (User)this); // 메세지를 전송하는데, 자기 자신(유저)에게는 전송하지 않는다. } else { NetworkSend.SendAllUser(json); // 모두에게 메세지를 전송한다. } } } }
/// <summary> /// 이 객체가 대화를 시작합니다. /// </summary> /// <param name="message"></param> /// <param name="Type"></param> public void ChatMessage(string message, int Type) { JObject json = new JObject(); json["type"] = NetworkProtocol.Chat; json["chattype"] = Type; json["no"] = no; // 보낸사람의 고유번호 json["sender"] = name; // 보낸사람 이름 json["message"] = message; NetworkSend.SendAllUser(json); }
/// <summary> /// 해당 유저가 채팅을 시작합니다. 이 함수에서 명령어 구문 분석이 실행됩니다. /// </summary> /// <param name="message">입력 메세지</param> /// <param name="Type">입력 메세지 타입 (ChatType)</param> public override void ChatMessage(string message, int Type) { //Dice JObject json = new JObject(); json["type"] = NetworkProtocol.Chat; if (message.IndexOf("/주사위") == 0) { Random rd = new Random(); json["chattype"] = ChatType.Notice; json["message"] = name + "(이)가 주사위를 굴렸습니다~!! 주사위가 " + rd.Next(1, 6).ToString() + " 나왔습니다!"; NetworkSend.SendAllUser(json); return; } //Whisper if ((message.IndexOf("/ㅈ ") == 0) || (message.IndexOf("/w ") == 0) || (message.IndexOf("/귓속말 ") == 0)) { string[] Receiver = message.Split(' '); //형식이 맞는지 확인 if (Receiver.Length > 2) { for (int i = 3; i < Receiver.Length; i++) { Receiver[2] += " " + Receiver[i]; } string receiverID = GachonUser.GetID(Receiver[1]); //Sender가 입력한 이름을 통해 귓속말 대상 ID를 얻음 //대상이 접속해있는지 아닌지 확인 foreach (User user in User.Items.Values.ToList()) { if (user.ID.Equals(receiverID)) { json["chattype"] = ChatType.Whisper; json["message"] = Receiver[2]; //메세지 내용 json["no"] = no; json["sender"] = name; user.socket.Send(json); json["group"] = "To " + Receiver[1]; //json["sender"] = "["+Receiver[1]+"]"+ name; //Sender에게 [Reiever]Sender: Content 로 보이도록 this.socket.Send(json); return; } } json["message"] = "[귓속말] 현재 접속해있지 않는 사용자입니다."; } else { json["message"] = "[귓속말] 잘못된 귓속말 형식 입니다. '/w 대상 내용' 으로 입력해 주세요."; } json["chattype"] = ChatType.System; socket.Send(json); return; } // 해당 영역이 그룹의 영역일때 string ingroup = InGroup(); if (ingroup != null) { List <string> idlist = Study.Items[ingroup].Users; if (idlist.Contains(ID)) { json["chattype"] = ChatType.Group; json["message"] = message; json["no"] = no; json["sender"] = name; json["group"] = ingroup; foreach (User user in User.Items.Values) { if (idlist.Contains(user.ID)) { user.socket.Send(json); } } MysqlNode node = new MysqlNode(private_data.mysqlOption, "INSERT INTO group_chat(group_name, student_id, data) VALUES (?group, ?id, ?data)"); node["group"] = ingroup; node["id"] = ID; node["data"] = message; node.ExecuteInsertQuery(); } else { base.ChatMessage(message, Type); } } else { base.ChatMessage(message, Type); } }