public CollisionComponent(IGameObject parentObject, LanderGame parentGame, double threshold, Action <IGameObject> onCollision, params Type[] collidesWith)
        {
            if (parentObject == null)
            {
                throw new ArgumentNullException(nameof(parentObject));
            }

            if (parentGame == null)
            {
                throw new ArgumentNullException(nameof(parentGame));
            }

            if (onCollision == null)
            {
                throw new ArgumentNullException(nameof(onCollision));
            }

            if (!collidesWith.Any())
            {
                throw new ArgumentException();
            }

            _parentObject = parentObject;
            _parentGame   = parentGame;
            _threshold    = threshold;
            _onCollision  = onCollision;
            _collidesWith = collidesWith;
        }
Beispiel #2
0
 public LanderGamePresenter(LanderGame landerGame, OptionsViewModel options)
 {
     _landerGame = landerGame;
     _options    = options;
     landerGame.GameObjectAdded     += LanderGame_GameObjectAdded;
     landerGame.GameObjectDestroyed += LanderGame_GameObjectDestroyed;
 }
 private void Awake()
 {
     if (instance == null)
     {
         instance = this;
     }
 }
Beispiel #4
0
        public HeadUpDisplayViewModel(LanderGame game)
        {
            if (game == null)
            {
                throw new ArgumentNullException();
            }
            _game = game;

            CompositionTarget.Rendering += (sender, args) => CompositionTargetOnRendering();
        }
Beispiel #5
0
        public GameViewModel()
        {
            _dispatcher = Dispatcher.CurrentDispatcher;
            _landerGame = new LanderGame();
            _presenter  = new LanderGamePresenter(_landerGame, Options);
            _devInfo    = new DevInfoViewModel(_landerGame);

            RenderWidth  = 800;
            RenderHeight = 600;

            _landerGame.ResetGame();
            IsPaused = true;  // Show menu initially

            // Terminate game loop properly
            Application.Current.Exit += (sender, args) =>
            {
                _runGameLoop = false;
                _renderGate.Set();

                // Wait for render thread to finish.
                _renderThreadEndEvent.Wait();
            };
        }
 public DevInfoViewModel(LanderGame landerGame)
 {
     _landerGame = landerGame;
 }