예제 #1
0
파일: Game.cs 프로젝트: ErtyHackward/utopia
        private void GameComponentCleaning()
        {
            foreach (var component in _enabledUpdatable)
            {
                IUpdatableComponent u = component as IUpdatableComponent;
                if (u != null)
                {
                    u.UpdateOrderChanged -= UpdatableUpdateOrderChanged;
                    u.UpdatableChanged   -= UpdatableEnabledChanged;
                }
            }

            foreach (var component in _visibleDrawable)
            {
                IDrawableComponent d = component as IDrawableComponent;
                if (d != null)
                {
                    d.DrawOrderChanged -= DrawableDrawOrderChanged;
                    d.VisibleChanged   -= DrawableVisibleChanged;
                }
            }

            if (OnRenderLoopFrozen != null)
            {
                //Remove all Events associated (That haven't been unsubscribed !)
                foreach (Delegate d in OnRenderLoopFrozen.GetInvocationList())
                {
                    OnRenderLoopFrozen -= (RenderLoopFrozen)d;
                }
            }
        }
예제 #2
0
 public override void AddNewService(IUpdatableComponent service)
 {
     if (service is SpringService)
     {
         this.AddNewService(service as SpringService);
     }
 }
예제 #3
0
파일: Game.cs 프로젝트: ErtyHackward/utopia
        private void GameComponentRemoved(object sender, GameComponentCollectionEventArgs e)
        {
            IDrawableComponent d = e.GameComponent as IDrawableComponent;

            if (d != null)
            {
                d.DrawOrderChanged -= DrawableDrawOrderChanged;
                d.VisibleChanged   -= DrawableVisibleChanged;

                if (d.Visible)
                {
                    _visibleDrawable.RemoveAll(x => x.DrawOrder.GetHashCode() == d.GetHashCode());
                }
            }

            IUpdatableComponent u = e.GameComponent as IUpdatableComponent;

            if (u != null)
            {
                u.UpdateOrderChanged -= UpdatableUpdateOrderChanged;
                u.UpdatableChanged   -= UpdatableEnabledChanged;

                if (u.Updatable)
                {
                    _enabledUpdatable.Remove(u);
                }

                isCurrentlyUpdatingComponentsDirty = true; //Need to clear the currently Updating collection, that will need to be refreshed.
            }
        }
예제 #4
0
파일: Game.cs 프로젝트: ErtyHackward/utopia
        private void GameComponentAdded(object sender, GameComponentCollectionEventArgs e)
        {
            IDrawableComponent d = e.GameComponent as IDrawableComponent;

            if (d != null)
            {
                d.DrawOrderChanged += DrawableDrawOrderChanged;
                d.VisibleChanged   += DrawableVisibleChanged;

                if (d.Visible)
                {
                    AddDrawable(d);
                }
            }

            IUpdatableComponent u = e.GameComponent as IUpdatableComponent;

            if (u != null)
            {
                u.UpdateOrderChanged += UpdatableUpdateOrderChanged;
                u.UpdatableChanged   += UpdatableEnabledChanged;

                if (u.Updatable)
                {
                    AddUpdatable(u);
                }
            }
        }
예제 #5
0
 public override void RemoveService(IUpdatableComponent service)
 {
     if (service is BubbleService)
     {
         this.RemoveService(service as BubbleService);
     }
 }
예제 #6
0
 public override void AddNewService(IUpdatableComponent service)
 {
     if (service is BlowerService)
     {
         this.AddNewService(service as BubbleService);
     }
 }
예제 #7
0
파일: Game.cs 프로젝트: ErtyHackward/utopia
        private void UpdatableEnabledChanged(object sender, EventArgs e)
        {
            IUpdatableComponent u = (IUpdatableComponent)sender;

            if (u.Updatable)
            {
                AddUpdatable(u);
            }
            else
            {
                _enabledUpdatable.Remove(u);
            }
        }
예제 #8
0
        public void SetGameComponent(IGameComponent gamecomp, int drawIndex)
        {
            DetachAll();

            _gamecomp       = gamecomp;
            _drawOrderindex = drawIndex;

            lblGameComp.Text = _gamecomp.Name;
            _parent.Children.Add(lblGameComp);                  //Show the Label

            if (drawIndex == 0)
            {
                IUpdatableComponent updateableComponent = _gamecomp as IUpdatableComponent;
                if (updateableComponent != null)
                {
                    optUpdatable.Selected = updateableComponent.Updatable;
                    _parent.Children.Add(optUpdatable);

                    updateOrder.Text = updateableComponent.UpdateOrder.ToString();
                    _parent.Children.Add(updateOrder);
                }
            }

            IDrawableComponent drawableComponent = _gamecomp as IDrawableComponent;

            if (drawableComponent != null)
            {
                if (drawIndex == 0)
                {
                    optDrawable.Selected = drawableComponent.Visible;
                    _parent.Children.Add(optDrawable);
                }

                lblGameComp.Text += " " + drawableComponent.DrawOrders.DrawOrdersCollection[drawIndex].Name;

                drawOrder.Text = drawableComponent.DrawOrders.DrawOrdersCollection[drawIndex].Order.ToString();
                _parent.Children.Add(drawOrder);
            }
        }
예제 #9
0
 public void RegisterUpdatable(IUpdatableComponent updatable)
 => RegisteredUpdatableComponents.Add(updatable);
예제 #10
0
 public abstract void RemoveService(IUpdatableComponent service);
예제 #11
0
 public abstract void AddNewService(IUpdatableComponent service);
예제 #12
0
파일: Scene.cs 프로젝트: dourabbit/CPipe
 public void Add(IUpdatableComponent component)
 {
     this._components.Add(component);
 }
예제 #13
0
 public override void AddNewService(IUpdatableComponent service)
 {
     this.AddNewService(service as RocketService);
 }
예제 #14
0
파일: Game.cs 프로젝트: ErtyHackward/utopia
 private static int UpdatableComparison(IUpdatableComponent x, IUpdatableComponent y)
 {
     return(x.UpdateOrder.CompareTo(y.UpdateOrder));
 }
예제 #15
0
파일: Game.cs 프로젝트: ErtyHackward/utopia
 private void AddUpdatable(IUpdatableComponent u)
 {
     _enabledUpdatable.Add(u);
     _enabledUpdatable.Sort(UpdatableComparison);
 }
예제 #16
0
 public override void RemoveService(IUpdatableComponent service)
 {
     this.RemoveService(service as RocketService);
 }
예제 #17
0
 public override void RemoveService(IUpdatableComponent service)
 {
     throw new NotImplementedException();
 }
예제 #18
0
 public override void AddNewService(IUpdatableComponent service)
 {
 }