Exemple #1
0
        private void SelectCharacter(AgsView view, Character character, int xClick, int yClick, RoomEditorState state)
        {
            int spriteNum = 0;

            if (view.Loops[0].Frames.Count > 0)
            {
                ViewFrame thisFrame = view.Loops[0].Frames[0];
                spriteNum = thisFrame.Image;
            }

            int width  = GetSpriteWidthForGameResolution(spriteNum);
            int height = GetSpriteHeightForGameResolution(spriteNum);

            if ((xClick >= character.StartX - (width / 2)) && (xClick < character.StartX + (width / 2)) &&
                (yClick >= character.StartY - height) && (yClick < character.StartY))
            {
                if (!state.DragFromCenter)
                {
                    _offsetX = xClick - character.StartX;
                    _offsetY = yClick - character.StartY;
                }
                else
                {
                    _offsetX = 0;
                    _offsetY = 0;
                }
                _selectedCharacter = character;
                _movingCharacter   = true;
            }
        }
        public void SetCharacter(Character c, int carSprite, CharacterDirection carSpriteDir, int view = 0, int loop = 0, int frame = 0)
        {
            this.DetachCharacter();
            int carl = 0;
            int carw = 0;

            if (carSpriteDir == eDirectionDown || carSpriteDir == eDirectionUp)
            {
                carl = Game.SpriteHeight[carSprite];
                carw = Game.SpriteWidth[carSprite];
            }
            else if (carSpriteDir == eDirectionLeft || carSpriteDir == eDirectionRight)
            {
                carl = Game.SpriteWidth[carSprite];
                carw = Game.SpriteHeight[carSprite];
            }
            else
            {
                AbortGame("Source car sprite direction cannot be diagonal, please provide sprite having one of the following directions: left, right, up or down.");
                return;
            }
            this.c               = c;
            this.carSprite       = carSprite;
            this.carSpriteAngle  = RotatedView.AngleForLoop(carSpriteDir);
            this.viewFrame       = Game.GetViewFrame(view, loop, frame);
            this.bodyLength      = IntToFloat(carl);
            this.bodyWidth       = IntToFloat(carw);
            this.collPointOff[0] = VectorF.create(carl / 2, -carw / 2);
            this.collPointOff[1] = VectorF.create(carl / 2, carw / 2);
            this.collPointOff[2] = VectorF.create(-carl / 2, carw / 2);
            this.collPointOff[3] = VectorF.create(-carl / 2, -carw / 2);
            this.SyncCharacter();
        }
        public static DynamicSprite[] CreateLoop(int view, int loop, int base_loop = 0)
        {
            if (loop == base_loop || view >= Game.ViewCount || loop >= Game.GetLoopCountForView(view) || base_loop >= Game.GetLoopCountForView(view))
            {
                return(null);
            }
            int rot_angle = LoopAngles[loop] - LoopAngles[base_loop];

            rot_angle = Maths.Angle360(rot_angle);
            int frame            = 0;
            int base_frame_count = Game.GetFrameCountForLoop(view, base_loop);
            int dest_frame_count = Game.GetFrameCountForLoop(view, loop);
            int frame_count      = Maths.Max(base_frame_count, dest_frame_count);

            DynamicSprite[] sprarr = new DynamicSprite[frame_count];
            for (frame = 0; frame < frame_count; frame += 1)
            {
                ViewFrame     vf  = Game.GetViewFrame(view, base_loop, frame);
                DynamicSprite spr = DynamicSprite.CreateFromExistingSprite(vf.Graphic);
                spr.Rotate(rot_angle);
                vf            = Game.GetViewFrame(view, loop, frame);
                vf.Graphic    = spr.Graphic;
                sprarr[frame] = spr;
            }
            return(sprarr);
        }
Exemple #4
0
 public void destroy()
 {
     Screen.scrollableChildren.Remove(this);
     ViewFrame.destroy();
     ScrollingFrame.destroy();
     SliderBar.destroy();
 }
        public async Task GotoSharingMode()
        {
            // 共享模式下,不会显示听讲者视图【设置完共享源,将自动开启共享模式】
            //1. 有主讲者视图和共享视图,主讲者小,共享大
            //2. 无主讲者,有共享,共享全屏
            //3. 没有共享,无法设置共享模式【选择共享模式时会校验】

            var sharingView =
                ViewFrameList.FirstOrDefault(
                    v => (v.PhoneId == _sdkService.TeacherPhoneId) && v.IsOpened && (v.ViewType == 2));

            if (sharingView == null)
            {
                await GotoDefaultMode();

                return;
            }

            var speakerView =
                ViewFrameList.FirstOrDefault(
                    v => (v.PhoneId == _sdkService.TeacherPhoneId) && v.IsOpened && (v.ViewType == 1));

            if (speakerView == null)
            {
                FullScreenView = sharingView;
                await LaunchCloseUpLayout();

                return;
            }

            SetBigView(sharingView);

            await LaunchBigSmallLayout();
        }
