Пример #1
0
        public SceneManager(Game game)
            : base(game)
        {
            this.game = game;

            floorEffect = Game.Content.Load <Effect>("effects");
            player      = Game.Content.Load <PlayerData>("Configuration/PlayerData");
            tankmode    = Game.Content.Load <Mode[]>(@"Configuration/TankMode");
            world       = Game.Content.Load <WorldMatrix>("Configuration/WorldData");
            tankStatus  = new TankStatusMode(tankmode[0]);


            city             = new City();
            background       = new BackGround(game);
            inputHandler     = new InputHandler();
            textHandler      = new TextHandler();
            levelHander      = new GameLevelHandler(Game.Content);
            explosionHandler = new ExplosionHandler(game);
            gameMenu         = new GameMenuScreen(game, levelHander);
            worldData        = new GameWorldData(world);
            camera           = new FirstPersonCamera(game);
            background.InitializeModel(floorEffect);

            camera.prepareCamera();
            camera.setWeapon(Game.Content.Load <Model>(@"Models\weapon"));
        }
Пример #2
0
        public GameWorldData Post([FromBody] GameWorldData worldData)
        {
            if (worldData.Sounds.Length == 0)
            {
                return(worldData);
            }

            string serializedBlob = JsonConvert.SerializeObject(worldData);

            try
            {
                var updatedWorld = _dbContext.Worlds.First((world) => world.WorldId == worldData.UserId);
                updatedWorld.DataBlob = serializedBlob;
                _dbContext.Worlds.Update(updatedWorld);
            }
            catch (InvalidOperationException exception)
            {
                _dbContext.Worlds.Add(new WorldModel()
                {
                    WorldId  = worldData.UserId,
                    DataBlob = serializedBlob
                });
            }

            _dbContext.SaveChanges();

            return(worldData);
        }
Пример #3
0
 public static void ImportWorld(GameWorldData worldData)
 {
     foreach (var sound in worldData.Sounds)
     {
         var gobj = new GameObject();
         gobj.transform.position = sound.Position;
         var soundController = gobj.AddComponent <SoundController>();
         soundController.selectedSoundId = sound.Id;
     }
 }
Пример #4
0
    /// <summary>
    /// Creates a new game world and start ticking.
    /// </summary>
    public static GameTicker StartTicking(GameWorldData levelData)
    {
        var gameWorld = new GameWorld(levelData);
        var newTicker = new GameObject("GameWorldTicker").AddComponent <GameTicker>();

        newTicker.Camera = Camera.main;
        newTicker.DefaultOrtographicSize = newTicker.Camera.orthographicSize;
        newTicker.GameWorld      = gameWorld;
        newTicker.ViewController = new BattleViewController();
        newTicker.RoomController = new Room3DController(gameWorld);
        Game.ActiveGame          = newTicker;
        return(newTicker);
    }
Пример #5
0
    public void Post(GameWorldData world)
    {
        HttpWebRequest request = new HttpWebRequest(new Uri(String.Format("{0}{1}", host, path)));

        request.ContentType = "application/json";
        request.Method      = "POST";
        var bodyStream = request.GetRequestStream();

        using (var writer = new StreamWriter(bodyStream))
        {
            var serializedWorld = JsonUtility.ToJson(world);
            writer.Write(serializedWorld);
        }
    }
Пример #6
0
 public Octree(Game game, SceneManager sceneManager, GameWorldData worldData)
     : base(game)
 {
     this.sceneManager   = sceneManager;
     octreeRoot          = new OcTreeNode(worldData.OCTREE_WORLD_CENTER1, worldData.OCTREE_WORLD_SIZE1);
     octreeRoot.RootSize = worldData.OCTREE_WORLD_SIZE1;
     boundryLeft         = worldData.BoundryLeft;
     boundryRight        = worldData.BoundryRight;
     boundryNear         = worldData.BoundryNear;
     boundryFar          = worldData.BoundryFar;
     enemyIDs            = new List <int>();
     playerIDs           = new List <int>();
     enemyBulletIDs      = new List <int>();
     playerBulletIDs     = new List <int>();
     tankIDs             = new List <int>();
     rnd = new Random();
     controlTankEnabled = false;
     timeLastStamp      = 0;
 }
