/// <summary>
        ///		Gets called when a Scene is loaded into memory.
        ///		Load all the stuff needed for Game Scenes
        /// </summary>
        protected override void OnSceneLoad()
        {
            // Get the green floor
            SpriteBatch  floorBatch  = this.ManagerForSpriteBatch.Find(SpriteBatch.Name.Shields);
            SpriteEntity floorSprite = SpriteEntityManager.Self.Find(Sprite.Name.Floor);

            floorBatch.Attach(floorSprite, floorSprite.Id);

            ///// GameObject Factories ////////////////////////////

            // Create all the shields
            ShieldFactory shieldFactory = new ShieldFactory(SpriteBatch.Name.Shields);

            shieldFactory.CreateShields();

            // Create all the Walls
            WallFactory wallFactory = new WallFactory();

            wallFactory.CreateWalls();

            // Create all the Aliens
            AlienFactory alienFactory = new AlienFactory(SpriteBatch.Name.Aliens);

            alienFactory.LoadResources();
            alienFactory.CreateAliens();

            // Create the player
            PlayerFactory playerFactory = new PlayerFactory(this);

            playerFactory.InitializeResources();
            playerFactory.CreatePlayer();

            // Create the UFO
            UFOFactory ufoFactory = new UFOFactory();

            ufoFactory.CreateObjects();
        }
示例#2
0
        public virtual void Start()
        {
            #region инициализация объектов

            var randomNumberGenerator = new Random();

            for (int i = 0; i < _gameObjects.Count; i++)
            {
                if (!_gameObjects[i].Is(AGameObject.EnumObjectType.Player))
                {
                    continue;
                }

                var player = _gameObjects[i] as MainSkyShootService;
                if (player == null)
                {
                    Trace.WriteLine("Error: !!! IsPlayer true for non player object");
                    continue;
                }

                _gameObjects[i].TeamIdentity = _sessionTeamsList.GetTeamByNymber(1);
                _gameObjects[i].TeamIdentity.Members.Add(_gameObjects[i]);

                player.MeMoved        += SomebodyMoved;
                player.MeShot         += SomebodyShot;
                player.MeChangeWeapon += SomebodyChangedWeapon;

                player.Coordinates     = new Vector2(500 + (randomNumberGenerator.Next() % 200 - 100), 500 + (randomNumberGenerator.Next() % 200 - 100));
                player.Speed           = Constants.PLAYER_DEFAULT_SPEED;
                player.Radius          = Constants.PLAYER_RADIUS;
                player.Weapon          = new Weapon.Pistol(Guid.NewGuid(), player);
                player.RunVector       = new Vector2(0, 0);
                player.MaxHealthAmount = player.HealthAmount = Constants.PLAYER_HEALTH;
            }

            _gameObjects.AddRange(_wallFactory.CreateWalls());

            #endregion

            _timeHelper = new TimeHelper(TimeHelper.NowMilliseconds);

            _timerCounter = 0;
            _updating     = false;

            _lastUpdate  = 0;
            _updateDelay = 0;

            _gameTimer = new Timer(Constants.FPS)
            {
                AutoReset = true
            };
            _gameTimer.Elapsed += TimerElapsedListener;
            _gameTimer.Start();

            // todo номер игры
            //Trace.Listeners.Add(new Logger(Logger.SolutionPath + "\\logs\\server_game_" + LocalGameDescription.GameId + ".txt", _timeHelper) {Name = "game logger"});

            Trace.WriteLine("Game Started");

            Trace.Listeners.Remove(Logger.ServerLogger);

            IsStarted = true;
        }