void RegisterParty(RegData firstRegData) { MatchingData newMd = new MatchingData(); newMd.members = new List <RegData>(); newMd.members.Add(firstRegData); newMd.level = firstRegData.Item1.stats[(int)StatType.Lev]; newMd.difficulty = firstRegData.Item2; newMd.regTime = Stopwatch.StartNew(); waitingParties.Add(newMd); Program.form.UpdateWaitingParties(waitingParties.Count); }
void MatchParty(MatchingData md) { Int64 curTime = Stopwatch.GetTimestamp(); LogRecord.Write("[Party Matching Time : " + md.regTime.ElapsedMilliseconds + " ms]"); foreach (var member in md.members) { LogRecord.Write("[Player : " + member.Item1.pId + "] [Matching Time : " + member.Item4.ElapsedMilliseconds + " ms]"); } int partyLevel = (int)md.members.Average(each => each.Item1.stats[0]); partyLevel += md.difficulty; if (partyLevel < 1) { partyLevel = 1; } using (var connection = _connectionFactory.CreateConnection()) { using (var channel = connection.CreateModel()) { channel.QueueDeclare("simulation_queue", true, false, false, null); var newDic = new Dictionary <string, object>(); newDic.Add("level", partyLevel); for (int idx = 0; idx < Config.MATCHING_PARTY_MEMBERS_NUM; ++idx) { newDic.Add("char_" + idx, md.members[idx].Item1.pId); } var message = JsonMapper.ToJson(newDic); var body = Encoding.UTF8.GetBytes(message); var properties = channel.CreateBasicProperties(); properties.SetPersistent(true); channel.BasicPublish("", "simulation_queue", properties, body); Console.WriteLine(" [x] Sent {0}", message); } } }
void DeregisterParty(MatchingData md) { waitingParties.Remove(md); Program.form.UpdateWaitingParties(waitingParties.Count); // 파티에 있는 유저 모두 inPartyPlayers와 waitingParties에서 제거 md.members.ForEach(mem => { inPartyPlayers.Remove(mem); Program.form.UpdateInPartyPlayers(inPartyPlayers.Count); waitingParties.ForEach(tMd => { tMd.members.Remove(mem); // 유저를 제거후 파티가 비었다면 파티 삭제 if (tMd.members.Count == 0) { waitingParties.Remove(md); Program.form.UpdateWaitingParties(waitingParties.Count); } }); }); }