private void UpdateOfflineGame(WorldState state)
        {
            var id = 0u;

            _offlineGame.Bot = _playerFactory.CreatePlayer(new Entity()
            {
                GameIdentity = Entity.GAME_IDENTITY.BOT, EntityState = state.Bot, Id = ++id
            });
            //TODO manual default state
            if (state.Manual != null)
            {
                _offlineGame.Manual = _playerFactory.CreatePlayer(new Entity()
                {
                    GameIdentity = Entity.GAME_IDENTITY.MANUAL, EntityState = state.Manual, Id = ++id
                });
            }
            state.Uninvolved.ToList().ForEach(uninvolvedState => _offlineGame.RefugeList.Add(_playerFactory.CreatePlayer(new Entity()
            {
                GameIdentity = Entity.GAME_IDENTITY.UNINVOLVED, EntityState = uninvolvedState, Id = ++id
            })));
            //TODO refuge types
            state.Refuges.ToList().ForEach(refugeState => _offlineGame.RefugeList.Add(new Refuge()
            {
                EntityState = refugeState, Id = ++id
            }));
        }
Example #2
0
        public override void OnStateMachineEnter(Animator animator, int stateMachinePathHash)
        {
            Brain.ClearListeners();
            Brain.EnableCameraMovement();

            VisibilityCanon.ResourceVisibilityMode = ResourceVisibilityMode.RevealAll;
            VisibilityCanon.CellVisibilityMode     = CellVisibilityMode.RevealAll;

            ExplorationCanon.ExplorationMode = CellExplorationMode.AllCellsExplored;

            VisibilityResponder.UpdateVisibility = true;

            UnitMapIconManager.BuildIcons();
            UnitMapIconManager.SetActive(true);

            foreach (var element in PlayModeSensitiveElements)
            {
                element.IsActive = false;
            }

            Grid.Build(10, 7);

            var playerCiv    = CivFactory.Create(CivConfig.DefaultTemplate);
            var barbarianCiv = CivFactory.Create(CivConfig.BarbarianTemplate);

            PlayerFactory.CreatePlayer(playerCiv, BrainPile.HumanBrain);
            PlayerFactory.CreatePlayer(barbarianCiv, BrainPile.BarbarianBrain);

            foreach (var chunk in Grid.Chunks)
            {
                chunk.Refresh(Simulation.MapRendering.TerrainRefreshType.All);
            }
        }
        private void GeneratePlayers(IMapGenerationVariables variables)
        {
            CivFactory.Clear();

            foreach (var civTemplate in variables.Civilizations)
            {
                var newCiv = CivFactory.Create(civTemplate, variables.StartingTechs);

                PlayerFactory.CreatePlayer(newCiv, BrainPile.HumanBrain);
            }

            var barbarianCiv = CivFactory.Create(CivConfig.BarbarianTemplate);

            PlayerFactory.CreatePlayer(barbarianCiv, BrainPile.BarbarianBrain);
        }
Example #4
0
        public Alarm(IPlayerFactory playerFactory)
        {
            if (playerFactory == null)
            {
                throw new ArgumentNullException(nameof(playerFactory), @"Player factory cannot be null.");
            }

            _defaultPlayer = playerFactory.CreatePlayer();

            _playerA = playerFactory.CreatePlayer();
            _playerB = playerFactory.CreatePlayer();

            _defaultSoundCollection = new ObservableCollection <Uri>();
            DefaultSoundCollection  = new ReadOnlyObservableCollection <Uri>(_defaultSoundCollection);
        }
        public void DecomposePlayers(SerializableMapData mapData)
        {
            foreach (var playerData in mapData.Players)
            {
                var controlledCiv = CivFactory.AllCivilizations.FirstOrDefault(
                    civ => civ.Template.Name.Equals(playerData.ControlledCiv)
                    );

                if (controlledCiv == null)
                {
                    throw new InvalidOperationException("Could not find a civ of template " + playerData.ControlledCiv);
                }

                var playerBrain = BrainPile.AllBrains.FirstOrDefault(
                    brain => brain.Name.Equals(playerData.Brain)
                    );

                if (playerBrain == null)
                {
                    throw new InvalidOperationException("Could not find a brain of name " + playerData.Brain);
                }

                PlayerFactory.CreatePlayer(controlledCiv, playerBrain);
            }

            GameCore.ActivePlayer = mapData.ActivePlayer != null
                ? PlayerFactory.AllPlayers.First(player => player.Name.Equals(mapData.ActivePlayer))
                : null;
        }