Exemple #6
0
        private void DrawCharacter(Character character, RoomEditorState state)
        {
            AgsView view = _game.FindViewByID(character.NormalView);

            if (view != null && view.Loops.Count > 0)
            {
                int spriteNum = 0;

                //this is a check to make certain that loop 0 frame 0 of the character normalview has an image;
                //if not, it defaults to using spriteNum 0
                if (view.Loops[0].Frames.Count > 0)
                {
                    ViewFrame thisFrame = view.Loops[0].Frames[0];
                    spriteNum = thisFrame.Image;
                }
                int xPos = state.RoomXToWindow(character.StartX);
                int yPos = state.RoomYToWindow(character.StartY);
                int spriteWidth, spriteHeight;
                Utilities.GetSizeSpriteWillBeRenderedInGame(spriteNum, out spriteWidth, out spriteHeight);
                spriteWidth  = state.RoomSizeToWindow(spriteWidth);
                spriteHeight = state.RoomSizeToWindow(spriteHeight);

                Factory.NativeProxy.DrawSpriteToBuffer(spriteNum, xPos - spriteWidth / 2, yPos - spriteHeight, state.Scale);
            }
        }
Exemple #7
0
        private async void LayoutChangedEventHandler(object sender, RoutedEventArgs e)
        {
            MenuItem menuItem       = sender as MenuItem;
            MenuItem sourceMenuItem = e.OriginalSource as MenuItem;

            string header = menuItem.Tag.ToString();

            ViewMode viewMode = (ViewMode)Enum.Parse(typeof(ViewMode), header);

            switch (viewMode)
            {
            case ViewMode.Auto:
            case ViewMode.Average:
                await ViewModeChangedAsync(viewMode);

                break;

            case ViewMode.BigSmalls:
                ViewFrame bigView = sourceMenuItem.Tag as ViewFrame;
                await BigViewChangedAsync(bigView);

                break;

            case ViewMode.Closeup:
                ViewFrame fullView = sourceMenuItem.Tag as ViewFrame;
                await FullScreenViewChangedAsync(fullView);

                break;

            default:
                break;
            }
        }
Exemple #8
0
        private async Task BigViewChangedAsync(ViewFrame bigView)
        {
            if (!CheckIsUserSpeaking(true))
            {
                return;
            }

            if (_viewLayoutService.ViewFrameList.Count(viewFrame => viewFrame.IsOpened) < 2)
            {
                //一大多小至少有两个视图,否则不予设置

                HasErrorMsg("-1", Messages.WarningBigSmallLayoutNeedsTwoAboveViews);
                return;
            }

            if (!CheckIsUserSpeaking(bigView, true))
            {
                return;
            }

            _viewLayoutService.ChangeViewMode(ViewMode.BigSmalls);

            var bigSpeakerView =
                _viewLayoutService.ViewFrameList.FirstOrDefault(
                    v => v.PhoneId == bigView.PhoneId && v.Hwnd == bigView.Hwnd);

            if (bigSpeakerView == null)
            {
                //LOG ViewFrameList may change during this period.
            }

            _viewLayoutService.SetSpecialView(bigSpeakerView, SpecialViewType.Big);

            await _viewLayoutService.LaunchLayout();
        }
Exemple #9
0
        private void DrawCharacter(Character character, RoomEditorState state)
        {
            AgsView view = _game.FindViewByID(character.NormalView);

            if (view != null && view.Loops.Count > 0)
            {
                int scale = state.ScaleFactor;

                int spriteNum = 0;

                //this is a check to make certain that loop 0 frame 0 of the character normalview has an image;
                //if not, it defaults to using spriteNum 0
                if (view.Loops[0].Frames.Count > 0)
                {
                    ViewFrame thisFrame = view.Loops[0].Frames[0];
                    spriteNum = thisFrame.Image;
                }
                int xPos         = AdjustXCoordinateForWindowScroll(character.StartX, state); // character.StartX* scale;
                int yPos         = AdjustYCoordinateForWindowScroll(character.StartY, state); // character.StartY* scale;
                int spriteWidth  = GetSpriteWidthForGameResolution(spriteNum) * scale;        // Factory.NativeProxy.GetRelativeSpriteWidth(spriteNum) * scale;
                int spriteHeight = GetSpriteHeightForGameResolution(spriteNum) * scale;       // Factory.NativeProxy.GetRelativeSpriteHeight(spriteNum) * scale;

                Factory.NativeProxy.DrawSpriteToBuffer(spriteNum, xPos - spriteWidth / 2, yPos - spriteHeight, scale);
            }
        }
