private void handleNewTick(New_TickPacket pkt) { sendMove(pkt.TickId, (int)tick.ElapsedMilliseconds, Player.Position, null); prevTickId = currentTickId; prevTickTime = currentTickTime; currentTickId = pkt.TickId; currentTickTime = pkt.TickTime; foreach (Status i in pkt.UpdateStatuses) { foreach (StatData data in i.StatData) { if (data.StatsType == StatsType.NAME) { if (!NameToId.ContainsKey(data.obf2)) { NameToId[data.obf2] = i.ObjectId; } else { NameToId.Add(data.obf2, i.ObjectId); } } } if (i.ObjectId == Player.ObjectID) { foreach (StatData data in i.StatData) { if (Player.StatData == null) { Player.StatData = new Dictionary <StatsType, object>(); } if (Player.StatData.ContainsKey(data.StatsType)) { if (data.IsUTFData()) { Player.StatData[data.StatsType] = data.obf2; } else { Player.StatData[data.StatsType] = data.obf1; } } else { if (data.IsUTFData()) { Player.StatData.Add(data.StatsType, data.obf2); } else { Player.StatData.Add(data.StatsType, data.obf1); } } } } if (CurrentObjects.ContainsKey(i.ObjectId)) { foreach (StatData s in i.StatData) { foreach (var y in CurrentObjects[i.ObjectId].Stats.StatData) { if (s.StatsType == y.StatsType) { if (s.IsUTFData()) { s.obf2 = y.obf2; } else { s.obf1 = y.obf1; } } } } } } }
private void handleUpdatePacket(UpdatePacket pkt) { SendPacket(new UpdateAckPacket()); UpdateAckPacketsSend++; foreach (int i in pkt.Drops) { if (CurrentObjects.ContainsKey(i)) { CurrentObjects.Remove(i); } } foreach (ObjectDef def in pkt.NewObjects) { foreach (StatData data in def.Stats.StatData) { if (data.StatsType == StatsType.NAME) { if (!NameToId.ContainsKey(data.obf2)) { NameToId.Add(data.obf2, def.Stats.ObjectId); } } } if (CurrentObjects.ContainsKey(def.Stats.ObjectId)) { CurrentObjects[def.Stats.ObjectId] = def; } else { CurrentObjects.Add(def.Stats.ObjectId, def); } if (def.Stats.ObjectId == Player.ObjectID) { Player.ObjectDefinition = def; foreach (StatData data in def.Stats.StatData) { if (data.StatsType == StatsType.NAME) { Player.Name = data.obf2; Player.IsConnected = true; } if (Player.StatData == null) { Player.StatData = new Dictionary <StatsType, object>(); } if (Player.StatData.ContainsKey(data.StatsType)) { if (data.IsUTFData()) { Player.StatData[data.StatsType] = data.obf2; } else { Player.StatData[data.StatsType] = data.obf1; } } else { if (data.IsUTFData()) { Player.StatData.Add(data.StatsType, data.obf2); } else { Player.StatData.Add(data.StatsType, data.obf1); } } } } } }