/// <summary> /// Constructs a new play scene on the given window with the given map. /// </summary> /// <param name="window">The window the play scene should be in.</param> /// <param name="map">The map the play scene should play.</param> public PlayScene(Window window, Map map) : base(window) { Map = map; Map.SetTimer(new TimeClock("timer")); Exit += PlayScene_Exit; foreach(Sound sound in Map.Sounds) { sound.Clock = Map.Clocks[sound.ClockId]; } foreach (IHitObject hitObject in Map.HitObjects) { var hitObjectSprite = hitObject as Sprite; if (hitObjectSprite == null) continue; Action callback = () => addChild(hitObjectSprite); hitObjectSpawnCallbacks[hitObject] = callback; hitObject.Spawn += callback; hitObject.Clock = Map.Clocks[hitObject.ClockId]; } }