Exemple #10
0
        private void InsertNewFrame(int afterIndex)
        {
            if (afterIndex < 0)
            {
                afterIndex = -1;
            }
            if (afterIndex >= _loop.Frames.Count)
            {
                afterIndex = _loop.Frames.Count - 1;
            }

            foreach (ViewFrame frame in _loop.Frames)
            {
                if (frame.ID > afterIndex)
                {
                    frame.ID++;
                }
            }
            ViewFrame newFrame = new ViewFrame();

            newFrame.ID = afterIndex + 1;
            _loop.Frames.Insert(afterIndex + 1, newFrame);

            UpdateControlWidth();

            if (NewFrameAdded != null)
            {
                NewFrameAdded(_loop, newFrame.ID);
            }

            ChangeSelectedFrame(newFrame.ID);
        }
Exemple #11
0
        //private async Task GotoDefaultMode()
        //{
        //    MeetingMode = MeetingMode.Interaction;
        //    ResetAsAutoLayout();

        //    await LaunchLayout();
        //}

        //private void MakeNonCreatorViewsInvisible()
        //{
        //    ViewFrameList.ForEach(viewFrame =>
        //    {
        //        if (viewFrame.PhoneId != _sdkService.TeacherPhoneId)
        //            viewFrame.Visibility = Visibility.Collapsed;
        //    });
        //}

        private void ResetFullScreenView(ParticipantView toBeClosedView)
        {
            if ((FullScreenView != null) && (FullScreenView.PhoneId == toBeClosedView.Participant.PhoneId) &&
                (FullScreenView.ViewType == toBeClosedView.ViewType))
            {
                FullScreenView = null;
            }
        }
        //private void MakeNonCreatorViewsInvisible()
        //{
        //    ViewFrameList.ForEach(viewFrame =>
        //    {
        //        if (viewFrame.PhoneId != _sdkService.TeacherPhoneId)
        //            viewFrame.Visibility = Visibility.Collapsed;
        //    });
        //}

        private void ResetFullScreenView(SpeakerView toBeClosedView)
        {
            if ((FullScreenView != null) && (FullScreenView.PhoneId == toBeClosedView.m_speaker.m_szPhoneId) &&
                (FullScreenView.ViewType == toBeClosedView.m_viewType))
            {
                FullScreenView = null;
            }
        }
Exemple #13
0
 public void reset()
 {
     Screen.scrollableChildren.Remove(this);
     Screen.scrollableChildren.Insert(0, this);
     ViewFrame.reset();
     ScrollingFrame.reset();
     SliderBar.reset();
 }
Exemple #14
0
        public void CannotFindClass()
        {
            var sut = new ViewFrame {
                Content = new BViewModel()
            };

            AssertTextBox(sut, "Could Not Find Type Melville.MVVM.WPF.Test.ViewFrames.ViewFrameTest+BView.");
        }
        public void ResetAsAutoLayout()
        {
            ViewFrameList.ForEach(viewFrame => { viewFrame.IsBigView = false; });

            FullScreenView = null;

            ViewMode = ViewMode.Auto;
        }
