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); }
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(); }
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); } }
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; } }
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(); }
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); } }
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); }
//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; } }
public void reset() { Screen.scrollableChildren.Remove(this); Screen.scrollableChildren.Insert(0, this); ViewFrame.reset(); ScrollingFrame.reset(); SliderBar.reset(); }
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; }
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); } }
public void SetSpecialView(ViewFrame view, SpecialViewType type) { switch (type) { case SpecialViewType.Big: SetBigView(view); break; case SpecialViewType.FullScreen: SetFullScreenView(view); break; } }
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; } }
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(); } } }
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); } }
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)); }
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); }
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); }
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); }