Пример #1
0
        private void CheckShip(IGameLogger logger, int accountId, VaultView vault, Ship ship)
        {
            // check ship
            if (!vault.Ships.Contains(ship.ID))
            {
                throw logger.LogError(new Exception($"Check for player {accountId} on hangar with ship {ship.ID} resulted in a assigned ship which is not even owned!"));
            }

            // check amount of items packed into the ship
            if (Weapons.Count > ship.WeaponSlots)
            {
                Weapons = Weapons.Take(ship.WeaponSlots).ToList();
            }

            if (Generators.Count + Shields.Count > ship.GeneratorSlots)
            {
                int diff = Math.Abs((Generators.Count + Shields.Count) - ship.GeneratorSlots);

                int generatorsToRemove = Math.Min(diff, Generators.Count);
                int shieldsToRemove    = Math.Min(diff - generatorsToRemove, Shields.Count);

                Generators = Generators.Take(Generators.Count - generatorsToRemove).ToList();
                Shields    = Shields.Take(Shields.Count - shieldsToRemove).ToList();

                if (diff != 0)
                {
                    logger.LogWarning($"Check for player {accountId} on hangar with ship {ship.ID} resulted with a problematic difference of {diff}");
                }
            }
        }
Пример #2
0
        private void CheckAvailableGenerators(IGameLogger logger, int accountId, VaultView vault, Ship ship)
        {
            if (Generators == null)
            {
                Generators = new List <int>();
            }

            var tempGeneratorsGroup = Generators.GroupBy(x => x).ToList();

            foreach (var grouping in tempGeneratorsGroup)
            {
                if (!vault.Generators.ContainsKey(grouping.Key))
                {
                    logger.LogWarning($"Check for player {accountId} on hangar with ship {ship.ID} resulted with equipped generators id:{grouping.Key} which are not owned!");
                    Generators.RemoveAll(x => x == grouping.Key);
                }
                else if (grouping.Count() > vault.Generators[grouping.Key])
                {
                    int diff = grouping.Count() - vault.Generators[grouping.Key];

                    Generators.RemoveAll(x => x == grouping.Key && diff-- > 0);

                    if (diff != 0)
                    {
                        logger.LogWarning($"Check for player {accountId} on hangar with ship {ship.ID} resulted with a problematic difference of {diff} (generator check)");
                    }
                }
            }
        }
Пример #3
0
 public void Check(IGameLogger logger, int accountId, VaultView vault, Ship ship)
 {
     CheckShip(logger, accountId, vault, ship);
     CheckDrones(logger, accountId, vault, ship);
     CheckAvailableWeapons(logger, accountId, vault, ship);
     CheckAvailableShields(logger, accountId, vault, ship);
     CheckAvailableGenerators(logger, accountId, vault, ship);
 }
Пример #4
0
        public PolicyConnectionHandler(Socket socket)
        {
            _logger = GameContext.Logger ?? throw new ArgumentNullException("invalid logger!");
            _socket = socket ?? throw _logger.LogError(new ArgumentNullException(nameof(socket)));
            _stream = new NetworkStream(_socket);

            Process();
        }
Пример #5
0
        public GameOverScene(Game game, ISceneManager sceneManager, IGraphicsSystem graphicsSystem,
                             IGameSettings gameSettings, IGameLogger logger, IGameKeys gameKeys, IGamePoints gamePoints) : base(game,
                                                                                                                                sceneManager, graphicsSystem, gameSettings, logger, gameKeys)
        {
            _gamePoints = gamePoints ?? throw new ArgumentNullException(nameof(gamePoints));

            _spriteBatch = new SpriteBatch(game.GraphicsDevice);
        }
Пример #6
0
        public SnakeEntity(IGameLogger logger, IGameFieldEntity gameField, IGameSettings gameSettings)
        {
            _logger       = logger;
            _gameField    = gameField;
            _gameSettings = gameSettings;

            Initialize();
        }