Пример #7
0
    public static GameWorldData ExportCurrentWorld()
    {
        var world = new GameWorldData();

        world.UserId      = Guid.NewGuid().ToString();
        world.CreatedDate = DateTime.Now;

        var worldSounds    = GameObject.FindObjectsOfType <SoundController>();
        var worldSoundList = new List <SoundData>();

        foreach (var worldSound in worldSounds)
        {
            worldSoundList.Add(new SoundData()
            {
                Id       = worldSound.selectedSoundId,
                Position = worldSound.transform.position
            });
        }

        world.Sounds = worldSoundList.ToArray();

        return(world);
    }
Пример #8
0
    public GameWorld(GameWorldData levelData)
    {
        Debug.Log("Entering Level " + levelData.LevelId);
        // init basic stuff
        GameWorldData   = levelData;
        RandomGenerator = new Unity.Mathematics.Random((uint)GetHashCode());
        ViewEventPipe   = new ViewEventsPipe();

        // init rooms
        int x = 0, y = 0;

        Rooms = new List <Room>();

        // do the rooms
        var roomPresets = new List <RoomPreset>();

        if (levelData.LevelId > 1)
        {
            roomPresets.Add(LoadRoomPreset("Pause"));
        }
        roomPresets.AddRange(LoadPresets(1, 5, randomize: levelData.LevelId > 1));
        roomPresets.Add(LoadRoomPreset("Pause"));
        roomPresets.AddRange(LoadPresets(6, 10));
        roomPresets.Add(LoadRoomPreset("Pause"));
        roomPresets.AddRange(LoadPresets(11, 15));
        roomPresets.Add(LoadRoomPreset("Boss"));
        roomPresets.Add(LoadRoomPreset("Organ"));

        foreach (var roomPreset in roomPresets)
        {
            Rooms.Add(new Room(this, x, y, roomPreset));

            // move up or right
            var proc = UnityEngine.Random.Range(0, 100) > 50;
            if (proc)
            {
                x++;
            }
            else
            {
                y++;
            }
        }

        // set next room refs
        for (int i = 0; i < Rooms.Count - 1; i++)
        {
            Rooms[i].SetNextRoom(Rooms[i + 1]);
        }
        Rooms[Rooms.Count - 1].SetNextRoom(null);

        for (int i = 1; i < Rooms.Count; i++)
        {
            Rooms[i].SetRoomBefore(Rooms[i - 1]);
        }

        // add player
        Player = new Player
                 (
            initialRoom: Rooms[0],
            settings: Game.PlayerSettings,
            initialPosition: float2.zero
                 );
    }
Пример #9
0
 public static string ExportWorldToJson(GameWorldData gameworld)
 {
     return(JsonUtility.ToJson(gameworld));
 }
