예제 #1
0
        public AGSDisplayList(IGameState gameState, IMatrixUpdater matrixUpdater, IRoomTransitions roomTransitions)
        {
            _matrixUpdater       = matrixUpdater;
            _roomTransitions     = roomTransitions;
            _gameState           = gameState;
            _cache               = new ConcurrentDictionary <IViewport, ViewportDisplayList>();
            _viewportSubscribers = new ConcurrentDictionary <IViewport, ViewportSubscriber>();
            _entitySubscribers   = new ConcurrentDictionary <string, EntitySubscriber>();
            _comparer            = new RenderOrderSelector();

            gameState.UI.OnListChanged.Subscribe(onUiChanged);
            subscribeObjects(gameState.UI);
            subscribeRoom();
            onSomethingChanged();
        }
예제 #2
0
 public AGSGameState(ICustomProperties globalVariables, IRoomTransitions roomTransitions,
                     Resolver resolver, IFocusedUI focusedUi, IViewport viewport,
                     IEvent <RoomTransitionEventArgs> onRoomChangeRequired, IAGSCursor cursor)
 {
     Speed                  = 100;
     _cursor                = cursor;
     Rooms                  = new AGSBindingList <IRoom>(10);
     UI                     = new AGSConcurrentHashSet <IObject> ();
     SecondaryViewports     = new AGSBindingList <IViewport>(5);
     RoomTransitions        = roomTransitions;
     viewport.RoomProvider  = this;
     viewport.Camera.Target = () => Player;
     Viewport               = viewport;
     GlobalVariables        = globalVariables;
     FocusedUI              = focusedUi;
     _cutscene              = new Lazy <ICutscene> (() => resolver.Container.Resolve <ICutscene>());
     OnRoomChangeRequired   = onRoomChangeRequired;
     _viewports             = new ViewportCollection(this);
 }
 public RoomTransitionWorkflow(IRoomTransitions transitions, IWindowInfo window, IRendererLoop rendererLoop,
                               Resolver resolver, IGameEvents events, IGameLoop loop, IAGSRenderPipeline pipeline,
                               IGameSettings settings, IAGSGameState state, IDisplayList displayList, IGLUtils glUtils)
 {
     _glUtils                = glUtils;
     _dummyWindow            = new DummyWindow();
     _transitions            = transitions;
     _transitions.Transition = new RoomTransitionInstant();
     _window                = window;
     _rendererLoop          = rendererLoop;
     _resolver              = resolver;
     _events                = events;
     _loop                  = loop;
     _pipeline              = pipeline;
     _state                 = state;
     _displayList           = displayList;
     _settings              = settings;
     _noAspectRatioSettings = new AGSGameSettings(settings.Title, settings.VirtualResolution, preserveAspectRatio: false);
     state.OnRoomChangeRequired.SubscribeToAsync(onRoomChangeRequired);
 }