Пример #7
0
        public SnakeGameComponent(ISnakeEntity snake, IGraphics2DComponent graphicsComponent, ISnakeMovementComponent snakeMovement, IGameLogger logger)
        {
            _snake                  = snake ?? throw new ArgumentNullException(nameof(snake));
            _graphicsComponent      = graphicsComponent ?? throw new ArgumentNullException(nameof(graphicsComponent));
            _snakeMovementComponent = snakeMovement ?? throw new ArgumentNullException(nameof(snakeMovement));
            _logger                 = logger ?? throw new ArgumentNullException(nameof(logger));

            Enabled = true;
        }
 internal static ICommand CreateInstance(Type type, IGameLogger logger)
 {
     try {
         return(type.CreateInstance() as ICommand);
     } catch (Exception e) {
         logger?.LogError(e);
     }
     return(null);
 }
Пример #9
0
 protected BaseScene(Game game, ISceneManager sceneManager, IGraphicsSystem graphicsSystem, IGameSettings gameSettings, IGameLogger logger, IGameKeys gameKeys)
 {
     Game           = game ?? throw new ArgumentNullException(nameof(game));
     SceneManager   = sceneManager ?? throw new ArgumentNullException(nameof(sceneManager));
     GraphicsSystem = graphicsSystem ?? throw new ArgumentNullException(nameof(graphicsSystem));
     GameSettings   = gameSettings ?? throw new ArgumentNullException(nameof(gameSettings));
     Logger         = logger ?? throw new ArgumentNullException(nameof(logger));
     GameKeys       = gameKeys ?? throw new ArgumentNullException(nameof(gameKeys));
 }
Пример #10
0
        public void Start()
        {
            transform.position   = Position;
            transform.localScale = Body.Dimensions;
            logger = new ProxyLogger();

            xAxis = 1f;
            zAxis = 0f;
        }
        public EntityControllerBase(int id, string username, Faction faction)
        {
            _logger = GameContext.Logger ?? throw new ArgumentNullException("invalid logger!");

            ID       = id;
            Username = username;
            Faction  = faction;

            CurrentClock = new OffsetStopwatch(TimeSpan.FromSeconds(10));
        }
Пример #12
0
        public Game(
            IGameLogger logger,
            IGameRegion gameRegion)
        {
            this.logger           = logger;
            this.categorySelector = gameRegion.CategorySelector;
            this.board            = gameRegion.Board;
            var questionFactory = gameRegion.QuestionFactory;

            allQuestions = questionFactory.GenerateQuestionsForCategories();
        }
Пример #13
0
        public FoodManager(Game game, IGameFieldEntity field, IGameSettings gameSettings, IGraphicsSystem graphicsSystem, IGameLogger logger, ISnakeEntity snake)
        {
            _game           = game ?? throw new ArgumentNullException(nameof(game));
            _gameField      = field ?? throw new ArgumentNullException(nameof(field));
            _gameSettings   = gameSettings ?? throw new ArgumentNullException(nameof(gameSettings));
            _graphicsSystem = graphicsSystem ?? throw new ArgumentNullException(nameof(graphicsSystem));
            _logger         = logger ?? throw new ArgumentNullException(nameof(logger));
            _snake          = snake ?? throw new ArgumentNullException(nameof(snake));

            _foods = new List <IFoodGameComponent>();
        }
        public GameConnectionHandler(Socket socket)
        {
            _logger = GameContext.Logger ?? throw new ArgumentNullException("invalid logger!");
            _socket = socket ?? throw _logger.LogError(new ArgumentNullException(nameof(socket)));
            _stream = new NetworkStream(_socket);

            _handlerLookup = GameContext.LookupBuilder.BuildHandlerLookup(_logger);
            _commandLookup = GameContext.LookupBuilder.BuildCommandLookup(_logger);

            Process();
        }
Пример #15
0
        public Game(
            IGameLogger logger,
            ICategorySelector categorySelector,
            IQuestionFactory questionFactory)
        {
            this.logger           = logger;
            this.categorySelector = categorySelector;

            popQuestions     = questionFactory.GenerateQuestionsForCategory(QuestionCategory.Pop);
            scienceQuestions = questionFactory.GenerateQuestionsForCategory(QuestionCategory.Science);
            sportsQuestions  = questionFactory.GenerateQuestionsForCategory(QuestionCategory.Sports);
            rockQuestions    = questionFactory.GenerateQuestionsForCategory(QuestionCategory.Rock);
        }
Пример #16
0
        public ChatDebugConnectionHandler(Socket socket)
        {
            _logger = GameContext.Logger ?? throw new ArgumentNullException("invalid logger!");
            _socket = socket ?? throw _logger.LogError(new ArgumentNullException(nameof(socket)));
            _stream = new NetworkStream(_socket);


            _client = new TcpClient();
            _client.Connect("eps.optimist.darkorbit.infinicast.io", 7771);


            Process("Client_0", _stream);
            Process("Server_0", _client.GetStream());
        }
