public LongStoryPage(LHStartPage parent) { InitializeComponent(); this.parent = parent; this.Image_StoryBook_Decorate.Source = resMana.GetPicture("Bonus_Mask.png", ResourceManager.FullImageRect).SpriteBitmapImage; this.Image_StoryBook_Decorate.Opacity = 0; DialogueSprite = new YuriSprite() { DisplayBinding = this.StackPanel_DialogList, AnimationElement = this.StackPanel_DialogList, Descriptor = new SpriteDescriptor() }; DecorateSprite = new YuriSprite() { DisplayBinding = this.Image_StoryBook_Decorate, AnimationElement = this.Image_StoryBook_Decorate, Descriptor = new SpriteDescriptor() }; BgTransitorSprite = new YuriSprite() { DisplayBinding = this.Image_StoryBook_BgTransitor, AnimationElement = this.Image_StoryBook_BgTransitor, Descriptor = new SpriteDescriptor() }; //MainFrameSprite = new YuriSprite() //{ // DisplayBinding = ViewManager.mWnd.mainFrame, // AnimationElement = ViewManager.mWnd.mainFrame, // Descriptor = new SpriteDescriptor() //}; this.RefreshCharacterColorDict(); // 初始化回调标志位 Director.RunMana.Symbols.GlobalCtxDao.GlobalSymbolTable.Assign("tracing_callback", String.Empty); Director.RunMana.Symbols.GlobalCtxDao.GlobalSymbolTable.Assign("tracing_idx", 0); }
private void Art_Image_Preview_MouseLeftButtonUp(object sender, MouseButtonEventArgs e) { var image = sender as Image; var row = Grid.GetRow(image) == 2 ? 1 : 0; var col = Grid.GetColumn(image); var isOpened = this.OpenVect[row, col]; if (isOpened) { viewSprite = rm.GetPicture("CG_" + (row * 4 + col + 1) + ".png", ResourceManager.FullImageRect); SpriteDescriptor desc = new SpriteDescriptor() { ResourceType = ResourceType.Pictures }; viewSprite.Descriptor = desc; this.Art_Image_Viewbox.Margin = new Thickness(0, 0, 0, 0); this.RollCounter = 0; this.Art_Image_Viewbox.Source = viewSprite.SpriteBitmapImage; this.Art_Image_Viewbox.Visibility = Visibility.Visible; this.Art_Image_Viewbox.Opacity = 0; desc.ToOpacity = 1; viewSprite.DisplayBinding = viewSprite.AnimationElement = this.Art_Image_Viewbox; SpriteAnimation.OpacityToAnimation(viewSprite, TimeSpan.FromMilliseconds(500), 1); if (GlobalConfigContext.GAME_PERFORMANCE_TYPE == GlobalConfigContext.PerformanceType.HighQuality) { SpriteAnimation.BlurMutexAnimation(canvasSprite, TimeSpan.FromMilliseconds(800), 0, 50); } this.Art_Grid_Controls.IsHitTestVisible = false; } }
public LHSettingsPage(ILoadablePage parent) { InitializeComponent(); this.parent = parent; this.currentTabImage = this.TabImage_Graphic; this.GrahpicTabSprite = new YuriSprite() { DisplayBinding = this.Grid_Tab_Graphic, AnimationElement = this.Grid_Tab_Graphic, Descriptor = new SpriteDescriptor() }; this.VoiceTabSprite = new YuriSprite() { DisplayBinding = this.Grid_Tab_Voice, AnimationElement = this.Grid_Tab_Voice, Descriptor = new SpriteDescriptor() }; this.KeyboardTabSprite = new YuriSprite() { DisplayBinding = this.Grid_Tab_Keyboard, AnimationElement = this.Grid_Tab_Keyboard, Descriptor = new SpriteDescriptor() }; this.OthersTabSprite = new YuriSprite() { DisplayBinding = this.Grid_Tab_Others, AnimationElement = this.Grid_Tab_Others, Descriptor = new SpriteDescriptor() }; }
/// <summary> /// 获取存档屏幕截图的精灵 /// </summary> /// <param name="sourceName">文件路径</param> /// <returns>精灵实例</returns> public YuriSprite GetSaveSnapshot(string sourceName) { YuriSprite sprite = new YuriSprite(); if (File.Exists(IOUtils.ParseURItoURL(sourceName))) { Uri bg = new Uri(IOUtils.ParseURItoURL(sourceName), UriKind.RelativeOrAbsolute); sprite.Init(sourceName, ResourceType.SaveSnapshot, bg); } else { MessageBox.Show("[错误] 资源文件不存在:" + sourceName); Director.GetInstance().GetMainRender().Shutdown(); } return(sprite); }
public LHSaveLoadPage(ILoadablePage parent) { InitializeComponent(); this.parent = parent; this.SaveSlotSprite = new YuriSprite() { DisplayBinding = this.CanvasGroup_SaveSlots, AnimationElement = this.CanvasGroup_SaveSlots, Descriptor = new SpriteDescriptor() }; for (int i = 0; i < GlobalConfigContext.GAME_SAVE_MAX; i++) { this.saveList.Add(null); this.saveDescList.Add(null); this.slotContentList.Add(null); } }
private void Blur_OnClick(object sender, RoutedEventArgs e) { if (blurCount == -1) { Blursd = new SpriteDescriptor() { ResourceType = ResourceType.Pictures }; var rm = ResourceManager.GetInstance(); Blurbgg = rm.GetPicture("UUZ.jpg", ResourceManager.FullImageRect); Image img3 = new Image(); img3.Source = Blurbgg.SpriteBitmapImage; img3.Width = Blurbgg.SpriteBitmapImage.PixelWidth; img3.Height = Blurbgg.SpriteBitmapImage.PixelHeight; Blurbgg.DisplayBinding = img3; Blurbgg.AnimationElement = img3; Blurbgg.Descriptor = Blursd; Canvas.SetLeft(img3, 0); Canvas.SetTop(img3, 0); Canvas.SetZIndex(img3, 5); this.BO_Bg_Canvas.Children.Add(img3); Blurbgg.InitAnimationRenderTransform(); Blursd.BlurRadius = 0; Blursd.ToBlurRadius = 20; } else if (blurCount % 2 == 0) { Blursd.ToBlurRadius = 50; SpriteAnimation.BlurMutexAnimation(Blurbgg, TimeSpan.FromMilliseconds(1000), Blursd.BlurRadius, Blursd.ToBlurRadius); } else { Blursd.ToBlurRadius = 0; SpriteAnimation.BlurMutexAnimation(Blurbgg, TimeSpan.FromMilliseconds(1000), Blursd.BlurRadius, Blursd.ToBlurRadius); } blurCount++; }
public LHStartPage() { InitializeComponent(); this.Frame_SaveLoad.Content = new LHSaveLoadPage(this); this.Frame_Settings.Content = new LHSettingsPage(this); this.Frame_BonusStory.Content = new LongStoryPage(this); this.BackGroundSprite = new YuriSprite() { DisplayBinding = this.Art_Image_Background, AnimationElement = this.Art_Image_Background, Descriptor = new SpriteDescriptor() }; TransformGroup aniGroup = new TransformGroup(); TranslateTransform XYTransformer = new TranslateTransform(); ScaleTransform ScaleTransformer = new ScaleTransform { CenterX = 1920 / 2, CenterY = 1080 / 2 }; RotateTransform RotateTransformer = new RotateTransform { CenterX = 1920 / 2, CenterY = 1080 / 2 }; aniGroup.Children.Add(XYTransformer); aniGroup.Children.Add(ScaleTransformer); aniGroup.Children.Add(RotateTransformer); this.Art_Image_Background.RenderTransform = aniGroup; this.BackGroundSprite.TranslateTransformer = XYTransformer; this.BackGroundSprite.ScaleTransformer = ScaleTransformer; this.BackGroundSprite.RotateTransformer = RotateTransformer; this.ForeGroundSprite = new YuriSprite() { DisplayBinding = this.Art_Image_Fore, AnimationElement = this.Art_Image_Fore, Descriptor = new SpriteDescriptor() }; TransformGroup aniGroupFore = new TransformGroup(); TranslateTransform XYTransformerFore = new TranslateTransform(); ScaleTransform ScaleTransformerFore = new ScaleTransform { CenterX = 1920 / 2, CenterY = 1080 / 2 }; RotateTransform RotateTransformerFore = new RotateTransform { CenterX = 1920 / 2, CenterY = 1080 / 2 }; aniGroupFore.Children.Add(XYTransformerFore); aniGroupFore.Children.Add(ScaleTransformerFore); aniGroupFore.Children.Add(RotateTransformerFore); this.Art_Image_Fore.RenderTransform = aniGroupFore; this.ForeGroundSprite.TranslateTransformer = XYTransformerFore; this.ForeGroundSprite.ScaleTransformer = ScaleTransformerFore; this.ForeGroundSprite.RotateTransformer = RotateTransformerFore; this.UiSprite = new YuriSprite() { DisplayBinding = this.Grid_WarpHolder, AnimationElement = this.Grid_WarpHolder, Descriptor = new SpriteDescriptor() }; this.RootButtonSprite = new YuriSprite() { DisplayBinding = this.Title_Root_Button_Warp, AnimationElement = this.Title_Root_Button_Warp, Descriptor = new SpriteDescriptor() }; this.CloudHolderSprite = new YuriSprite() { DisplayBinding = this.Art_Canvas_Cloud, AnimationElement = this.Art_Canvas_Cloud, Descriptor = new SpriteDescriptor() }; this.CloudSpriteA = new YuriSprite() { DisplayBinding = this.Art_Image_Background_Cloud_1, AnimationElement = this.Art_Image_Background_Cloud_1, Descriptor = new SpriteDescriptor() }; this.CloudSpriteB = new YuriSprite() { DisplayBinding = this.Art_Image_Background_Cloud_2, AnimationElement = this.Art_Image_Background_Cloud_2, Descriptor = new SpriteDescriptor() }; this.MaskSprite = new YuriSprite() { DisplayBinding = this.Mask_Black, AnimationElement = this.Mask_Black, Descriptor = new SpriteDescriptor() }; this.WarpedPageSprite = new YuriSprite() { DisplayBinding = this.Grid_LoadUIWarp, AnimationElement = this.Grid_LoadUIWarp, Descriptor = new SpriteDescriptor() }; this.GalleryWarpSprite = new YuriSprite() { DisplayBinding = this.Canvas_Gallery, AnimationElement = this.Canvas_Gallery, Descriptor = new SpriteDescriptor() }; this.GalleryContentWarpSprite = new YuriSprite() { DisplayBinding = this.Canvas_Gallery_ContentWarp, AnimationElement = this.Canvas_Gallery_ContentWarp, Descriptor = new SpriteDescriptor() }; this.GalleryStaffSprite = new YuriSprite() { DisplayBinding = this.Image_Gallery_Staff, AnimationElement = this.Image_Gallery_Staff, Descriptor = new SpriteDescriptor() }; this.GalleryArtSprite = new YuriSprite() { DisplayBinding = this.Image_Art_Displayer, AnimationElement = this.Image_Art_Displayer, Descriptor = new SpriteDescriptor() }; }
public LHPage() { InitializeComponent(); this.Frame_SaveLoad.Content = new LHSaveLoadPage(this); this.Frame_Settings.Content = new LHSettingsPage(this); this.MainStageSprite = new YuriSprite() { DisplayBinding = ViewManager.mWnd.mainFrame, AnimationElement = ViewManager.mWnd.mainFrame, Descriptor = new SpriteDescriptor() }; this.PanelSprite = new YuriSprite() { DisplayBinding = this.Image_Panel, AnimationElement = this.Image_Panel, Descriptor = new SpriteDescriptor() }; this.WhitePanelSprite = new YuriSprite() { DisplayBinding = this.Image_WhiteSpan, AnimationElement = this.Image_WhiteSpan, Descriptor = new SpriteDescriptor() }; this.NameLogoSprite = new YuriSprite() { DisplayBinding = this.Image_NameLogo, AnimationElement = this.Image_NameLogo, Descriptor = new SpriteDescriptor() }; this.ButtonGroupSprite = new YuriSprite() { DisplayBinding = this.Canvas_RightButtonGroups, AnimationElement = this.Canvas_RightButtonGroups, Descriptor = new SpriteDescriptor() }; this.CommonBackButtonSprite = new YuriSprite() { DisplayBinding = this.Image_Button_Back, AnimationElement = this.Image_Button_Back, Descriptor = new SpriteDescriptor() }; this.EpisodeHintSprite = new YuriSprite() { DisplayBinding = this.Canvas_EpHinter, AnimationElement = this.Canvas_EpHinter, Descriptor = new SpriteDescriptor() }; this.SubTitleSprite = new YuriSprite() { DisplayBinding = this.Image_SubTitle, AnimationElement = this.Image_SubTitle, Descriptor = new SpriteDescriptor() }; this.BacklogStackSprite = new YuriSprite() { DisplayBinding = this.Scroll_BacklogBoxing, AnimationElement = this.Scroll_BacklogBoxing, Descriptor = new SpriteDescriptor() }; this.SaveLoadPageSprite = new YuriSprite() { DisplayBinding = this.Frame_SaveLoad, AnimationElement = this.Frame_SaveLoad, Descriptor = new SpriteDescriptor() }; this.SettingsPageSprite = new YuriSprite() { DisplayBinding = this.Frame_Settings, AnimationElement = this.Frame_Settings, Descriptor = new SpriteDescriptor() }; }
/// <summary> /// 从资源文件中获取图片资源并返回精灵对象 /// </summary> /// <param name="sourceName">资源名称</param> /// <param name="rtype">资源类型</param> /// <param name="cutRect">纹理切割矩</param> /// <returns>该资源的精灵</returns> private YuriSprite GetGraphicSprite(string sourceName, ResourceType rtype, Int32Rect?cutRect) { if (sourceName == String.Empty) { return(null); } YuriSprite sprite = new YuriSprite(); string DevURI, PackURI; // 处理路径 switch (rtype) { case ResourceType.Background: DevURI = GlobalConfigContext.DevURI_PA_BACKGROUND; PackURI = GlobalConfigContext.PackURI_PA_BACKGROUND; break; case ResourceType.Stand: DevURI = GlobalConfigContext.DevURI_PA_CHARASTAND; PackURI = GlobalConfigContext.PackURI_PA_CHARASTAND; break; case ResourceType.Pictures: DevURI = GlobalConfigContext.DevURI_PA_PICTURES; PackURI = GlobalConfigContext.PackURI_PA_PICTURES; break; default: return(null); } // 总是先查看是否有为封包的数据 if (this.resourceTable.ContainsKey(DevURI) && this.resourceTable[DevURI].ContainsKey(sourceName)) { // 检查缓冲 var ob = ResourceCachePool.Refer(rtype.ToString() + "->" + sourceName, ResourceCacheType.Eden); if (ob == null) { var sourceSlot = this.resourceTable[DevURI][sourceName]; ob = PackageUtils.GetObjectBytes(sourceSlot.BindingFile, sourceName, sourceSlot.Position, sourceSlot.Length); ResourceCachePool.Register(rtype.ToString() + "->" + sourceName, ob, ResourceCacheType.Eden); } MemoryStream ms = new MemoryStream(ob); sprite.Init(sourceName, rtype, ms, cutRect); } // 没有封包数据再搜索开发目录 else { // 检查缓冲 byte[] ob = ResourceCachePool.Refer(rtype.ToString() + "->" + sourceName, ResourceCacheType.Eden); if (ob == null) { string furi = IOUtils.JoinPath(GlobalConfigContext.DevURI_RT_PICTUREASSETS, DevURI, sourceName); if (File.Exists(IOUtils.ParseURItoURL(furi))) { Uri bg = new Uri(IOUtils.ParseURItoURL(furi), UriKind.RelativeOrAbsolute); ob = IOUtils.GetObjectBytes(bg); ResourceCachePool.Register(rtype.ToString() + "->" + sourceName, ob, ResourceCacheType.Eden); } else { MessageBox.Show("[错误] 资源文件不存在:" + sourceName); Director.GetInstance().GetMainRender().Shutdown(); return(null); } } MemoryStream ms = new MemoryStream(ob); sprite.Init(sourceName, rtype, ms, cutRect); } return(sprite); }
public void StoryBookForwardNextSteady() { // 如果在看背景就先切回故事模式 if (this.ShowingBackground) { DecorateSprite.Descriptor.ToOpacity = 1; DialogueSprite.Descriptor.ToOpacity = 1; SpriteAnimation.OpacityToAnimation(DecorateSprite, TimeSpan.FromMilliseconds(100), 1); SpriteAnimation.OpacityToAnimation(DialogueSprite, TimeSpan.FromMilliseconds(100), 1); //SpriteAnimation.BlurMutexAnimation(MainFrameSprite, TimeSpan.FromMilliseconds(100), 0, 30); this.ShowingBackground = false; return; } // 选择项就忽略 if (this.IsStoryBranching) { return; } // 打字动画中就跳过 if (MsgStoryboard != null) { lock (MsgStoryboard) { if (MsgStoryboard != null) { MsgStoryboard.SkipToFill(); return; } } } // 瞄下队列头,是否是空队列,是的话说明要换页 if (CurrentMessageQueue.Count == 0) { // 全部都结束啦 if (PendingMessageQueue.Count == 0) { this.PrepareClose(); return; } this.StackPanel_DialogList.Children.Clear(); CurrentMessageQueue = PendingMessageQueue.Dequeue(); if (IntentBacklog != null) { BacklogStack.Push(IntentBacklog); } IntentBacklog = ForkableState.DeepCopyBySerialization(CurrentMessageQueue); } // 取下一条要显示的内容 var currentRun = CurrentMessageQueue.Dequeue(); // 选择支:SELECT@分支1@分支2@... if (currentRun.StartsWith("SELECT@")) { var selectionItem = currentRun.Split('@'); var insertBlock = new TextBlock { Opacity = 1, Margin = new Thickness(10, 16, 10, 50), TextWrapping = TextWrapping.Wrap, Foreground = new SolidColorBrush(Colors.White), FontSize = 30, FontFamily = new FontFamily(new Uri("pack://application:,,,/"), "Resources/#Source Han Serif CN SemiBold"), Text = selectionItem[1] }; this.StackPanel_DialogList.Children.Add(insertBlock); for (var i = 2; i < selectionItem.Length; i++) { var selectionLable = new Label { Background = new SolidColorBrush(Color.FromArgb(70, 0, 0, 0)), Margin = new Thickness(10, 80, 10, 0), Foreground = new SolidColorBrush(Colors.White), Height = 60, FontSize = 30, FontFamily = new FontFamily(new Uri("pack://application:,,,/"), "Resources/#Source Han Serif CN SemiBold"), HorizontalContentAlignment = HorizontalAlignment.Center, VerticalContentAlignment = VerticalAlignment.Center, Content = selectionItem[i], Tag = i.ToString() }; selectionLable.MouseEnter += this.Selection_OnMouseEnter; selectionLable.MouseLeave += this.Selection_OnMouseLeave; selectionLable.MouseLeftButtonUp += this.Selection_OnMouseLeftButtonUp; this.StackPanel_DialogList.Children.Add(selectionLable); } this.IsStoryBranching = true; } // 背景:BG@变换时间@图片资源名 else if (currentRun.StartsWith("BG@")) { var selectionItem = currentRun.Split('@'); var bgTransformTime = Convert.ToInt32(selectionItem[1]); var bgResourceName = selectionItem[2]; if (bgResourceName != String.Empty) { // backlay if (this.Image_StoryBook_BgTransitor.Source == null) { this.Grid_StoryBook.Background = new SolidColorBrush(Colors.Transparent); } else { this.Grid_StoryBook.Background = new ImageBrush(this.Image_StoryBook_BgTransitor.Source); } BgTransitorSprite.Descriptor.Opacity = 0; BgTransitorSprite.DisplayBinding.Opacity = 0; this.Image_StoryBook_BgTransitor.Source = resMana.GetPicture(bgResourceName, ResourceManager.FullImageRect).SpriteBitmapImage; BgTransitorSprite.Descriptor.ToOpacity = 1; SpriteAnimation.OpacityToAnimation(BgTransitorSprite, TimeSpan.FromMilliseconds(bgTransformTime), 1); } else { this.Grid_StoryBook.Background = new SolidColorBrush(Colors.Transparent); BgTransitorSprite.Descriptor.ToOpacity = 0; SpriteAnimation.OpacityToAnimation(BgTransitorSprite, TimeSpan.FromMilliseconds(bgTransformTime), 0); } this.StoryBookForwardNextSteady(); } // 声效:SE@音量@SE资源名 else if (currentRun.StartsWith("SE@")) { var selectionItem = currentRun.Split('@'); var volume = Convert.ToDouble(selectionItem[1]); Musician.GetInstance().PlaySE(resMana.GetSE(selectionItem[2]), (float)volume); this.StoryBookForwardNextSteady(); } else { var dialogItem = currentRun.Split('@'); var fgColor = Colors.White; if (dialogItem.Length > 1) { if (CharacterColorDict.ContainsKey(dialogItem[0])) { fgColor = CharacterColorDict[dialogItem[0]]; } currentRun = dialogItem[1]; } var insertBlock = new TextBlock { Opacity = 1, Margin = new Thickness(10, 16, 10, 10), TextWrapping = TextWrapping.Wrap, Foreground = new SolidColorBrush(fgColor), FontSize = 30, FontFamily = new FontFamily(new Uri("pack://application:,,,/"), "Resources/#Source Han Serif CN SemiBold"), Text = String.Empty }; // 把前一条内容透明化 if (this.StackPanel_DialogList.Children.Count > 0) { var lastMsgBlock = this.StackPanel_DialogList.Children[this.StackPanel_DialogList.Children.Count - 1] as TextBlock; var OpacingDescriptor = new YuriSprite() { DisplayBinding = lastMsgBlock, AnimationElement = lastMsgBlock, Descriptor = new SpriteDescriptor() }; OpacingDescriptor.Descriptor.ToOpacity = 0.4; SpriteAnimation.OpacityToAnimation(OpacingDescriptor, TimeSpan.FromMilliseconds(500), 0.4); } this.StackPanel_DialogList.Children.Add(insertBlock); this.TypeWriter(String.Empty, currentRun, insertBlock, GlobalConfigContext.GAME_MSG_TYPING_DELAY); } }
private void transitTab(string fromTab, string toTab) { YuriSprite fromSprite = null; YuriSprite toSprite = null; switch (fromTab) { case "Graphic": fromSprite = this.GrahpicTabSprite; break; case "Voice": fromSprite = this.VoiceTabSprite; break; case "Keyboard": fromSprite = this.KeyboardTabSprite; break; case "Others": fromSprite = this.OthersTabSprite; break; } switch (toTab) { case "Graphic": toSprite = this.GrahpicTabSprite; break; case "Voice": toSprite = this.VoiceTabSprite; break; case "Keyboard": toSprite = this.KeyboardTabSprite; break; case "Others": toSprite = this.OthersTabSprite; break; } this.Canvas_SettingsRoot.IsHitTestVisible = false; toSprite.DisplayBinding.Visibility = Visibility.Visible; toSprite.Descriptor.ToX = 1920 / 2 + 100; toSprite.Descriptor.ToOpacity = 0; SpriteAnimation.XMoveToAnimation(toSprite, new Duration(TimeSpan.FromMilliseconds(0)), toSprite.Descriptor.ToX, 0, null); SpriteAnimation.OpacityToAnimation(toSprite, new Duration(TimeSpan.FromMilliseconds(0)), 0, 0, null); Storyboard sb = new Storyboard(); fromSprite.Descriptor.ToX = 1920 / 2 - 100; fromSprite.Descriptor.ToOpacity = 0; toSprite.Descriptor.ToX = 1920 / 2; toSprite.Descriptor.ToOpacity = 1; SpriteAnimation.XMoveToAnimation(fromSprite, new Duration(TimeSpan.FromMilliseconds(200)), fromSprite.Descriptor.ToX, -0.6, null, providedStory: sb); SpriteAnimation.XMoveToAnimation(toSprite, new Duration(TimeSpan.FromMilliseconds(200)), toSprite.Descriptor.ToX, -0.6, null, providedStory: sb); SpriteAnimation.OpacityToAnimation(fromSprite, new Duration(TimeSpan.FromMilliseconds(200)), 0, 0, null, providedStory: sb); SpriteAnimation.OpacityToAnimation(toSprite, new Duration(TimeSpan.FromMilliseconds(200)), 1, 0, null, providedStory: sb); sb.Completed += (_, __) => { this.Canvas_SettingsRoot.IsHitTestVisible = true; fromSprite.DisplayBinding.Visibility = Visibility.Hidden; }; sb.Begin(); }