Пример #10
0
        /// <summary>
        /// Starts the game and its management/handlers etc.
        /// </summary>
        public async void StartAsync(MySqlConnectionSettings mySqlConnSettings)
        {
            if (_loadingInProgress)
            {
                _logger.UpdateLog("Game loading in progress!");
                return;
            }

            _loadingInProgress = true;

            try
            {
                if (this.State == GameState.Active)
                {
                    _logger.UpdateLog("The game is already active!");
                    return;
                }

                _mySqlConnSettings = mySqlConnSettings;
                int counter;

                try
                {
                    //GAME DATA
                    using (MySqlDbManager gwdDbManager = new MySqlDbManager(_mySqlConnSettings))
                    {
                        #region Connection starting
                        //CONNECTION STARTING
                        _logger.UpdateLog("Starting connection for data loading...");
                        bool connectionSuccess = false;
                        using (BoxedData connStartData = await gwdDbManager.StartConnectionTaskStart())
                        {
                            if (!String.IsNullOrEmpty(connStartData.Msg))
                            {
                                _logger.UpdateLog(connStartData.Msg);
                            }
                            connectionSuccess = (bool)connStartData.Data;
                        }

                        if (!connectionSuccess)
                        {
                            throw new Exception("connection not estabilished!");
                        }

                        #endregion

                        #region Account data
                        //ACCOUNT DATA
                        _accountData = new AccountData(_logger);
                        _accountData.LoadAccountsAsync(gwdDbManager);

                        while (!_accountData.IsLoaded)
                        {
                            await Task.Factory.StartNew(() => Thread.Sleep(1000));

                            if (_accountData.LoadingError)
                            {
                                throw new Exception("account data loading failure!");
                            }
                        }
                        //_accountData.ShowAccountsInLog(); //NOTE: only for testing (shows secret account details)!

                        #endregion

                        #region Game world data
                        //GAME DATA LOADING
                        _gameWorldData = new GameWorldData(_logger);
                        _gameWorldData.LoadWorldDataAsync(gwdDbManager);
                        counter = 0;
                        while (!_gameWorldData.IsLoaded)
                        {
                            await Task.Factory.StartNew(() => Thread.Sleep(1000));

                            counter++;

                            if (_gameWorldData.LoadingError)
                            {
                                throw new Exception("game world data loading failure!");
                            }
                        }

                        _logger.UpdateLog($"Game data loading ended in {counter} seconds.");

                        #endregion
                    }

                    //PLAYER HANDLER
                    _playerHandler = new PlayerHandler(_logger);

                    //GAME STATE HANDLER
                    _gameStateHandler = new GameStateHandler(_logger, _gameWorldData, _gameWorldData, _playerHandler);

                    //CHAT HANDLER
                    _chatHandler = new ChatHandler(_logger, _gameWorldData, _playerHandler);

                    //COMMAND HANDLER
                    _commandHandler = new CommandHandler(_logger);
                    _commandHandler.RegisterCommandHandlingStrategy(new CmdPingStrategy());
                    _commandHandler.RegisterCommandHandlingStrategy(new MoveCharRequestStrategy(_logger, _gameStateHandler, _gameWorldData, _playerHandler));
                    _commandHandler.RegisterCommandHandlingStrategy(new CmdChatStrategy(_logger, _chatHandler));
                    _commandHandler.RegisterCommandHandlingStrategy(new SwitchPlaceRequestStrategy(_logger, _gameStateHandler, _gameWorldData, _gameWorldData, _playerHandler));
                    _commandHandler.RegisterCommandHandlingStrategy(new CmdGetLocationCharsStrategy(_logger, _gameWorldData));
                    _commandHandler.RegisterCommandHandlingStrategy(new CmdGetWorldDetailsStrategy(_logger, _gameWorldData));
                    _commandHandler.RegisterCommandHandlingStrategy(new CmdLoginStrategy(_logger, _accountData, _playerHandler));
                    _commandHandler.RegisterCommandHandlingStrategy(new CmdLogoutStrategy(_playerHandler));
                    _commandHandler.RegisterCommandHandlingStrategy(new CmdGetAccountCharsStrategy(_logger, _accountData, _gameWorldData));
                    _commandHandler.RegisterCommandHandlingStrategy(new CmdChooseCharacterStrategy(_logger, _accountData, _gameWorldData, _playerHandler));

                    //CONNECTION HANDLER
                    _tcpConnectionHandler = TcpConnectionHandler.GetInstance(_tcpLogger, _commandHandler, _playerHandler);
                    _tcpConnectionHandler.StartConnection(_uiHandler.GetTcpConnectionSettings());

                    //REGULAR OPERATION HANDLER
                    _regularOperationHandler = new RegularOperationHandler(_logger);

                    //ETC
                    this.State = GameState.Active;
                }
                catch (Exception exception)
                {
                    this.State = GameState.Error;
                    _logger.UpdateLog($"An error occured during game starting: {exception.Message}");
                }
            }
            finally
            {
                _logger.UpdateLog($"*** ENDED WITH GAME STATE [{this.State.ToString()}]");
                _loadingInProgress = false;
            }
        }
 public CmdGetWorldDetailsStrategy(ILogger logger, GameWorldData gameWorldData)
 {
     _logger        = logger ?? throw new Exception("CmdGetWorldDetailsStrategy - logger cannot be NULL!");
     _gameWorldData = gameWorldData ?? throw new Exception("CmdGetWorldDetailsStrategy - game world data cannot be NULL!");
 }