Exemple #16
0
 public void FlipSelectedFrame()
 {
     if ((_selectedFrame >= 0) && (_selectedFrame < _loop.Frames.Count))
     {
         ViewFrame frame = _loop.Frames[_selectedFrame];
         frame.Flipped = !frame.Flipped;
         this.Invalidate();
         OnSelectedFrameChanged();
     }
 }
        private void RefreshLiveLayout(ref LiveVideoStreamInfo liveVideoStreamInfo, ViewFrame viewFrame,
                                       int resolutionWidth, int resolutionHeight)
        {
            liveVideoStreamInfo.Handle = (uint)viewFrame.Hwnd.ToInt32();

            liveVideoStreamInfo.XLocation = (int)((viewFrame.Column / Columns) * resolutionWidth);
            liveVideoStreamInfo.Width     = (int)((viewFrame.ColumnSpan / Columns) * resolutionWidth);

            liveVideoStreamInfo.YLocation = (int)((viewFrame.Row / Rows) * resolutionHeight);
            liveVideoStreamInfo.Height    = (int)((viewFrame.RowSpan / Rows) * resolutionHeight);
        }
 /// <summary>
 /// Event to navigate to the HIGH SCORES UC
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 public void Nav_Scores_Event(object sender, EventArgs e)
 {
     try
     {
         ViewFrame.Navigate(ucScores);
     }
     catch (Exception ex)
     {
         MessageBox.Show("Failed to Navigate to: HIGH_SCORES.\n" + ex.ToString(),
                         "Error - Navigation", MessageBoxButton.OK, MessageBoxImage.Exclamation);
     }
 }
 /// <summary>
 /// Event to navigate back to the INTRO UC
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 public void Nav_Intro_Event(object sender, EventArgs e)
 {
     try
     {
         ViewFrame.Navigate(ucIntro);
     }
     catch (Exception ex)
     {
         MessageBox.Show("Failed to Navigate to: INTRO.\n" + ex.ToString(),
                         "Error - Navigation", MessageBoxButton.OK, MessageBoxImage.Exclamation);
     }
 }
 /// <summary>
 /// Event to navigate to the GAME-End UC
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 public void Nav_GameEnd_Event(object sender, EventArgs e)
 {
     try
     {
         ucGame_End.PrepareScreen(currentPlayer.Name, ucGame.CurrentGame.CorrectAnswers, ucGame.CurrentGame.Time);
         ViewFrame.Navigate(ucGame_End);
     }
     catch (Exception ex)
     {
         MessageBox.Show("Failed to Navigate to: GAME_END.\n" + ex.ToString(),
                         "Error - Navigation", MessageBoxButton.OK, MessageBoxImage.Exclamation);
     }
 }
 /// <summary>
 /// Event to navigate to the GAME UC
 /// </summary>
 /// <param name="sender"></param>
 /// <param name="e"></param>
 public void Nav_Game_Event(object sender, EventArgs e)
 {
     try
     {
         ucGame.PrepareGame(ucMenu.Mode);
         ViewFrame.Navigate(ucGame);
     }
     catch (Exception ex)
     {
         MessageBox.Show("Failed to Navigate to: GAME.\n" + ex.ToString(),
                         "Error - Navigation", MessageBoxButton.OK, MessageBoxImage.Exclamation);
     }
 }
Exemple #22
0
        public void SetSpecialView(ViewFrame view, SpecialViewType type)
        {
            switch (type)
            {
            case SpecialViewType.Big:
                SetBigView(view);
                break;

            case SpecialViewType.FullScreen:
                SetFullScreenView(view);
                break;
            }
        }
Exemple #23
0
        private void UpdateDelayForThisFrame()
        {
            _thisFrameDelay = (int)udDelay.Value;

            int loop  = (int)udLoop.Value;
            int frame = (int)udFrame.Value;

            if ((loop < _view.Loops.Count) &&
                (frame < _view.Loops[loop].Frames.Count))
            {
                ViewFrame thisFrame = _view.Loops[loop].Frames[frame];
                _thisFrameDelay += thisFrame.Delay;
            }
        }
Exemple #24
0
        private void previewPanel_Paint(object sender, PaintEventArgs e)
        {
            if ((_view != null) && (udLoop.Value < _view.Loops.Count) &&
                (udFrame.Value < _view.Loops[(int)udLoop.Value].Frames.Count))
            {
                ViewFrame  thisFrame    = _view.Loops[(int)udLoop.Value].Frames[(int)udFrame.Value];
                int        spriteNum    = thisFrame.Image;
                SpriteInfo info         = Factory.NativeProxy.GetSpriteInfo(spriteNum);
                int        spriteWidth  = info.Width;
                int        spriteHeight = info.Height;
                // Draw low-res sprites larger (TODO: find out why, perhaps just for the better looks?)
                if (info.Resolution == SpriteImportResolution.LowRes)
                {
                    spriteWidth  *= 2;
                    spriteHeight *= 2;
                }
                int x = 0, y;
                y = previewPanel.ClientSize.Height - spriteHeight;
                if (chkCentrePivot.Checked)
                {
                    x = previewPanel.ClientSize.Width / 2 - spriteWidth / 2;
                }
                if ((spriteWidth <= previewPanel.ClientSize.Width) &&
                    (spriteHeight <= previewPanel.ClientSize.Height))
                {
                    IntPtr hdc = e.Graphics.GetHdc();
                    Factory.NativeProxy.DrawSprite(hdc, x, y, spriteNum, thisFrame.Flipped);
                    e.Graphics.ReleaseHdc();
                }
                else
                {
                    Bitmap bmp = Utilities.GetBitmapForSpriteResizedKeepingAspectRatio(new Sprite(spriteNum, spriteWidth, spriteHeight), previewPanel.ClientSize.Width, previewPanel.ClientSize.Height, chkCentrePivot.Checked, false, SystemColors.Control);

                    if (thisFrame.Flipped)
                    {
                        Point   urCorner = new Point(0, 0);
                        Point   ulCorner = new Point(bmp.Width, 0);
                        Point   llCorner = new Point(bmp.Width, bmp.Height);
                        Point[] destPara = { ulCorner, urCorner, llCorner };
                        e.Graphics.DrawImage(bmp, destPara);
                    }
                    else
                    {
                        e.Graphics.DrawImage(bmp, 1, 1);
                    }

                    bmp.Dispose();
                }
            }
        }
