コード例 #1
0
        public void NextFrameTest(LoopingStyle looping, int loops, int currentFrame, int currentLoop, bool runningBackwards, int expectedFrame, int expectedLoop, bool expectedBackwards)
        {
            AGSAnimationConfiguration config = new AGSAnimationConfiguration {
                Looping = looping, Loops = loops, DelayBetweenFrames = 0
            };
            AGSAnimationState state = new AGSAnimationState {
                CurrentFrame     = currentFrame,
                CurrentLoop      = currentLoop,
                RunningBackwards = runningBackwards,
                TimeToNextFrame  = currentFrame * 2
            };
            AGSAnimation animation = new AGSAnimation(config, state);

            for (int i = 0; i < 5; i++)
            {
                animation.Frames.Add(getFrame(i * 2));
            }

            animation.NextFrame();

            Assert.AreEqual(expectedFrame, state.CurrentFrame);
            Assert.AreEqual(expectedLoop, state.CurrentLoop);
            Assert.AreEqual(expectedBackwards, state.RunningBackwards);
            Assert.AreEqual(expectedFrame * 2, state.TimeToNextFrame);
        }
コード例 #2
0
        public void SetupAnimationTest(LoopingStyle looping, int expectedFrame, bool expectedBackwards)
        {
            AGSAnimationConfiguration config = new AGSAnimationConfiguration {
                Looping = looping, DelayBetweenFrames = 0
            };
            AGSAnimationState state     = new AGSAnimationState();
            AGSAnimation      animation = new AGSAnimation(config, state);

            for (int i = 0; i < 5; i++)
            {
                animation.Frames.Add(getFrame(i * 2));
            }

            animation.Setup();

            Assert.AreEqual(expectedFrame, state.CurrentFrame);
            Assert.AreEqual(0, state.CurrentLoop);
            Assert.AreEqual(expectedBackwards, state.RunningBackwards);
            Assert.AreEqual(expectedFrame * 2, state.TimeToNextFrame);
        }
