/// <summary> /// Behandelt rezizing für bottom right thumb /// </summary> /// <param name="sender">Sender</param> /// <param name="args">EventArgs</param> public void DragDelta_BottomRight(object sender, DragDeltaEventArgs args) { SpriteViewModel NodeReference = this.DataContext as SpriteViewModel; Thumb hitThumb = sender as Thumb; if (NodeReference == null || hitThumb == null) { return; } //TODO: Optional Grid mode, maybe when ctrl is pressed //double vchange = ShapesHelper.SnapToGrid(args.VerticalChange, ShapesHelper.GridDistance); //double hchange = ShapesHelper.SnapToGrid(args.HorizontalChange, ShapesHelper.GridDistance); double vchange = args.VerticalChange; double hchange = args.HorizontalChange; // Ensure that the Width and Height are properly initialized after the resize. // Change the size by the amount the user drags the mouse, as long as it's larger // than the width or height of an adorner, respectively. NodeReference.Width = Math.Max(NodeReference.Width + hchange, hitThumb.DesiredSize.Width); NodeReference.Height = Math.Max(vchange + NodeReference.Height, hitThumb.DesiredSize.Height); if (NodeReference.Width < minWidth) { NodeReference.Width = minWidth; } if (NodeReference.Height < minWidth) { NodeReference.Height = minWidth; } }
/// <summary> /// Behandelt rezizing für top left thumb /// </summary> /// <param name="sender">Sender</param> /// <param name="args">EventArgs</param> public void DragDelta_TopLeft(object sender, DragDeltaEventArgs args) { SpriteViewModel NodeReference = this.DataContext as SpriteViewModel; Thumb hitThumb = sender as Thumb; if (NodeReference == null || hitThumb == null) { return; } // Ensure that the Width and Height are properly initialized after the resize. ////EnforceSize(ditem); //TODO: Optional Grid mode, maybe when ctrl is pressed //double vchange = ShapesHelper.SnapToGrid(args.VerticalChange, ShapesHelper.GridDistance); //double hchange = ShapesHelper.SnapToGrid(args.HorizontalChange, ShapesHelper.GridDistance); double vchange = args.VerticalChange; double hchange = args.HorizontalChange; // Change the size by the amount the user drags the mouse, as long as it's larger // than the width or height of an adorner, respectively. double width_old = NodeReference.Width; double width_new = Math.Max(NodeReference.Width - hchange, hitThumb.DesiredSize.Width); double left_old = NodeReference.PosX; if (width_new < minWidth) { width_new = minWidth; } double newPosX = left_old - (width_new - width_old); if (newPosX > 0) { NodeReference.Width = width_new; NodeReference.PosX = newPosX; } double height_old = NodeReference.Height; double height_new = Math.Max(NodeReference.Height - vchange, hitThumb.DesiredSize.Height); double top_old = NodeReference.PosY; if (height_new < minWidth) { height_new = minWidth; } double newPosY = top_old - (height_new - height_old); if (newPosY > 0) { NodeReference.Height = height_new; NodeReference.PosY = newPosY; } }
private void AutoPositionSprites(ObservableCollection <SpriteViewModel> _sprites) { double Height = Sprite_Preview.ActualHeight; double Width = Sprite_Preview.ActualWidth; double ItemsSpace = Width / (_sprites.Count + 1); for (int i = 1; i <= _sprites.Count; ++i) { SpriteViewModel currentSprite = _sprites[i - 1]; currentSprite.PosY = (Height / 2) - (currentSprite.Height / 2); currentSprite.PosX = (ItemsSpace * i) - (currentSprite.Width / 2); } }
/// <summary> /// Behandelt rezizing für bottom left thumb /// </summary> /// <param name="sender">Sender</param> /// <param name="args">EventArgs</param> public void DragDelta_BottomLeft(object sender, DragDeltaEventArgs args) { SpriteViewModel SpriteReference = this.DataContext as SpriteViewModel; Thumb hitThumb = sender as Thumb; if (SpriteReference == null || hitThumb == null) { return; } //TODO: Optional Grid mode, maybe when ctrl is pressed //double vchange = ShapesHelper.SnapToGrid(args.VerticalChange, ShapesHelper.GridDistance); //double hchange = ShapesHelper.SnapToGrid(args.HorizontalChange, ShapesHelper.GridDistance); double vchange = args.VerticalChange; double hchange = args.HorizontalChange; // Change the size by the amount the user drags the mouse, as long as it's larger // than the width or height of an adorner, respectively. double width_old = SpriteReference.Width; double width_new = Math.Max(SpriteReference.Width - hchange, hitThumb.DesiredSize.Width); double left_old = SpriteReference.PosX; if (width_new < minWidth) { width_new = minWidth; } double newPosY = left_old - (width_new - width_old); double newHeight = Math.Max(vchange + SpriteReference.Height, hitThumb.DesiredSize.Height); if (newHeight > minWidth) { SpriteReference.Height = newHeight; } if (newPosY > 0) { SpriteReference.Width = width_new; SpriteReference.PosX = newPosY; } }
public void ExportStory(IndentedTextWriter _writer, Project _Project, SpriteExporter _spriteExporter) { _writer.Indent = 0; //Panels for (int i = 0; i < _Project.Panels.Count; ++i) { //-Panel Panel currentPanel = _Project.Panels[i]; _writer.WriteLine("Panel {"); _writer.WriteLine(); ++_writer.Indent; //Name _writer.WriteLine($"Name: \"{currentPanel.PanelName}\";"); _writer.WriteLine(); //BG _writer.WriteLine($"BGIndex: {_spriteExporter.GetSpriteIndex(currentPanel.BackgroundImage)};"); _writer.WriteLine(); //Condition if (currentPanel.Condition != null) { _writer.WriteLine("Condition {"); _writer.WriteLine(); ++_writer.Indent; //DataValues for (int j = 0; j < currentPanel.Condition.DataValues.Count; ++j) { //-DataValue DataValue currentDataValue = currentPanel.Condition.DataValues[j]; _writer.WriteLine("DataValue {"); _writer.WriteLine(); ++_writer.Indent; //Name _writer.WriteLine($"Name: \"{currentDataValue.Name}\";"); //Type _writer.WriteLine($"Type: \"{currentDataValue.ValueType}\";"); //Value _writer.WriteLine($"Value: \"{currentDataValue.Value}\";"); //Action //_writer.WriteLine($"Action: \"{currentDataValue.Action}\";"); --_writer.Indent; _writer.WriteLine("}"); } //Alternative _writer.WriteLine("Alternative {"); ++_writer.Indent; //Name _writer.WriteLine($"Name: \"{currentPanel.Condition.AlternativePanelKey}\";"); --_writer.Indent; _writer.WriteLine("}"); --_writer.Indent; _writer.WriteLine("}"); } //Condition end _writer.WriteLine("Sprites {"); _writer.WriteLine(); ++_writer.Indent; //Sprites if (currentPanel.SpriteImages != null) { foreach (KeyValuePair <Guid, SpriteImage> pair in currentPanel.SpriteImages) { _writer.WriteLine($"Sprite: {_spriteExporter.GetSpriteIndex(pair.Value)};"); } } --_writer.Indent; _writer.WriteLine("}"); _writer.WriteLine(); //EntryBranch Name _writer.WriteLine($"EntryBranch: \"{currentPanel.EntryBranchKey}\";"); _writer.WriteLine(); _writer.WriteLine("Branches {"); _writer.WriteLine(); ++_writer.Indent; //Branches for (int j = 0; j < currentPanel.Branches.Count; ++j) { //-Branch Branch currentBranch = currentPanel.Branches[j]; _writer.WriteLine("Branch {"); ++_writer.Indent; //Name _writer.WriteLine($"Name: \"{currentBranch.Name}\";"); //Texts for (int k = 0; k < currentBranch.ShownItems.Count; ++k) { //-Text DialogLine currentText = (DialogLine)currentBranch.ShownItems[k]; //Character Name //Said text _writer.Write($"Text: \"{currentText.CharacterName}\", \"{currentText.TextShown}\""); if (currentText.Sprites.Count > 0) { for (int l = 0; l < currentText.Sprites.Count; ++l) { SpriteViewModel currentSprite = currentText.Sprites[l]; //SpritePosition if (currentSprite.IsAutoPositioned) { //SpriteIndex _writer.Write($", {_spriteExporter.GetSpriteIndex(currentSprite.SpriteImage)}"); } else { //SpriteIndex, XPos, YPos _writer.Write($", {_spriteExporter.GetSpriteIndex(currentSprite.SpriteImage)}({(int)currentSprite.PosX}, {(int)currentSprite.PosX})"); } } _writer.WriteLine(";"); } else { _writer.WriteLine(";"); } } //Texts loop end //Continue _writer.WriteLine(); _writer.WriteLine("Continue {"); ++_writer.Indent; //ContinueType _writer.WriteLine($"Type: {currentBranch.Continue.Type};"); if (currentBranch.Continue.Type == Models.Enums.ContinueTypeEnum.Split) { //Split _writer.WriteLine("Split {"); ++_writer.Indent; //Options for (int l = 0; l < currentBranch.Continue.Split.Options.Count; ++l) { Option currentOption = currentBranch.Continue.Split.Options[l]; //-Option _writer.WriteLine("Option {"); ++_writer.Indent; //Name _writer.WriteLine($"Name: {currentOption.Name};"); //Text _writer.WriteLine($"Text: \"{currentOption.ShownText}\";"); //ButtonSprite _writer.WriteLine($"Sprite: {_spriteExporter.GetButtonSpriteIndex(currentOption.ButtonSprite)};"); //Continue _writer.WriteLine("Continue {"); ++_writer.Indent; //Type _writer.WriteLine($"Type: {currentOption.Continue.Type};"); //Key _writer.WriteLine($"Name: \"{currentOption.Continue.ContinueKey}\";"); --_writer.Indent; _writer.WriteLine("}"); //Continue Closing Bracket --_writer.Indent; _writer.WriteLine("}"); //Option Closing Bracket } --_writer.Indent; _writer.WriteLine("}"); } else { //Continue Key _writer.WriteLine($"Name: \"{currentBranch.Continue.ContinueKey}\";"); } --_writer.Indent; _writer.WriteLine("}"); //Continue closing Bracket --_writer.Indent; _writer.WriteLine("}"); //Current Branch closing Bracket } //Branches loop end --_writer.Indent; _writer.WriteLine("}"); //Branch Collection closiung Braces _writer.WriteLine("Animation_Placeholder {"); ++_writer.Indent; --_writer.Indent; _writer.WriteLine("}"); //AnimationPlaceholder closing Braces --_writer.Indent; _writer.WriteLine("}"); //currentPanel closing Braces } }
public SpriteListItemViewModel(Sprite sprite) { _sprite = sprite != null ? new SpriteViewModel(sprite) : null; }