protected override void InnerUpdate()
        {
            // TODO: Encapsulate music component inside vertical line
            var musicComponent        = NonRenderableComponents.FirstOfType <MusicComponent>();
            var verticalLineComponent = RenderableComponents.FirstOfType <VerticalLineComponent>();

            verticalLineComponent.LocationX =
                (uint)(musicComponent.TimeSeconds / musicComponent.Duration * SfmlWindow.Size.X);
        }
Beispiel #2
0
 public void AddComponent(IComponent component)
 {
     if (component is IRenderableComponent displayableComponent)
     {
         RenderableComponents.AddComponent(displayableComponent);
     }
     else
     {
         NonRenderableComponents.AddComponent(component);
     }
 }
Beispiel #3
0
 protected virtual void OnWindowKeyPressed(object sender, KeyEventArgs e)
 {
     Debug.WriteLine($"Processing key {e.Code}");
     if (e.Code == Keyboard.Key.Escape)
     {
         SfmlWindow.Close();
     }
     else
     {
         RenderableComponents.ProcessKeyPress(e.Code.ToString(), e.Control, e.Alt, e.Shift);
         NonRenderableComponents.ProcessKeyPress(e.Code.ToString(), e.Control, e.Alt, e.Shift);
     }
 }
Beispiel #4
0
        public virtual void Run()
        {
            NonRenderableComponents.Init();
            RenderableComponents.Init();

            var clock = new Clock();

            SfmlWindow.SetActive(true);
            while (SfmlWindow.IsOpen)
            {
                SfmlWindow.DispatchEvents();
                SfmlWindow.Clear(Color.Black);

                var dt = clock.Restart().AsSeconds();

                InnerUpdate();

                RenderableComponents.Update(dt);
                NonRenderableComponents.Update(dt);

                RenderableComponents.Render(SfmlWindow);
                SfmlWindow.Display();
            }
        }