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(); }
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); }