Example #6
0
        public IActionResult StartCustomMatches(TeamOverView teamoverview)
        {
            List <Team> teams = new List <Team>();

            foreach (var team in teamoverview.Teams)
            {
                var tempTeamp = _teamFactory.CreateTeam(team.Name);
                tempTeamp.Players = team.Players.Select(x => _playerFactory.CreatePlayer(tempTeamp.Id, x.Posistion, x.Attack, x.Defense)).ToList();

                teams.Add(tempTeamp);
            }

            //var teams = _teamGeneratorService.GenerateFixedTeams();
            var matches = _matchGeneratorService.GenerateMatches(teams);

            // Add secend set of matches
            matches.AddRange(_matchGeneratorService.GenerateMatches(teams));

            matches = matches.Select(x => _matchSimulatorService.RunSimulation(x)).ToList();
            var viewmodel = _matchOverViewMapper.MapToMatchesOverView(matches);

            viewmodel.PoolOverView = _PoolOverViewMapper.MapToPoolOverView(_poolFinalizeService.DeterminePoolResults(matches).Teams);

            return(PartialView("_matchesOverView", viewmodel));
        }
Example #7
0
        private Task Login(SocketBase socket)
        {
            LobbyPlayer player = _playerFactory.CreatePlayer(PlayerType.Lobby, socket) as LobbyPlayer
                                 ?? throw new ArgumentNullException();

            return(_lobbyManager.TryAddPlayer(player));
        }
Example #8
0
        public void OnJoin(IWorldClient client, JoinPacket packet)
        {
            DbCharacter character = _database.Characters.Include(x => x.User).FirstOrDefault(x => x.Id == packet.PlayerId);

            if (character == null)
            {
                _logger.LogError($"Invalid player id received from client; cannot find player with id: {packet.PlayerId}");
                return;
            }

            if (character.IsDeleted)
            {
                _logger.LogWarning($"Cannot connect with character '{character.Name}' for user '{character.User.Username}'. Reason: character is deleted.");
                return;
            }

            if (character.User.Authority <= 0)
            {
                _logger.LogWarning($"Cannot connect with '{character.Name}'. Reason: User {character.User.Username} is banned.");
                // TODO: send error to client
                return;
            }

            client.Player            = _playerFactory.CreatePlayer(character);
            client.Player.Connection = client;
            _worldSpawnPacketFactory.SendPlayerSpawn(client.Player);
            client.Player.Object.Spawned        = true;
            client.Player.PlayerData.LoggedInAt = DateTime.UtcNow;
        }
Example #9
0
        public string AddPlayer(string type, string username)
        {
            IPlayer player = playerFactory.CreatePlayer(type, username);

            playerRepository.Add(player);
            return(string.Format(ConstantMessages.SuccessfullyAddedPlayer, type, username));
        }
        public string AddPlayer(string type, string username)
        {
            player = playerFactory.CreatePlayer(type, username);

            playerRepository.Add(player);
            return($"Successfully added player of type {type} with username: {username}");
        }
Example #11
0
        public string AddPlayer(string type, string username)
        {
            IPlayer player = playerFactory.CreatePlayer(type, username);

            playerRepo.Add(player);
            return($"Successsfully added card: {type} to user {username}");
        }