Пример #17
0
        public void Start()
        {
            logger               = new ProxyLogger();
            transform.position   = Position;
            transform.localScale = Body.Dimensions;
            this.pacmanVisitor   = new PacmanVisitor(this);

            var edibleGameObjects = GameObject.FindGameObjectsWithTag("Edible");

            this.edibles = edibleGameObjects.Select(e => e.GetComponent <EdibleDot>()).ToList();

            var ghostGameObjects = GameObject.FindGameObjectsWithTag("Ghost");

            this.ghosts = ghostGameObjects.Select(e => e.GetComponent <GhostComponent>()).ToList();
        }
        public ICommandLookup BuildCommandLookup(IGameLogger logger)
        {
            if (_commandLookup == null)
            {
                _commandLookup = new CommandLookup(logger);
                int loaded = _commandLookup.LoadCommands <NettyLookupBuilder>("10.0.6435");

                if (loaded < 0)
                {
                    throw logger.LogError(new InvalidOperationException("Failed to fill commandLookup!"));
                }

                logger.LogInformation($"CommandLookup loaded with {loaded} commands!");
            }
            return(_commandLookup);
        }
        public IHandlerLookup BuildHandlerLookup(IGameLogger logger)
        {
            if (_handlerLookup == null)
            {
                _handlerLookup = new HandlerLookup(logger);
                int loaded = _handlerLookup.LoadHandlers <NettyLookupBuilder>("10.0.6435");

                if (loaded < 0)
                {
                    throw logger.LogError(new InvalidOperationException("Failed to fill handlerLookup!"));
                }

                logger.LogInformation($"HandlerLookup loaded with {loaded} handlers!");
            }
            return(_handlerLookup);
        }
Пример #20
0
        public SnakeGame()
        {
            ReadSettings();

            _logger = new NLogFileLogger(_gameSettings);

            _graphics = new GraphicsDeviceManager(this)
            {
                GraphicsProfile = GraphicsProfile.HiDef
            };

            ApplyScreenChanges();

            IsMouseVisible = true;

            Content.RootDirectory = "Content";
        }
Пример #21
0
        public GameManager(IGameLogger logger, IFoodManager foodManager, ISnakeGameComponent snake, IGameFieldEntity gameField,
                           IGameSettings gameSettings, IGamePoints gamePoints, ISnakeEntity snakeEntity, ISceneManager sceneManager, Game game, IGraphicsSystem graphicsSystem, IGameKeys gameKeys)
        {
            _logger         = logger ?? throw new ArgumentNullException(nameof(logger));
            _foodManager    = foodManager ?? throw new ArgumentNullException(nameof(foodManager));
            _snakeComponent = snake ?? throw new ArgumentNullException(nameof(snake));
            _gameField      = gameField ?? throw new ArgumentNullException(nameof(gameField));
            _gameSettings   = gameSettings ?? throw new ArgumentNullException(nameof(gameSettings));
            _gamePoints     = gamePoints ?? throw new ArgumentNullException(nameof(gamePoints));
            _snakeEntity    = snakeEntity ?? throw new ArgumentNullException(nameof(snakeEntity));
            _sceneManager   = sceneManager ?? throw new ArgumentNullException(nameof(sceneManager));
            _game           = game ?? throw new ArgumentNullException(nameof(game));
            _graphicsSystem = graphicsSystem ?? throw new ArgumentNullException(nameof(graphicsSystem));
            _gameKeys       = gameKeys ?? throw new ArgumentNullException(nameof(gameKeys));

            Initialize();
        }
Пример #22
0
        public static void Initialize(IGameLogger logger, string connectionString, string database,
                                      IPEndPoint gameServerConfiguration, IPEndPoint policyServerConfiguration,
                                      IPEndPoint chatServerConfiguration)
        {
            lock (_lock) {
                if (_initialized || !(_initialized = true))
                {
                    return;
                }

                _logger = logger ?? throw new ArgumentNullException(nameof(logger));

                _database      = new DatabaseContext(connectionString, database);
                _lookupBuilder = new NettyLookupBuilder();
                _gameServer    = new GameServer(gameServerConfiguration);
                _policyServer  = new PolicyServer(policyServerConfiguration);
                _chatServer    = new ChatServer(chatServerConfiguration);
            }
        }
