/// <summary> /// 创建实例 /// </summary> public static CreatePlayerRequest create(CreatePlayerData data) { CreatePlayerRequest re = (CreatePlayerRequest)BytesControl.createRequest(dataID); re.data = data; return(re); }
/// <summary> /// 回池 /// </summary> protected override void toRelease(DataPool pool) { base.toRelease(pool); this.data.release(pool); this.data = null; }
/** 创建登录数据 */ public CreatePlayerData createCreatePlayerData() { CreatePlayerData data = GameC.factory.createCreatePlayerData(); makeCreatePlayerData(data); return(data); }
private void createPlayer(System.Action <WWW> callback) { //logMessage("RedMetricsManager::createPlayer"); CreatePlayerData data = new CreatePlayerData(); string json = getJsonString(data); sendDataStandalone(redMetricsPlayer, json, callback); }
/** 创建角色数据 */ protected virtual CreatePlayerData getCreatePlayerData() { CreatePlayerData data = new CreatePlayerData(); data.name = createRandomName(); data.sex = SexType.Boy; data.vocation = VocationType.DefaultVocation; return(data); }
public SessionPlayer(Session session, BinaryReader reader) { this.session = session; id = reader.ReadInt32(); try { BinaryFormatter bf = new BinaryFormatter(); data = (CreatePlayerData)bf.Deserialize(reader.BaseStream); } catch(InvalidCastException) { throw new FormatException(); } catch(SerializationException) { throw new FormatException(); } control = new SessionPlayerControl(this); score = reader.ReadInt32(); if(score < 0) throw new FormatException(); turnsPlayed = reader.ReadInt32(); if(turnsPlayed < 0) throw new FormatException(); victories = reader.ReadInt32(); if(victories < 0) throw new FormatException(); int roleVicCount = reader.ReadInt32(); roleVictories = new Dictionary<Role, int>(roleVicCount); for(int i = 0; i < roleVicCount; i++) { Role role = (Role)reader.ReadInt32(); int vic = reader.ReadInt32(); if(vic < 0) throw new FormatException(); roleVictories.Add(role, vic); } int characterVicCount = reader.ReadInt32(); characterVictories = new Dictionary<CharacterType, int>(characterVicCount); for(int i = 0; i < characterVicCount; i++) { CharacterType character = (CharacterType)reader.ReadInt32(); int vic = reader.ReadInt32(); if(vic < 0) throw new FormatException(); characterVictories.Add(character, vic); } }
/// <summary> /// 复制(潜拷贝) /// </summary> protected override void toShadowCopy(BaseData data) { if (!(data is CreatePlayerData)) { return; } CreatePlayerData mData = (CreatePlayerData)data; this.name = mData.name; this.sex = mData.sex; this.vocation = mData.vocation; }
protected override void copyData() { base.copyData(); CreatePlayerData dataTemp = data; if (dataTemp != null) { this.data = (CreatePlayerData)dataTemp.clone(); } else { this.data = null; nullObjError("data"); } }
public SessionPlayer(int id, Session session, CreatePlayerData data) { this.id = id; this.session = session; this.data = data; control = new SessionPlayerControl(this); score = 0; turnsPlayed = 0; victories = 0; List<Role> roles = Utils.GetRoles(); roleVictories = new Dictionary<Role, int>(roles.Count); foreach(Role role in roles) roleVictories[role] = 0; List<CharacterType> characters = Utils.GetCharacterTypes(session); characterVictories = new Dictionary<CharacterType, int>(characters.Count); foreach(CharacterType character in characters) characterVictories[character] = 0; }
protected override CreatePlayerData getCreatePlayerData() { if (!_g18) { _m18 = instance.Type.GetMethod("getCreatePlayerData", 0); _g18 = true; } if (_m18 != null && !_b18) { _b18 = true; CreatePlayerData re = (CreatePlayerData)appdomain.Invoke(_m18, instance, null); _b18 = false; return(re); } else { return(base.getCreatePlayerData()); } }
public override void doCreatePlayer(CreatePlayerData data) { if (!_g20) { _m20 = instance.Type.GetMethod("doCreatePlayer", 1); _g20 = true; } if (_m20 != null && !_b20) { _b20 = true; _p1[0] = data; appdomain.Invoke(_m20, instance, _p1); _p1[0] = null; _b20 = false; } else { base.doCreatePlayer(data); } }
/// <summary> /// 是否数据一致 /// </summary> protected override bool toDataEquals(BaseData data) { CreatePlayerData mData = (CreatePlayerData)data; if (this.name != mData.name) { return(false); } if (this.sex != mData.sex) { return(false); } if (this.vocation != mData.vocation) { return(false); } return(true); }
public override void makeCreatePlayerData(CreatePlayerData data) { if (!_g22) { _m22 = instance.Type.GetMethod("makeCreatePlayerData", 1); _g22 = true; } if (_m22 != null && !_b22) { _b22 = true; _p1[0] = data; appdomain.Invoke(_m22, instance, _p1); _p1[0] = null; _b22 = false; } else { base.makeCreatePlayerData(data); } }
protected override PlayerListData createSinglePlayer(CreatePlayerData createData) { if (!_g23) { _m23 = instance.Type.GetMethod("createSinglePlayer", 1); _g23 = true; } if (_m23 != null && !_b23) { _b23 = true; _p1[0] = createData; PlayerListData re = (PlayerListData)appdomain.Invoke(_m23, instance, _p1); _p1[0] = null; _b23 = false; return(re); } else { return(base.createSinglePlayer(createData)); } }
/** 创建单人角色 */ protected virtual PlayerListData createSinglePlayer(CreatePlayerData createData) { Player player = GameC.player; player.newInitData(); RolePartData rolePartData = player.role.getPartData(); //设置基础键组 rolePartData.playerID = 1; rolePartData.name = createData.name; rolePartData.userID = 1; rolePartData.uid = getVisitorUID(); rolePartData.createAreaID = 1; rolePartData.platform = PlatformType.Visitor; rolePartData.isAdult = true; SystemPartData systemPartData = player.system.getPartData(); systemPartData.createDate = DateData.getNow(); //记录创建时间 //逻辑相关 player.role.doCreatePlayer(createData); //创建调用 player.onNewCreate(); //创建角色日志 GameC.log.createPlayer(player); PlayerListData listData = player.createListData(); player.writeListData(listData); return(listData); }
/// <summary> /// 执行创建角色(逻辑相关) /// </summary> public virtual void doCreatePlayer(CreatePlayerData data) { _d.sex = data.sex; _d.vocation = data.vocation; }
public void Update(CreatePlayerData data) { if(!this.data.Password.CheckPassword(data.Password)) throw new BadPlayerPasswordException(); this.data = data; }
/// <summary> /// Creates a new AI player. /// </summary> public AIPlayer() { data = new CreatePlayerData(NextName(), null, ""); }
public virtual void makeCreatePlayerData(CreatePlayerData data) { data.name = getUniqueIdentifier(); data.sex = SexType.Boy; data.vocation = VocationType.DefaultVocation; }
public void Replace(int id, Password password, CreatePlayerData data, IPlayerSessionEventListener listener) { if(state == SessionState.Ended) throw new BadSessionStateException(); lock(Lock) { if(!this.data.PlayerPassword.CheckPassword(password)) throw new BadSessionPasswordException(); SessionPlayer player = GetPlayer(id); if(player.CheckListener() && !player.IsAI) throw new CannotReplacePlayerException(); player.Update(data); player.RegisterListener(listener); eventMgr.SendController(player); if(state == SessionState.Playing) game.RegisterPlayer(player); eventMgr.OnPlayerUpdated(player); server.SaveState(); } }
public void Join(Password password, CreatePlayerData data, IPlayerSessionEventListener listener) { if(state == SessionState.Ended) throw new BadSessionStateException(); lock(Lock) { if(state != SessionState.WaitingForPlayers) throw new BadSessionStateException(); if(players.Count >= this.data.MaxPlayers) throw new TooManyPlayersException(); if(!this.data.PlayerPassword.CheckPassword(password)) throw new BadSessionPasswordException(); int id = players.GenerateID(); if(creatorId == 0) creatorId = id; SessionPlayer player = new SessionPlayer(id, this, data); players.Add(id, player); playerList.Add(player); player.RegisterListener(listener); eventMgr.SendController(player); eventMgr.OnPlayerJoinedSession(player); server.SaveState(); } }
private void createPlayer(System.Action<WWW> callback) { //logMessage("RedMetricsManager::createPlayer"); CreatePlayerData data = new CreatePlayerData(); string json = getJsonString(data); sendDataStandalone(redMetricsPlayer, json, callback); }
public static void Main(string[] cmdArgs) { Console.Title = "Bang# Command-Line Client"; ConsoleHelper.PrintLine("Bang# Command-Line Client"); ConsoleHelper.PrintLine("-------------------------"); ConsoleHelper.PrintLine("Interface version: {0}.{1}", Utils.InterfaceVersionMajor, Utils.InterfaceVersionMinor); ConsoleHelper.PrintLine("Operating system: {0}", Environment.OSVersion); ConsoleHelper.PrintLine("-------------------------"); string address; string portString; if(cmdArgs.Length != 2) { ConsoleHelper.Print("Server Address: "); address = ConsoleHelper.ReadLine(); ConsoleHelper.Print("Server Port: "); portString = ConsoleHelper.ReadLine(); } else { address = cmdArgs[0]; portString = cmdArgs[1]; } int port; try { port = int.Parse(portString); } catch(FormatException) { ConsoleHelper.ErrorLine("Bad number format!"); return; } try { ConsoleHelper.PrintLine("Connecting to {0} on port {1}...", address, port); Utils.OpenClientChannel(); IServer _server = Utils.Connect(address, port); ConsoleHelper.PrintLine(); if(!Utils.IsServerCompatible(_server)) { ConsoleHelper.ErrorLine("Server version {0}.{1} not compatible with client version {2}.{3}!", _server.InterfaceVersionMajor, _server.InterfaceVersionMinor, Utils.InterfaceVersionMajor, Utils.InterfaceVersionMinor); return; } ConsoleHelper.PrintLine("Server name: {0}", _server.Name); ConsoleHelper.PrintLine("Server description: {0}", _server.Description); _server.RegisterListener(Instance); ConsoleHelper.SuccessLine("Connection estabilished!"); ConsoleHelper.PrintLine(); NestedCommand rootCmd = new NestedCommand(); NestedCommand<IServer> serverCmd = new NestedCommand<IServer>(cmd => _server); serverCmd.MakeServerCommand(); NestedCommand<IServer, ISession> sessionCmd = (NestedCommand<IServer, ISession>)serverCmd["session"]; sessionCmd["join"] = new FinalCommand<ISession>((session, cmd) => { CreatePlayerData cpd; string playerName; Password playerPassword; Password password; if(Instance.sessionControl != null) { ConsoleHelper.ErrorLine("Already connected to a session!"); return; } ConsoleHelper.Print("Session Password: "******"Player Name: "); playerName = ConsoleHelper.ReadLine(); ConsoleHelper.Print("Player Password: "******"Joined session!"); } catch(GameException e) { ConsoleHelper.ErrorLine("Cannot join session: {0}", e.GetType()); } }); sessionCmd["joinai"] = new FinalCommand<ISession>((session, cmd) => { CreatePlayerData cpd; Password password; if(Instance.sessionControl != null) { ConsoleHelper.ErrorLine("Already connected to a session!"); return; } ConsoleHelper.Print("Session Password: "******"TestAI"; try { Instance.SetAI(ai); session.Join(password, cpd, Instance.mainSessionListener); ConsoleHelper.SuccessLine("Joined session!"); } catch(GameException e) { Instance.UnsetAI(); ConsoleHelper.ErrorLine("Cannot join session: {0}", e.GetType()); } }); sessionCmd["replace"] = new FinalCommand<ISession>((session, cmd) => { CreatePlayerData cpd; string playerName; Password playerPassword; Password password; int id; try { id = int.Parse(cmd.Dequeue()); } catch(FormatException) { ConsoleHelper.ErrorLine("Bad number format!"); return; } if(Instance.sessionControl != null) { ConsoleHelper.ErrorLine("Already connected to a session!"); return; } ConsoleHelper.Print("Session Password: "******"Player Name: "); playerName = ConsoleHelper.ReadLine(); ConsoleHelper.Print("Player Password: "******"Joined session!"); } catch(GameException e) { ConsoleHelper.ErrorLine("Cannot join session: {0}", e.GetType()); } }); sessionCmd["replaceai"] = new FinalCommand<ISession>((session, cmd) => { CreatePlayerData cpd; Password playerPassword; Password password; int id; try { id = int.Parse(cmd.Dequeue()); } catch(FormatException) { ConsoleHelper.ErrorLine("Bad number format!"); return; } if(Instance.sessionControl != null) { ConsoleHelper.ErrorLine("Already connected to a session!"); return; } ConsoleHelper.Print("Session Password: "******"Player Password: "******"TestAI"; cpd.Password = playerPassword; try { Instance.SetAI(ai); session.Replace(id, password, cpd, Instance.mainSessionListener); ConsoleHelper.SuccessLine("Joined session!"); } catch(GameException e) { Instance.UnsetAI(); ConsoleHelper.ErrorLine("Cannot join session: {0}", e.GetType()); } }); sessionCmd["aitestcontinue"] = new FinalCommand<ISession>((session, cmd) => { CreatePlayerData cpd; Password password; int id; try { id = int.Parse(cmd.Dequeue()); } catch(FormatException) { ConsoleHelper.ErrorLine("Bad number format!"); return; } if(Instance.sessionControl != null) { ConsoleHelper.ErrorLine("Already connected to a session!"); return; } password = new Password("_aitest"); AI.AIPlayer ai = new AI.AIPlayer(); cpd = ai.CreateData; cpd.Name = "TestAI"; cpd.Password = new Password("_aitest"); try { Instance.SetAI(ai); Instance.aiTest = true; session.Replace(id, password, cpd, Instance.mainSessionListener); if(Instance.sessionControl.Session.State != SessionState.Playing) Instance.sessionControl.StartGame(); ConsoleHelper.SuccessLine("Joined AI Test session!"); Console.ReadKey(true); Instance.sessionControl.Disconnect(); Instance.sessionControl = null; Instance.gameControl = null; ConsoleHelper.SuccessLine("AI test session disconnected!"); } catch(GameException e) { ConsoleHelper.ErrorLine("Cannot join session: {0}", e.GetType()); } Instance.UnsetAI(); Instance.aiTest = false; }); serverCmd["session"] = sessionCmd; serverCmd["test"] = new FinalCommand<IServer>((server, cmd) => { if(Instance.sessionControl != null) { ConsoleHelper.ErrorLine("Already connected to a session!"); return; } int playerCount = 4; if(cmd.Count != 0) { try { playerCount = int.Parse(cmd.Dequeue()); } catch(FormatException) { ConsoleHelper.ErrorLine("Bad number format!"); return; } } CreateSessionData csd = new CreateSessionData { Name = "Test", Description = "", MinPlayers = playerCount, MaxPlayers = playerCount, MaxSpectators = 0, DodgeCity = true }; CreatePlayerData cpd = new CreatePlayerData { Name = "Human" }; try { server.CreateSession(csd, cpd, Instance.mainSessionListener); ConsoleHelper.SuccessLine("Test session created!"); } catch(GameException e) { ConsoleHelper.ErrorLine("Cannot create session: {0}", e.GetType()); } }); serverCmd["testai"] = new FinalCommand<IServer>((server, cmd) => { if(Instance.sessionControl != null) { ConsoleHelper.ErrorLine("Already connected to a session!"); return; } int playerCount = 4; if(cmd.Count != 0) { try { playerCount = int.Parse(cmd.Dequeue()); } catch(FormatException) { ConsoleHelper.ErrorLine("Bad number format!"); return; } } CreateSessionData csd = new CreateSessionData { Name = "Test", Description = "", MaxPlayers = playerCount, MinPlayers = playerCount, MaxSpectators = 0, DodgeCity = true }; AI.AIPlayer ai = new AI.AIPlayer(); CreatePlayerData cpd = ai.CreateData; cpd.Name = "TestAI"; try { server.CreateSession(csd, cpd, Instance.mainSessionListener); Instance.SetAI(ai); ConsoleHelper.SuccessLine("Test AI session created!"); } catch(GameException e) { ConsoleHelper.ErrorLine("Cannot create session: {0}", e.GetType()); } }); serverCmd["aitest"] = new FinalCommand<IServer>((server, cmd) => { if(Instance.sessionControl != null) { ConsoleHelper.ErrorLine("Already connected to a session!"); return; } int playerCount = 4; if(cmd.Count != 0) { try { playerCount = int.Parse(cmd.Dequeue()); } catch(FormatException) { ConsoleHelper.ErrorLine("Bad number format!"); return; } } CreateSessionData csd = new CreateSessionData { Name = "AI Test", Description = "An AI testing session.", MaxPlayers = playerCount, MinPlayers = playerCount, MaxSpectators = 0, PlayerPassword = new Password("_aitest"), DodgeCity = true }; AI.AIPlayer ai = new AI.AIPlayer(); CreatePlayerData cpd = ai.CreateData; cpd.Name = "TestAI"; cpd.Password = new Password("_aitest"); try { server.CreateSession(csd, cpd, Instance.mainSessionListener); Instance.SetAI(ai); Instance.aiTest = true; Instance.sessionControl.StartGame(); ConsoleHelper.SuccessLine("AI test session created!"); Console.ReadKey(true); Instance.sessionControl.Disconnect(); Instance.sessionControl = null; Instance.gameControl = null; Instance.UnsetAI(); Instance.aiTest = false; ConsoleHelper.SuccessLine("AI test session disconnected!"); } catch(GameException e) { ConsoleHelper.ErrorLine("Cannot create session: {0}", e.GetType()); } }); serverCmd["createsession"] = new FinalCommand<IServer>((server, cmd) => { if(Instance.sessionControl != null) { ConsoleHelper.ErrorLine("Already connected to a session!"); return; } ConsoleHelper.Print("Session Name: "); string sessionName = ConsoleHelper.ReadLine(); ConsoleHelper.Print("Session Description: "); string sessionDescription = ConsoleHelper.ReadLine(); int sessionMinPlayers; int sessionMaxPlayers; int sessionMaxSpectators; try { ConsoleHelper.Print("Session MinPlayers: "); sessionMinPlayers = int.Parse(ConsoleHelper.ReadLine()); ConsoleHelper.Print("Session MaxPlayers: "); sessionMaxPlayers = int.Parse(ConsoleHelper.ReadLine()); ConsoleHelper.Print("Session MaxSpectators: "); sessionMaxSpectators = int.Parse(ConsoleHelper.ReadLine()); } catch(FormatException) { ConsoleHelper.ErrorLine("Bad number format!"); return; } ConsoleHelper.Print("Session PlayerPassword: "******"Session SpectatorPassword: "******"Session ShufflePlayers: "); bool sessionShufflePlayers = ConsoleHelper.ReadLine().ToLower() == "y"; ConsoleHelper.Print("Session DodgeCity: "); bool sessionDodgeCity = ConsoleHelper.ReadLine().ToLower() == "y"; ConsoleHelper.Print("Session HighNoon: "); bool sessionHighNoon = ConsoleHelper.ReadLine().ToLower() == "y"; ConsoleHelper.Print("Session FistfulOfCards: "); bool sessionFistfulOfCards = ConsoleHelper.ReadLine().ToLower() == "y"; ConsoleHelper.Print("Session WildWestShow: "); bool sessionWildWestShow = ConsoleHelper.ReadLine().ToLower() == "y"; CreateSessionData csd = new CreateSessionData { Name = sessionName, Description = sessionDescription, MinPlayers = sessionMinPlayers, MaxPlayers = sessionMaxPlayers, MaxSpectators = sessionMaxSpectators, PlayerPassword = sessionPlayerPassword, SpectatorPassword = sessionSpectatorPassword, ShufflePlayers = sessionShufflePlayers, DodgeCity = sessionDodgeCity, HighNoon = sessionHighNoon, FistfulOfCards = sessionFistfulOfCards, WildWestShow = sessionWildWestShow }; ConsoleHelper.Print("Player Name: "); string playerName = ConsoleHelper.ReadLine(); ConsoleHelper.Print("Player Password: "******"Session created!"); } catch(GameException e) { ConsoleHelper.ErrorLine("Cannot create session: {0}", e.GetType()); } }); rootCmd["server"] = serverCmd; NestedCommand<IPlayerSessionControl> sessionControlCommand = new NestedCommand<IPlayerSessionControl>(cmd => { IPlayerSessionControl sessionControl = Instance.sessionControl; if(sessionControl == null) { ConsoleHelper.ErrorLine("Not connected to any session!"); return null; } return sessionControl; }); sessionControlCommand.MakePlayerSessionControlCommand(() => { Instance.sessionControl = null; Instance.gameControl = null; }); rootCmd["sessioncontrol"] = sessionControlCommand; NestedCommand<IPlayerControl> gameControlCommand = new NestedCommand<IPlayerControl>(cmd => { IPlayerControl gameControl = Instance.gameControl; if(gameControl == null) { ConsoleHelper.ErrorLine("Not playing any game!"); return null; } return gameControl; }); gameControlCommand.MakePlayerGameControlCommand(); rootCmd["gamecontrol"] = gameControlCommand; rootCmd["exit"] = new FinalCommand(cmd => { _server.UnregisterListener(Instance); Environment.Exit(0); }); while(true) // command-line loop { try { rootCmd.ReadAndExecute(); } catch(InvalidOperationException) { ConsoleHelper.ErrorLine("Invalid command!"); } } } catch(RemotingException e) { ConsoleHelper.ErrorLine("Remoting error!"); #if DEBUG ConsoleHelper.DebugLine(e.ToString()); #endif return; } catch(SerializationException e) { ConsoleHelper.ErrorLine("Serialization error!"); #if DEBUG ConsoleHelper.DebugLine(e.ToString()); #endif return; } }
public void CreateSession(CreateSessionData sessionData, CreatePlayerData playerData, IPlayerSessionEventListener listener) { lock(Lock) { int id = sessions.GenerateID(); Session session = new Session(this, id, sessionData); sessions.Add(id, session); Console.Error.WriteLine("INFO: Created session #{0}.", id); session.Join(sessionData.PlayerPassword, playerData, listener); eventMgr.OnSessionCreated(session); SaveState(); } }