Example #12
0
        public string AddPlayer(string type, string username)
        {
            var newPlayer = playerFactory.CreatePlayer(type, username);

            playerRepo.Add(newPlayer);
            return(string.Format(ConstantMessages.SuccessfullyAddedPlayer, newPlayer.GetType().Name, newPlayer.Username));
        }
 public PlayerInitialization(IPlayerFactory playerFactory, PlayerData playerData)
 {
     _playerFactory   = playerFactory;
     _player          = _playerFactory.CreatePlayer();
     _playerData      = playerData;
     _player.position = _playerData.Position;
 }
Example #14
0
 public PlayerModel(IPlayerFactory playerFactory)
 {
     playerFactory.CreatePlayer();
     _characterController = playerFactory.GetCharacterController();
     _transform           = playerFactory.GetTransform();
     _camera   = playerFactory.GetCamera();
     _animator = playerFactory.GetAnimator();
 }
Example #15
0
        public void CreateNewPlayer()
        {
            var newCiv = CivilizationFactory.Create(SelectedTemplate);

            PlayerFactory.CreatePlayer(newCiv, BrainPile.HumanBrain);

            Refresh();
        }
        public string AddPlayer(string type, string username)
        {
            var player = playerFactory.CreatePlayer(type, username);

            this.playersRepository.Add(player);

            var msg = string.Format(ConstantMessages.SuccessfullyAddedPlayer, type, username);

            return(msg);
        }
Example #17
0
        [ExcludeFromCodeCoverage] //Cannot Test for User Input
        public void StartGame()
        {
            try
            {
                Board gameBoard = _boardFactory.CreateBoard();
                Logger.Info("New Game Board created");
                Player player = _playerFactory.CreatePlayer();
                _userInterface.RenderMessage("Shuffle! New Game Started.");
                player.SetPlayerName(_userInterface.AskForPlayerName());
                player.SetLives();
                Logger.Info("New Player Created");
                _userInterface.ClearScreen();
                _userInterface.RenderMessage($"Welcome {player.Name} to Shuffle!");
                _userInterface.RenderMessage(
                    "Move your piece to the top of the board to win. Watch out for mines, hit two and its GAME OVER!");
                _userInterface.NewLine();
                bool success = gameBoard.DrawBoard();
                if (!success)
                {
                    throw new ApplicationException("Something went wrong while drawing the board");
                }

                _userInterface.NewLine();
                _userInterface.RenderMessage("Ready Player One.");
                Logger.Info("Turns Started");
                TakeTurns(gameBoard, player);

                string askToPlayAgainResult = _userInterface.AskToPlayAgain();
                bool   isNewGameWanted      = _userInterface.ValidatePlayAgainResponse(askToPlayAgainResult);
                if (isNewGameWanted)
                {
                    _userInterface.ClearScreen();
                    StartGame();
                }
                else
                {
                    _userInterface.ClearScreen();
                    _userInterface.RenderMessage($"Thanks for playing {player.Name}. Press any key to exit and press enter");
                }
                _userInterface.GetUserInput();
            }
            catch (Exception exception)
            {
                Logger.Error(exception, "An Error Occured: {0}", exception.Message);
                _userInterface.RenderMessage($"An Error Occured: {exception}");
                _userInterface.RenderMessage("Press Any Key to Exit");
                _userInterface.GetUserInput();
            }
        }
Example #18
0
        public PlayerInitialization(IPlayerFactory playerFactory, GamePoolContext gamePoolContext)
        {
            _playerFactory = playerFactory;
            _player        = _playerFactory.CreatePlayer();
            var _playerStruct = _playerFactory.GivePlayerData().PlayerStruct;

            _player.transform.position = _playerStruct.StartPosition;
            _playerStruct.Player       = _player;
            var _playerComponents = _playerFactory.GivePlayerData().PlayerComponents;

            _playerComponents.Rigitbody = _playerStruct.Player.GetComponent <Rigidbody>();

            var playerModel = new PlayerModel(_playerStruct, _playerComponents);

            gamePoolContext.AddPlayerModel(playerModel);
        }