コード例 #3
0
ファイル: ObjectTests.cs プロジェクト: tzachshabtay/MonoAGS
        public static IEnumerable <IObject> GetImplementors(Mocks mocks, Mock <IGameState> stateMock, IGameState state = null)
        {
            if (state == null && stateMock != null)
            {
                state = stateMock.Object;
            }
            mocks.Game().Setup(g => g.State).Returns(state);
            stateMock?.Setup(s => s.UI).Returns(new AGSConcurrentHashSet <IObject>());
            Mock <IInput> input    = new Mock <IInput>();
            Resolver      resolver = GetResolver();

            input.Setup(i => i.KeyUp).Returns(new Mock <IEvent <KeyboardEventArgs> >().Object);
            input.Setup(i => i.KeyDown).Returns(new Mock <IEvent <KeyboardEventArgs> >().Object);
            input.Setup(i => i.MouseDown).Returns(new Mock <IEvent <MouseButtonEventArgs> >().Object);
            if (stateMock != null)
            {
                stateMock.Setup(s => s.Cutscene).Returns(mocks.Cutscene().Object);
            }

            Mock <IUIEvents> uiEvents = new Mock <IUIEvents>();
            Mock <IEvent <MouseButtonEventArgs> >   buttonEvent      = new Mock <IEvent <MouseButtonEventArgs> >();
            Mock <IEvent <MouseClickEventArgs> >    buttonClickEvent = new Mock <IEvent <MouseClickEventArgs> >();
            Mock <IEvent <MousePositionEventArgs> > mouseEvent       = new Mock <IEvent <MousePositionEventArgs> >();

            uiEvents.Setup(u => u.MouseClicked).Returns(buttonClickEvent.Object);
            uiEvents.Setup(u => u.MouseDown).Returns(buttonEvent.Object);
            uiEvents.Setup(u => u.MouseUp).Returns(buttonEvent.Object);
            uiEvents.Setup(u => u.LostFocus).Returns(buttonEvent.Object);
            uiEvents.Setup(u => u.MouseEnter).Returns(mouseEvent.Object);
            uiEvents.Setup(u => u.MouseLeave).Returns(mouseEvent.Object);
            uiEvents.Setup(u => u.MouseMove).Returns(mouseEvent.Object);

            Mock <IGraphicsFactory> graphicsFactory = new Mock <IGraphicsFactory>();
            Func <ISprite>          getSprite       = () => new AGSSprite(resolver, mocks.MaskLoader().Object);

            graphicsFactory.Setup(g => g.GetSprite()).Returns(() => getSprite());
            AGSAnimationComponent animationComponent = new AGSAnimationComponent();

            Mock <IImage>           image           = new Mock <IImage>();
            Mock <IButtonComponent> buttonComponent = new Mock <IButtonComponent>();
            var animation = new AGSAnimation(new AGSAnimationConfiguration {
                Loops = 1
            }, new AGSAnimationState(), 1);

            animation.Frames.Add(new AGSAnimationFrame(getSprite())
            {
                Delay = -1
            });
            buttonComponent.Setup(b => b.HoverAnimation).Returns(new ButtonAnimation(animation));
            buttonComponent.Setup(b => b.IdleAnimation).Returns(new ButtonAnimation(animation));
            buttonComponent.Setup(b => b.PushedAnimation).Returns(new ButtonAnimation(animation));
            Mock <IALAudioSystem>   audioSystem  = new Mock <IALAudioSystem>();
            Mock <IRuntimeSettings> settings     = mocks.Settings();
            Mock <IRenderThread>    renderThread = new Mock <IRenderThread>();
            Mock <IUpdateThread>    updateThread = new Mock <IUpdateThread>();

            renderThread.Setup(u => u.RunBlocking(It.IsAny <Action>())).Callback <Action>(a => a());
            updateThread.Setup(u => u.RunBlocking(It.IsAny <Action>())).Callback <Action>(a => a());

            var walkComponent = new Mock <IWalkComponent>();

            resolver.Builder.RegisterInstance(input.Object);
            resolver.Builder.RegisterInstance(state);
            resolver.Builder.RegisterInstance(uiEvents.Object);
            resolver.Builder.RegisterInstance(animationComponent).As <IAnimationComponent>();
            resolver.Builder.RegisterInstance(buttonComponent.Object);
            resolver.Builder.RegisterInstance(audioSystem.Object);
            resolver.Builder.RegisterInstance(new Mock <IRenderMessagePump>().Object);
            resolver.Builder.RegisterInstance(new Mock <IUpdateMessagePump>().Object);
            resolver.Builder.RegisterInstance(renderThread.Object);
            resolver.Builder.RegisterInstance(updateThread.Object);
            resolver.Builder.RegisterInstance(walkComponent.Object);
            resolver.Builder.RegisterInstance(new Mock <ITexture>().Object);
            resolver.Builder.RegisterInstance(mocks.MaskLoader().Object).As <IMaskLoader>();
            resolver.Builder.RegisterInstance(settings.Object).As <IGameSettings>();
            resolver.Builder.RegisterInstance(settings.Object).As <IRuntimeSettings>();
            resolver.Builder.RegisterInstance(mocks.Game().Object);
            resolver.Build();

            Func <IObject> baseObj = () => new AGSObject("Test" + Guid.NewGuid(), resolver);

            mocks.Game().Setup(g => g.Events).Returns(resolver.Container.Resolve <IGameEvents>());
            mocks.Game().Setup(g => g.Factory).Returns(resolver.Container.Resolve <IGameFactory>());

            Mock <IOutfit> outfit = new Mock <IOutfit>();

            Func <IPanel> basePanel = () => new AGSPanel("Panel" + Guid.NewGuid(), resolver)
            {
                Image = image.Object
            };
            Func <ILabel> baseLabel = () => new AGSLabel("Label" + Guid.NewGuid(), resolver)
            {
                LabelRenderSize = new SizeF(100f, 50f)
            };
            var button = new AGSButton("Button" + Guid.NewGuid(), resolver)
            {
                LabelRenderSize = new SizeF(100f, 50f)
            };

            List <IObject> implmentors = new List <IObject>
            {
                baseObj().Hotspot("Object"),
                new AGSCharacter("Character" + Guid.NewGuid(), resolver, outfit.Object).Hotspot("Character"),
                basePanel().Hotspot("Panel"),
                baseLabel().Hotspot("Label"),
                button.Hotspot("Button"),
                new AGSInventoryWindow("Inventory" + Guid.NewGuid(), resolver, image.Object).Hotspot("Inventory"),
                (new AGSSlider("Slider" + Guid.NewGuid(), resolver)
                {
                    Image = image.Object
                }).Hotspot("Slider"),
                new AGSCheckBox("Checkbox" + Guid.NewGuid(), resolver),
                new AGSTextbox("Textbox" + Guid.NewGuid(), resolver),
                new AGSComboBox("Combobox" + Guid.NewGuid(), resolver)
            };

            return(implmentors);
        }