Пример #23
0
        private void CheckAvailableShields(IGameLogger logger, int accountId, VaultView vault, Ship ship)
        {
            if (Shields == null)
            {
                Shields = new List <int>();
            }

            var tempShieldsGroup = Shields.Union(Drones.SelectMany(x => x.ShieldItems)).GroupBy(x => x).ToList();

            foreach (var grouping in tempShieldsGroup)
            {
                if (!vault.Shields.ContainsKey(grouping.Key))
                {
                    logger.LogWarning($"Check for player {accountId} on hangar with ship {ship.ID} resulted with equipped shields id:{grouping.Key} which are not owned!");
                    Shields.RemoveAll(x => x == grouping.Key);
                }
                else if (grouping.Count() > vault.Shields[grouping.Key])
                {
                    int diff = grouping.Count() - vault.Shields[grouping.Key];

                    Shields.RemoveAll(x => x == grouping.Key && diff-- > 0);
                    foreach (var drone in Drones)
                    {
                        if (diff <= 0)
                        {
                            break;
                        }

                        drone.ShieldItems.RemoveAll(x => x == grouping.Key && diff-- > 0);
                    }

                    if (diff != 0)
                    {
                        logger.LogWarning($"Check for player {accountId} on hangar with ship {ship.ID} resulted with a problematic difference of {diff} (shield check)");
                    }
                }
            }
        }
Пример #24
0
        // public IEnumerable<RaceState> Play(RaceState initialState, RaceSolution solution)
        // {
        //     var race = initialState.MakeCopy();
        //     var i = 0;
        //     while (!race.IsFinished && i < solution.Accelerations.Length)
        //     {
        //         var command = solution.Accelerations[i++];
        //         race.FirstCar.NextCommand = command;
        //         race.Tick();
        //         yield return race.MakeCopy();
        //     }
        // }

        public RaceState Play(RaceState initialState, ISolver <RaceState, RaceSolution> solver,
                              IGameLogger <RaceTrack, RaceState> logger, int aiTimeoutPerTickMs = timeoutPerTick)
        {
            var race = initialState.MakeCopy();

            logger?.LogStart(race.Track);
            while (!race.IsFinished)
            {
                var variants = solver.GetSolutions(race.MakeCopy(),
                                                   aiTimeoutPerTickMs).ToList();
                var aiLogger = logger?.GetAiLogger(0);
                LogAiVariants(race, aiLogger, variants);
                var variant = variants.Last();
                var(firstCommand, secondCommand) = variant.CarCommands[0];
                race.FirstCar.NextCommand        = firstCommand;
                race.SecondCar.NextCommand       = secondCommand;
                logger?.LogTick(race);
                race.Tick();
            }

            logger?.LogEnd(race);
            return(race);
        }
Пример #25
0
 public void Start()
 {
     logger = new ProxyLogger();
 }
Пример #26
0
 public GameScene(Game game, ISceneManager sceneManager, IGraphicsSystem graphicsSystem, IGameSettings gameSettings, IGameLogger logger, IGameKeys gameKeys) : base(
         game, sceneManager, graphicsSystem, gameSettings, logger, gameKeys)
 {
     _spriteBatch = new SpriteBatch(Game.GraphicsDevice);
     _debugBatch  = new SpriteBatch(Game.GraphicsDevice);
     _uiBatch     = new SpriteBatch(Game.GraphicsDevice);
 }
 public CommandLookup(IGameLogger logger)
 {
     _logger = logger;
     _lookup = new Dictionary <short, Type>();
 }
Пример #28
0
 public GameStatusLogger(IGameLogger logger)
 {
     _logger = logger;
 }
 public LoggerProvider(IGameLogger logger)
 {
     _logger = logger;
 }
Пример #30
0
        public LoadingScene(Game game, ISceneManager sceneManager, IGraphicsSystem graphicsSystem, IGameSettings gameSettings, IGameLogger logger, IGameKeys gameKeys) :
            base(game, sceneManager, graphicsSystem, gameSettings, logger, gameKeys)
        {
            IsLoaded = false;

            _uiBatch = new SpriteBatch(Game.GraphicsDevice);
        }