Example #19
0
        public string AddPlayer(string type, string username)
        {
            var player = playerFactory.CreatePlayer(type, username);

            try
            {
                players.Add(player);
            }
            catch (Exception e)
            {
                return(e.Message);
            }
            return(ConstantMessages.SuccessfullyAddedPlayer
                   .Replace("{0}", type)
                   .Replace("{1}", username));
        }
Example #20
0
        public void Initialize()
        {
            _playerFactory.CreatePlayer(_context);

            _uiFactory.CreatePlayerHUD(_context);

            _uiFactory.CreateCamera(_context);

            _context.ReplaceWorld(new Vector2Int(10, 10));

//            _monsterFactory.CreateWorker(new Vector3Int(1, 0, 0));
//            _monsterFactory.CreateWarrior(new Vector2(-2, 4));
//            _monsterFactory.CreateBlackBuilding(new Vector2(-2, 0));
//            _monsterFactory.CreateLich(new Vector2(2, 0));
//            _monsterFactory.CreateSkeleton(new Vector2(2, 0));
//            _monsterFactory.CreateHealer(new Vector2(0, 0));
        }
Example #21
0
        public MainWindow(SovndClient client, ChannelDirectory channels, IPlayerFactory playerFactory, ISettingsProvider settings, Scrobbler scrobbler)
        {
            InitializeComponent();

            toast = new Toast();
            toast.Show();

            _scrobbler     = scrobbler;
            _client        = client;
            _playerFactory = playerFactory;
            _settings      = settings.GetSettings();

            AllowDrop = true;
            channelbox.ItemsSource = channels.channels;

            PreviewDragOver  += OnPreviewDragEnter;
            PreviewDragEnter += OnPreviewDragEnter;
            DragEnter        += OnPreviewDragEnter;
            DragOver         += OnPreviewDragEnter;

            Drop += OnDrop;

            Loaded += (_, __) =>
            {
                BindingOperations.EnableCollectionSynchronization(channels.channels, channels.channels);
                App.WindowHandle = new WindowInteropHelper(this).Handle;
                synchronization  = SynchronizationContext.Current;

                _client.Run();

                if (!string.IsNullOrWhiteSpace(_settings.LastChannel))
                {
                    _player = _playerFactory.CreatePlayer(_settings.LastChannel);
                    _client.SubscribeToChannel(_settings.LastChannel);
                    SetupChannel();
                    Logging.Event("Switched to previously set channel");
                }
            };

            Closed += (_, __) =>
            {
                _client.Disconnect();
                Spotify.ShutDown();
                Process.GetCurrentProcess().Kill(); // TODO That's really inelegant
            };
        }
Example #22
0
        private void Channelbox_SelectionChanged(object sender, RoutedEventArgs e)
        {
            var channel = channelbox.SelectedItem as Channel;

            if (channel != null)
            {
                DropChannel();

                _settings.LastChannel = channel.Name;
                _settings.Save();

                _player = _playerFactory.CreatePlayer(channel.Name);
                _client.SubscribeToChannel(channel.Name);
                SetupChannel();
                Logging.Event("Switched channels");
            }
        }
Example #23
0
        public IPlayerBuilder BuildGamePlayer(Player player)
        {
            var emptyPlayer = _playerFactory.CreatePlayer(PlayerType.Game, new LoginRequest
            {
                Connection = player.Connection,
                Name       = player.Name
            });

            Player = new GamePlayer
            {
                Connection    = player.Connection,
                Name          = emptyPlayer.Name,
                Score         = 0,
                Target        = null,
                WeaponType    = WeaponTypes.Enemy,
                LaserStrength = 1
            };
            return(this);
        }
        public IPlayer CreatePlayer(IRegistration playerParameters)
        {
            string name, spaceshipModel, engineModel, armourModel, weaponModel;

            name           = playerParameters.ParametersForPlayer["name"];
            spaceshipModel = playerParameters.ParametersForPlayer["ship"];
            engineModel    = playerParameters.ParametersForPlayer["engine"];
            armourModel    = playerParameters.ParametersForPlayer["armour"];
            weaponModel    = playerParameters.ParametersForPlayer["weapon"];

            ISpaceshipEngine engine = engineFactory.CreateEngine(engineModel);
            IArmour          armour = armourFactory.CreateArmour(armourModel);
            IWeapon          weapon = weaponFactory.CreateWeapon(weaponModel.ToLower());

            weapon.Bullet = bulletFactory.CreateBullet();
            ISpaceShip spaceship = spaceshipFactory.CreateSpaceship(spaceshipModel, engine, armour, weapon);
            IPlayer    player    = playerFactory.CreatePlayer(name, spaceship);

            return(player);
        }
