public NMVersionMismatch(NMVersionMismatch.Type code, string ver) { this.byteCode = (byte)code; this.serverVersion = ver; }
public static NetMessage OnMessageFromNewClient(NetMessage m) { if (Network.isServer) { if (m is NMRequestJoin) { if (DuckNetwork.inGame) { return((NetMessage) new NMGameInProgress()); } NMRequestJoin nmRequestJoin = m as NMRequestJoin; // DevConsole.Log(DCSection.DuckNet, "|DGYELLOW|Join attempt from " + nmRequestJoin.name, -1); NMVersionMismatch.Type code = DuckNetwork.CheckVersion(nmRequestJoin.id); if (code != NMVersionMismatch.Type.Match) { // DevConsole.Log(DCSection.DuckNet, "|DGYELLOW|" + nmRequestJoin.name + " had a version mismatch.", -1); // return (NetMessage)new NMVersionMismatch(code, DG.version); return((NetMessage) new NMVersionMismatch(code, Assembly.GetEntryAssembly().GetName().Version.ToString())); } Type methodtype = typeof(DuckNetwork); MethodInfo createProfile = methodtype.GetMethod("CreateProfile", BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static); // Profile profile = DuckNetwork.CreateProfile(m.connection, nmRequestJoin.name, -1, (InputProfile)null, nmRequestJoin.hasCustomHats, nmRequestJoin.wasInvited, false); Profile profile = (Profile)createProfile.Invoke(null, new object[] { m.connection, nmRequestJoin.name, -1, (InputProfile)null, nmRequestJoin.hasCustomHats, nmRequestJoin.wasInvited, false }); if (profile == null) { // DevConsole.Log(DCSection.DuckNet, "|DGYELLOW|" + nmRequestJoin.name + " could not join, server is full.", -1); return((NetMessage) new NMServerFull()); } profile.flippers = nmRequestJoin.flippers; profile.networkStatus = DuckNetStatus.WaitingForLoadingToBeFinished; _core.status = DuckNetStatus.Connected; TeamSelect2Edits.OnNetworkConnecting(profile); DuckNetwork.SendNewProfile(profile, m.connection, false); // More slots so we need bigger method to handle them Send.Message(new NMChangeSlotsEdits((byte)DuckNetwork.profiles[0].slotType, (byte)DuckNetwork.profiles[1].slotType, (byte)DuckNetwork.profiles[2].slotType, (byte)DuckNetwork.profiles[3].slotType, (byte)DuckNetwork.profiles[4].slotType, (byte)DuckNetwork.profiles[5].slotType, (byte)DuckNetwork.profiles[6].slotType, (byte)DuckNetwork.profiles[7].slotType), m.connection); TeamSelect2.SendMatchSettings(m.connection, true); return((NetMessage)null); } if (m is NMMessageIgnored) { return((NetMessage)null); } } else { if (m is NMRequestJoin) { // DevConsole.Log(DCSection.DuckNet, "|DGYELLOW|Another computer has requested a matchmaking connection.", -1); return((NetMessage) new NMGameInProgress()); } if (m is NMMessageIgnored) { return((NetMessage)null); } } return((NetMessage) new NMMessageIgnored()); }