public NetIncomingMessageNetworkCommandConnectionTranslator(NetworkCommandTranslator networkCommandTranslator) { if (networkCommandTranslator == null) { throw new ArgumentNullException(nameof(networkCommandTranslator)); } IncomingMessageTranslator = networkCommandTranslator; }
public WorldGame ( GameServerConfiguration configuration ) { Configuration = configuration; var leSerializationType = configuration.SerializationAdapterType.LoadType(true, false)[0]; SerializationAdapter = Activator.CreateInstance(leSerializationType) as ISerializationAdapter; GameSectorLayerServices = new Dictionary <string, IStateMachine <string, IGameSectorLayerService> >(); SectorStateMachine = new InMemoryStorageGameSectorLayerServiceFactory(); AuthenticationService = new ExampleLoginAndRegistrationService(); CreateServer( Configuration.ServerPeerName, Configuration.ServerIp, Configuration.ServerPort); //translator var serverTranslator = new NetworkCommandTranslator(SerializationAdapter); var serverMessageTranslator = new NetIncomingMessageNetworkCommandConnectionTranslator(serverTranslator); var cliPassthrough = new CLIPassthroughMechanic(AuthenticationService, Configuration.RunOperation); var writer = new GameSectorLayerWriterMechanic { RedisHost = Configuration.RedisHost, RedisPort = Configuration.RedisPort }; var rediCliPassthrough = new RedisCLIPassthroughMechanic(AuthenticationService) { RedisHost = Configuration.RedisHost, RedisPort = Configuration.RedisPort }; SectorsOwnerMechanics = new List <ISingleUpdeatableMechanic <IGameSectorsOwner, IGameSectorsOwner> > { //routeTrespassingMarker, //playerShifter, cliPassthrough, rediCliPassthrough, writer }; //create default starting sector //AddSectorStateMachine(Configuration.StartingSector); BuildSector( Configuration.StartingSector, Configuration.StartingSector, Configuration.StartingSector, Configuration.StartingSector, Configuration.StartingSector); var inGameSectorStateMachine = GameSectorLayerServices[Configuration.StartingSector]; inGameSectorStateMachine.SharedContext = new GameSectorLayerService { Tag = Configuration.StartingSector }; //inGameSectorStateMachine.SharedContext.CurrentStatus = GameSectorStatus.Running; inGameSectorStateMachine .GetService .Get(Configuration.BuildOperation) .Handle(inGameSectorStateMachine); //var sectorList = new List<string>(); //for (int sectorIndex = 0; sectorIndex < 1; sectorIndex++) //{ // var sectorId = Guid.NewGuid().ToString(); // var sectorDown = Configuration.StartingSector; // var sectorUp = Configuration.StartingSector; // var sectorLeft = Configuration.StartingSector; // var sectorRight = Configuration.StartingSector; // if (sectorIndex - 4 > 0) // sectorDown = sectorList[sectorIndex - 4]; // if (sectorIndex - 3 > 0) // sectorUp = sectorList[sectorIndex - 3]; // if (sectorIndex - 2 > 0) // sectorLeft = sectorList[sectorIndex - 2]; // if (sectorIndex - 1 > 0) // sectorRight = sectorList[sectorIndex - 1]; // sectorList.Add(sectorId); // BuildSector(sectorId, sectorUp, sectorLeft, sectorRight, sectorDown); //} //datalayer to gather data out of the game world var serverStateDataLayer = new ServerGameStateService <WorldGame>( AuthenticationService, AuthenticationService, this, SerializationAdapter); //hard coded logger here GameStateContext = new ServerNetworkGameStateContext <WorldGame>( ServerInput, ServerOutput, serverMessageTranslator, serverStateDataLayer, GetLogger()); GameStateContext.Initialize(); //Language script file LanguageScriptFileEvaluator languageScriptFileEvaluator = new LanguageScriptFileEvaluator(Configuration.StartupScript, Configuration.StartupFunction, Configuration.RunOperation); foreach (var sector in GameSectorLayerServices.Values) { languageScriptFileEvaluator.Evaluate(sector); } Console.WriteLine("runner starting..." + Configuration.StartupFunction); CreateGameTimeIfNotExists(null); Console.WriteLine(CurrentGameTime); foreach (var sector in GameSectorLayerServices.Values) { sector.SharedContext.CurrentGameTime = CurrentGameTime; sector.Run(Configuration.StartupFunction); } }