Example #25
0
 public PlayerInitialization(IPlayerFactory playerFactory, Vector2 positionPlayer)
 {
     _playerFactory   = playerFactory;
     _player          = _playerFactory.CreatePlayer();
     _player.position = positionPlayer;
 }
Example #26
0
 internal void StartGame(IPlayerFactory playerFactory)
 {
     new Example3().StartGame(playerFactory.CreatePlayer(177));
 }
Example #27
0
 public PlayerInitialization(IPlayerFactory playerFactory)
 {
     _playerFactory = playerFactory;
     _player        = _playerFactory.CreatePlayer();
 }
Example #28
0
 public void Initialize()
 {
     Player = _playerFactory.CreatePlayer();
     Player.Initialize();
     _collisionSystem.RegisterEntity(Player);
 }
Example #29
0
        private void Login(Session session, Packet packet)
        {
            IPlayer player;

            short            clientVersion;
            short            clientRevision;
            LoginHandlerMode loginMode;
            string           playerName;
            string           loginKey;

            try
            {
                clientVersion  = packet.GetInt16();
                clientRevision = packet.GetInt16();
                loginMode      = (LoginHandlerMode)packet.GetByte();
                playerName     = packet.GetString();
                loginKey       = packet.GetString();
            }
            catch (Exception)
            {
                ReplyError(session, packet, Error.Unexpected);
                session.CloseSession();
                return;
            }

            if (clientVersion <= Config.client_min_version && clientRevision < Config.client_min_revision)
            {
                ReplyError(session, packet, Error.ClientOldVersion);
                session.CloseSession();
                return;
            }

            LoginResponseData loginResponseData;
            var loginResult = loginHandler.Login(loginMode, playerName, loginKey, out loginResponseData);

            if (loginResult != Error.Ok)
            {
                ReplyError(session, packet, loginResult);
                session.CloseSession();
                return;
            }

            // If we are under admin only mode then kick out non admin
            if (Config.server_admin_only && loginResponseData.Player.Rights == PlayerRights.Basic)
            {
                ReplyError(session, packet, Error.UnderMaintenance);
                session.CloseSession();
                return;
            }

            //Create the session id that will be used for the calls to the web server
            string sessionId;

            if (Config.server_admin_always && !Config.server_production)
            {
                sessionId = loginResponseData.Player.Id.ToString(CultureInfo.InvariantCulture);
                loginResponseData.Player.Rights = PlayerRights.Bureaucrat;
            }
            else
            {
                SHA1   sha  = new SHA1CryptoServiceProvider();
                byte[] hash = sha.ComputeHash(Encoding.UTF8.GetBytes(loginResponseData.Player.Id + Config.database_salt + DateTime.UtcNow.Ticks + Config.Random.Next()));
                sessionId = BitConverter.ToString(hash).Replace("-", String.Empty);
            }

            lock (loginLock)
            {
                bool newPlayer = !world.Players.TryGetValue(loginResponseData.Player.Id, out player);

                //If it's a new player then add him to our session
                if (newPlayer)
                {
                    logger.Info(string.Format("Creating new player {0}({1}) IP: {2}", playerName, loginResponseData.Player.Id, session.RemoteIP));

                    player = playerFactory.CreatePlayer(loginResponseData.Player.Id, SystemClock.Now, SystemClock.Now, playerName, string.Empty, loginResponseData.Player.Rights, sessionId);

                    if (!world.Players.TryAdd(player.PlayerId, player))
                    {
                        session.CloseSession();
                        return;
                    }
                }
                else
                {
                    player.Name = playerName;
                }

                logger.Info(string.Format("Player login in {0}({1}) IP: {2}", player.Name, player.PlayerId, session.RemoteIP));
            }

            locker.Lock(args =>
            {
                var lockedPlayer = (IPlayer)args[0];
                return(lockedPlayer.IsInTribe ? new ILockable[] { lockedPlayer.Tribesman.Tribe } : new ILockable[0]);
            }, new object[] { player }, player).Do(() =>
            {
                // If someone is already connected as this player, kick them off potentially
                if (player.Session != null)
                {
                    player.Session.CloseSession();
                    player.Session = null;

                    // Kick people off who are spamming logins
                    if (SystemClock.Now.Subtract(player.LastLogin).TotalMilliseconds < 1500)
                    {
                        session.CloseSession();
                        return;
                    }
                }

                // Setup session references
                session.Player = player;
                player.HasTwoFactorAuthenticated = null;
                player.TwoFactorSecretKey        = loginResponseData.Player.TwoFactorSecretKey;
                player.Session   = session;
                player.SessionId = sessionId;
                player.Rights    = loginResponseData.Player.Rights;
                player.LastLogin = SystemClock.Now;
                player.Banned    = loginResponseData.Player.Banned;
                player.Achievements.Clear();
                player.Achievements.AddRange(loginResponseData.Achievements);
                player.ThemePurchases.Clear();
                player.ThemePurchases.AddRange(loginResponseData.ThemePurchases);

                dbManager.Save(player);

                // If player was banned then kick his ass out
                if (loginResponseData.Player.Banned)
                {
                    ReplyError(session, packet, Error.Banned);
                    session.CloseSession();
                    return;
                }

                var reply     = new Packet(packet);
                reply.Option |= (ushort)Packet.Options.Compressed;

                reply.AddString(Config.welcome_motd);

                //Player Info
                reply.AddUInt32(player.PlayerId);
                reply.AddString(player.PlayerHash);
                reply.AddUInt32(player.TutorialStep);
                reply.AddBoolean(player.SoundMuted);
                reply.AddBoolean(player.Rights >= PlayerRights.Admin);
                reply.AddString(sessionId);
                reply.AddString(player.Name);
                reply.AddInt32(Config.newbie_protection);
                reply.AddInt32(loginResponseData.Player.Balance);
                reply.AddUInt32(UnixDateTime.DateTimeToUnix(player.Created.ToUniversalTime()));
                reply.AddInt32(player.Tribesman == null
                                       ? 0
                                       : tribeManager.GetIncomingList(player.Tribesman.Tribe).Count());
                reply.AddInt16((short)(player.Tribesman == null ? 0 : player.Tribesman.Tribe.AssignmentCount));

                //Server time
                reply.AddUInt32(UnixDateTime.DateTimeToUnix(DateTime.UtcNow.ToUniversalTime()));

                //Server rate
                reply.AddString(Config.seconds_per_unit.ToString(CultureInfo.InvariantCulture));

                // If it's a new player we send simply a 1 which means the client will need to send back a city name
                // Otherwise, we just send the whole login info
                if (player.GetCityCount() == 0)
                {
                    reply.AddByte(1);
                }
                else
                {
                    reply.AddByte(0);
                    PacketHelper.AddLoginToPacket(session, themeManager, reply);
                    SubscribeDefaultChannels(session, session.Player);
                }

                session.Write(reply);

                // Restart any city actions that may have been stopped due to inactivity
                foreach (var city in player.GetCityList()
                         .Where(city => city.Worker.PassiveActions.Values.All(x => x.Type != ActionType.CityPassive)))
                {
                    city.Worker.DoPassive(city, actionFactory.CreateCityPassiveAction(city.Id), false);
                }
            });
        }
 private void Start()
 {
     player = factory.CreatePlayer(100);
 }