Exemple #25
0
        public void GenerateChildNull()
        {
            var sut = new ViewFrame();

#if DEBUG
            AssertTextBox(sut, "Content Never Set");
#else
            Assert.Null(sut.Child);
#endif
            sut.Content = "StringContent";
            AssertTextBox(sut, "StringContent");
            sut.Content = new Exception();
            AssertTextBox(sut, "System.Exception does not contain \"ViewModel\".");
            sut.Content = null;
            AssertTextBox(sut, "<Null>");
        }
        /// <summary>
        /// Event to navigate to the MENU User Control
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        public void Nav_Menu_Event(object sender, EventArgs e)
        {
            try
            {
                currentPlayer.Name = ucIntro.Username;
                currentPlayer.Age  = ucIntro.Age;

                ucMenu.Welcome_User(currentPlayer.Name, currentPlayer.Age);
                ViewFrame.Navigate(ucMenu);
            }
            catch (Exception ex)
            {
                MessageBox.Show("Failed to Navigate to: MENU.\n" + ex.ToString(),
                                "Error - Navigation", MessageBoxButton.OK, MessageBoxImage.Exclamation);
            }
        }
Exemple #27
0
        private bool HitTest(int x, int y, Character character, AgsView view)
        {
            int spriteNum = 0;

            if (view.Loops[0].Frames.Count > 0)
            {
                ViewFrame thisFrame = view.Loops[0].Frames[0];
                spriteNum = thisFrame.Image;
            }

            int width  = GetSpriteWidthForGameResolution(spriteNum);
            int height = GetSpriteHeightForGameResolution(spriteNum);

            return((x >= character.StartX - (width / 2)) && (x < character.StartX + (width / 2)) &&
                   (y >= character.StartY - height) && (y < character.StartY));
        }
Exemple #28
0
        public void FindViewModel()
        {
            var data = new AViewModel();
            var sut  = new ViewFrame();

            var creator = new Mock <IDIIntegration>();

            creator.Setup(i => i.Get(typeof(AView))).Returns(new AView());
            DiIntegration.SetContainer(sut, creator.Object);

            sut.Content = data;

            Assert.Equal(data, sut.Content);

            Assert.IsType <AView>(sut.Child);
            Assert.Equal(data, (sut.Child as FrameworkElement)?.DataContext);
        }
Exemple #29
0
        private void RenderTextBoxView()
        {
            TextBoxView textBoxView        = new TextBoxView();
            string      currentOmnibarText = "";

            if (!string.IsNullOrEmpty(Globals.DeviceId))
            {
                currentOmnibarText = currentView.deviceInputField.Text;
            }
            currentView = textBoxView;
            if (!string.IsNullOrEmpty(Globals.DeviceId))
            {
                currentView.deviceInputField.Text = currentOmnibarText;
                currentView.SubmitDeviceId_Click(new object(), new RoutedEventArgs());
            }
            ViewFrame.Navigate(currentView);
        }
Exemple #30
0
        private void RenderDefaultView()
        {
            DefaultView defaultView        = new DefaultView();
            string      currentOmnibarText = "";

            if (!string.IsNullOrEmpty(Globals.DeviceId))
            {
                currentOmnibarText = currentView.deviceInputField.Text;
            }
            currentView = defaultView;
            if (!string.IsNullOrEmpty(Globals.DeviceId))
            {
                currentView.deviceInputField.Text = currentOmnibarText;
                currentView.ToggleMainWindowButtons(true);
            }
            ViewFrame.Navigate(defaultView);
        }