public BackgroundInstanceEditor(BackgroundInstance item) { InitializeComponent(); this.item = item; styleManager.ManagerStyle = UserSettings.applicationStyle; xInput.Value = item.X; yInput.Value = item.Y; if (item.Z == -1) { zInput.Enabled = false; } else { zInput.Value = item.Z; } pathLabel.Text = Editor.CreateItemDescription(item, "\r\n"); typeBox.Items.AddRange((object[])Tables.BackgroundTypeNames.Cast <object>()); typeBox.SelectedIndex = (int)item.type; alphaBox.Value = item.a; front.Checked = item.front; rxBox.Value = item.rx; ryBox.Value = item.ry; cxBox.Value = item.cx; cyBox.Value = item.cy; }
public BackgroundInstanceEditor(BackgroundInstance item) { InitializeComponent(); this.item = item; xInput.Value = item.BaseX; yInput.Value = item.BaseY; if (item.Z == -1) zInput.Enabled = false; else zInput.Value = item.Z; pathLabel.Text = HaCreatorStateManager.CreateItemDescription(item, "\r\n"); typeBox.Items.AddRange((object[])Tables.BackgroundTypeNames.Cast<object>()); typeBox.SelectedIndex = (int)item.type; alphaBox.Value = item.a; front.Checked = item.front; rxBox.Value = item.rx; ryBox.Value = item.ry; cxBox.Value = item.cx; cyBox.Value = item.cy; }
/// <summary> /// Background /// </summary> /// <param name="texturePool"></param> /// <param name="source"></param> /// <param name="bgInstance"></param> /// <param name="device"></param> /// <param name="usedProps"></param> /// <param name="flip"></param> /// <returns></returns> public static BackgroundItem CreateBackgroundFromProperty(TexturePool texturePool, WzImageProperty source, BackgroundInstance bgInstance, GraphicsDevice device, ref List <WzObject> usedProps, bool flip) { List <IDXObject> frames = LoadFrames(texturePool, source, bgInstance.BaseX, bgInstance.BaseY, device, ref usedProps, bgInstance.SpineAni); if (frames.Count == 1) { return(new BackgroundItem(bgInstance.cx, bgInstance.cy, bgInstance.rx, bgInstance.ry, bgInstance.type, bgInstance.a, bgInstance.front, frames[0], flip, bgInstance.screenMode)); } return(new BackgroundItem(bgInstance.cx, bgInstance.cy, bgInstance.rx, bgInstance.ry, bgInstance.type, bgInstance.a, bgInstance.front, frames, flip, bgInstance.screenMode)); }
public BackgroundInstanceEditor(BackgroundInstance item) { InitializeComponent(); this.item = item; xInput.Value = item.BaseX; yInput.Value = item.BaseY; if (item.Z == -1) { zInput.Enabled = false; } else { zInput.Value = item.Z; } pathLabel.Text = HaCreatorStateManager.CreateItemDescription(item); typeBox.Items.AddRange((object[])Tables.BackgroundTypeNames.Cast <object>()); typeBox.SelectedIndex = (int)item.type; alphaBox.Value = item.a; front.Checked = item.front; rxBox.Value = item.rx; ryBox.Value = item.ry; cxBox.Value = item.cx; cyBox.Value = item.cy; // Resolutions foreach (RenderResolution val in Enum.GetValues(typeof(RenderResolution))) { ComboBoxItem comboBoxItem = new ComboBoxItem(); comboBoxItem.Tag = val; comboBoxItem.Content = val.ToString().Replace("Res_", "").Replace("_", " ").Replace("PercScaled", "% scale"); comboBox_screenMode.Items.Add(comboBoxItem); } comboBox_screenMode.DisplayMember = "Content"; int i = 0; foreach (ComboBoxItem citem in comboBox_screenMode.Items) { if ((int)((RenderResolution)citem.Tag) == item.screenMode) { comboBox_screenMode.SelectedIndex = i; break; } i++; } if (item.screenMode < 0) { comboBox_screenMode.SelectedIndex = 0; } // Spine BackgroundInfo baseInfo = (BackgroundInfo)item.BaseInfo; if (baseInfo.WzSpineAnimationItem == null) { groupBox_spine.Enabled = false; // disable editing } else { groupBox_spine.Enabled = true; // editing foreach (Animation ani in baseInfo.WzSpineAnimationItem.SkeletonData.Animations) { ComboBoxItem comboBoxItem = new ComboBoxItem(); comboBoxItem.Tag = ani; comboBoxItem.Content = ani.Name; comboBox_spineAnimation.Items.Add(comboBoxItem); } comboBox_spineAnimation.DisplayMember = "Content"; int i_animation = 0; foreach (ComboBoxItem citem in comboBox_spineAnimation.Items) { if (((Animation)citem.Tag).Name == item.SpineAni) { comboBox_spineAnimation.SelectedIndex = i_animation; break; } i_animation++; } // spineRandomStart checkbox checkBox_spineRandomStart.Checked = item.SpineRandomStart; } }
/// <summary> /// /// </summary> /// <param name="item"></param> /// <param name="oldPos"></param> /// <param name="newPos"></param> /// <returns></returns> public static UndoRedoAction BackgroundMoved(BackgroundInstance item, Point oldPos, Point newPos) { return(new UndoRedoAction(item, UndoRedoType.BackgroundMoved, oldPos, newPos)); }
public void InterpolateBetween(VariableState firstState, VariableState secondState, float interpolationValue) { #if DEBUG if (float.IsNaN(interpolationValue)) { throw new System.Exception("interpolationValue cannot be NaN"); } #endif bool setBackgroundInstanceCurrentColorCategoryStateFirstValue = false; bool setBackgroundInstanceCurrentColorCategoryStateSecondValue = false; Pirates.GumRuntimes.DefaultForms.ColoredFrameRuntime.ColorCategory BackgroundInstanceCurrentColorCategoryStateFirstValue = Pirates.GumRuntimes.DefaultForms.ColoredFrameRuntime.ColorCategory.Gray; Pirates.GumRuntimes.DefaultForms.ColoredFrameRuntime.ColorCategory BackgroundInstanceCurrentColorCategoryStateSecondValue = Pirates.GumRuntimes.DefaultForms.ColoredFrameRuntime.ColorCategory.Gray; bool setBackgroundInstanceHeightFirstValue = false; bool setBackgroundInstanceHeightSecondValue = false; float BackgroundInstanceHeightFirstValue = 0; float BackgroundInstanceHeightSecondValue = 0; bool setBackgroundInstanceWidthFirstValue = false; bool setBackgroundInstanceWidthSecondValue = false; float BackgroundInstanceWidthFirstValue = 0; float BackgroundInstanceWidthSecondValue = 0; bool setBackgroundInstanceXFirstValue = false; bool setBackgroundInstanceXSecondValue = false; float BackgroundInstanceXFirstValue = 0; float BackgroundInstanceXSecondValue = 0; bool setBackgroundInstanceYFirstValue = false; bool setBackgroundInstanceYSecondValue = false; float BackgroundInstanceYFirstValue = 0; float BackgroundInstanceYSecondValue = 0; switch (firstState) { case VariableState.Default: setBackgroundInstanceCurrentColorCategoryStateFirstValue = true; BackgroundInstanceCurrentColorCategoryStateFirstValue = Pirates.GumRuntimes.DefaultForms.ColoredFrameRuntime.ColorCategory.Blue; setBackgroundInstanceHeightFirstValue = true; BackgroundInstanceHeightFirstValue = 0f; if (interpolationValue < 1) { this.BackgroundInstance.HeightUnits = Gum.DataTypes.DimensionUnitType.RelativeToContainer; } setBackgroundInstanceWidthFirstValue = true; BackgroundInstanceWidthFirstValue = 0f; if (interpolationValue < 1) { this.BackgroundInstance.WidthUnits = Gum.DataTypes.DimensionUnitType.RelativeToContainer; } setBackgroundInstanceXFirstValue = true; BackgroundInstanceXFirstValue = 0f; if (interpolationValue < 1) { this.BackgroundInstance.XOrigin = RenderingLibrary.Graphics.HorizontalAlignment.Center; } if (interpolationValue < 1) { this.BackgroundInstance.XUnits = Gum.Converters.GeneralUnitType.PixelsFromMiddle; } setBackgroundInstanceYFirstValue = true; BackgroundInstanceYFirstValue = 0f; if (interpolationValue < 1) { this.BackgroundInstance.YOrigin = RenderingLibrary.Graphics.VerticalAlignment.Center; } if (interpolationValue < 1) { this.BackgroundInstance.YUnits = Gum.Converters.GeneralUnitType.PixelsFromMiddle; } break; } switch (secondState) { case VariableState.Default: setBackgroundInstanceCurrentColorCategoryStateSecondValue = true; BackgroundInstanceCurrentColorCategoryStateSecondValue = Pirates.GumRuntimes.DefaultForms.ColoredFrameRuntime.ColorCategory.Blue; setBackgroundInstanceHeightSecondValue = true; BackgroundInstanceHeightSecondValue = 0f; if (interpolationValue >= 1) { this.BackgroundInstance.HeightUnits = Gum.DataTypes.DimensionUnitType.RelativeToContainer; } setBackgroundInstanceWidthSecondValue = true; BackgroundInstanceWidthSecondValue = 0f; if (interpolationValue >= 1) { this.BackgroundInstance.WidthUnits = Gum.DataTypes.DimensionUnitType.RelativeToContainer; } setBackgroundInstanceXSecondValue = true; BackgroundInstanceXSecondValue = 0f; if (interpolationValue >= 1) { this.BackgroundInstance.XOrigin = RenderingLibrary.Graphics.HorizontalAlignment.Center; } if (interpolationValue >= 1) { this.BackgroundInstance.XUnits = Gum.Converters.GeneralUnitType.PixelsFromMiddle; } setBackgroundInstanceYSecondValue = true; BackgroundInstanceYSecondValue = 0f; if (interpolationValue >= 1) { this.BackgroundInstance.YOrigin = RenderingLibrary.Graphics.VerticalAlignment.Center; } if (interpolationValue >= 1) { this.BackgroundInstance.YUnits = Gum.Converters.GeneralUnitType.PixelsFromMiddle; } break; } if (setBackgroundInstanceCurrentColorCategoryStateFirstValue && setBackgroundInstanceCurrentColorCategoryStateSecondValue) { BackgroundInstance.InterpolateBetween(BackgroundInstanceCurrentColorCategoryStateFirstValue, BackgroundInstanceCurrentColorCategoryStateSecondValue, interpolationValue); } if (setBackgroundInstanceHeightFirstValue && setBackgroundInstanceHeightSecondValue) { BackgroundInstance.Height = BackgroundInstanceHeightFirstValue * (1 - interpolationValue) + BackgroundInstanceHeightSecondValue * interpolationValue; } if (setBackgroundInstanceWidthFirstValue && setBackgroundInstanceWidthSecondValue) { BackgroundInstance.Width = BackgroundInstanceWidthFirstValue * (1 - interpolationValue) + BackgroundInstanceWidthSecondValue * interpolationValue; } if (setBackgroundInstanceXFirstValue && setBackgroundInstanceXSecondValue) { BackgroundInstance.X = BackgroundInstanceXFirstValue * (1 - interpolationValue) + BackgroundInstanceXSecondValue * interpolationValue; } if (setBackgroundInstanceYFirstValue && setBackgroundInstanceYSecondValue) { BackgroundInstance.Y = BackgroundInstanceYFirstValue * (1 - interpolationValue) + BackgroundInstanceYSecondValue * interpolationValue; } if (interpolationValue < 1) { mCurrentVariableState = firstState; } else { mCurrentVariableState = secondState; } }
public override void StopAnimations() { base.StopAnimations(); BackgroundInstance.StopAnimations(); }
/// <summary> /// Background /// </summary> /// <param name="source"></param> /// <param name="bgInstance"></param> /// <param name="mapCenterX"></param> /// <param name="mapCenterY"></param> /// <param name="device"></param> /// <param name="usedProps"></param> /// <param name="flip"></param> /// <returns></returns> public static BackgroundItem CreateBackgroundFromProperty(WzImageProperty source, BackgroundInstance bgInstance, int mapCenterX, int mapCenterY, GraphicsDevice device, ref List <WzObject> usedProps, bool flip) { source = WzInfoTools.GetRealProperty(source); if (source is WzSubProperty && ((WzSubProperty)source).WzProperties.Count == 1) { source = ((WzSubProperty)source).WzProperties[0]; } if (source is WzCanvasProperty) //one-frame { bool bLoadedSpine = LoadSpineMapObjectItem(source, source, device, bgInstance.SpineAni); if (!bLoadedSpine) { if (source.MSTag == null) { source.MSTag = BoardItem.TextureFromBitmap(device, ((WzCanvasProperty)source).GetLinkedWzCanvasBitmap()); } } usedProps.Add(source); if (source.MSTagSpine != null) { WzSpineObject spineObject = (WzSpineObject)source.MSTagSpine; System.Drawing.PointF origin = ((WzCanvasProperty)source).GetCanvasOriginPosition(); DXSpineObject dxobj = new DXSpineObject(spineObject, bgInstance.BaseX - (int)origin.X /* - mapCenterX*/, bgInstance.BaseY - (int)origin.Y /* - mapCenterY*/, origin); return(new BackgroundItem(bgInstance.cx, bgInstance.cy, bgInstance.rx, bgInstance.ry, bgInstance.type, bgInstance.a, bgInstance.front, dxobj, flip, bgInstance.screenMode)); } else if (source.MSTag != null) { Texture2D texture = (Texture2D)source.MSTag; System.Drawing.PointF origin = ((WzCanvasProperty)source).GetCanvasOriginPosition(); DXObject dxobj = new DXObject(bgInstance.BaseX - (int)origin.X /* - mapCenterX*/, bgInstance.BaseY - (int)origin.Y /* - mapCenterY*/, texture); return(new BackgroundItem(bgInstance.cx, bgInstance.cy, bgInstance.rx, bgInstance.ry, bgInstance.type, bgInstance.a, bgInstance.front, dxobj, flip, bgInstance.screenMode)); } else // default fallback if all things fail { Texture2D texture = BoardItem.TextureFromBitmap(device, Properties.Resources.placeholder); System.Drawing.PointF origin = ((WzCanvasProperty)source).GetCanvasOriginPosition(); DXObject dxobj = new DXObject(bgInstance.BaseX - (int)origin.X /* - mapCenterX*/, bgInstance.BaseY - (int)origin.Y /* - mapCenterY*/, texture); return(new BackgroundItem(bgInstance.cx, bgInstance.cy, bgInstance.rx, bgInstance.ry, bgInstance.type, bgInstance.a, bgInstance.front, dxobj, flip, bgInstance.screenMode)); } } else if (source is WzSubProperty) // animated { WzCanvasProperty frameProp; int i = 0; List <IDXObject> frames = new List <IDXObject>(); while ((frameProp = (WzCanvasProperty)WzInfoTools.GetRealProperty(source[(i++).ToString()])) != null) { int delay = (int)InfoTool.GetOptionalInt(frameProp["delay"], 100); bool bLoadedSpine = LoadSpineMapObjectItem((WzImageProperty)frameProp.Parent, frameProp, device, bgInstance.SpineAni); if (!bLoadedSpine) { if (frameProp.MSTag == null) { frameProp.MSTag = BoardItem.TextureFromBitmap(device, frameProp.GetLinkedWzCanvasBitmap()); } } usedProps.Add(source); if (frameProp.MSTagSpine != null) { WzSpineObject spineObject = (WzSpineObject)frameProp.MSTagSpine; System.Drawing.PointF origin = frameProp.GetCanvasOriginPosition(); DXSpineObject dxobj = new DXSpineObject(spineObject, bgInstance.BaseX - (int)origin.X /* - mapCenterX*/, bgInstance.BaseY - (int)origin.Y /* - mapCenterY*/, origin, delay); frames.Add(dxobj); } else if (frameProp.MSTag != null) { Texture2D texture = (Texture2D)frameProp.MSTag; System.Drawing.PointF origin = frameProp.GetCanvasOriginPosition(); DXObject dxObj = new DXObject(bgInstance.BaseX - (int)origin.X /* - mapCenterX*/, bgInstance.BaseY - (int)origin.Y /* - mapCenterY*/, texture, delay); frames.Add(dxObj); } else // default fallback if all things fail { Texture2D texture = BoardItem.TextureFromBitmap(device, Properties.Resources.placeholder); System.Drawing.PointF origin = frameProp.GetCanvasOriginPosition(); DXObject dxObj = new DXObject(bgInstance.BaseX - (int)origin.X /* - mapCenterX*/, bgInstance.BaseY - (int)origin.Y /* - mapCenterY*/, texture, delay); frames.Add(dxObj); } } return(new BackgroundItem(bgInstance.cx, bgInstance.cy, bgInstance.rx, bgInstance.ry, bgInstance.type, bgInstance.a, bgInstance.front, frames, flip, bgInstance.screenMode)); } else { throw new Exception("Unsupported property type in map simulator"); } }
public BackgroundInstanceEditor(BackgroundInstance item) { InitializeComponent(); this.item = item; xInput.Value = item.BaseX; yInput.Value = item.BaseY; if (item.Z == -1) { zInput.Enabled = false; } else { zInput.Value = item.Z; } pathLabel.Text = HaCreatorStateManager.CreateItemDescription(item); typeBox.Items.AddRange((object[])Tables.BackgroundTypeNames.Cast <object>()); typeBox.SelectedIndex = (int)item.type; alphaBox.Value = item.a; front.Checked = item.front; rxBox.Value = item.rx; ryBox.Value = item.ry; cxBox.Value = item.cx; cyBox.Value = item.cy; // Resolutions foreach (MapRenderResolution val in Enum.GetValues(typeof(MapRenderResolution))) { ComboBoxItem comboBoxItem = new ComboBoxItem(); comboBoxItem.Tag = val; comboBoxItem.Content = val.ToString().Replace("Res_", "").Replace("_", " ").Replace("PercScaled", "% scale"); comboBox_screenMode.Items.Add(comboBoxItem); } comboBox_screenMode.DisplayMember = "Content"; int i = 0; foreach (ComboBoxItem citem in comboBox_screenMode.Items) { if ((int)((MapRenderResolution)citem.Tag) == item.screenMode) { comboBox_screenMode.SelectedIndex = i; break; } i++; } if (item.screenMode < 0) { comboBox_screenMode.SelectedIndex = 0; } // Spine if (item.SpineAni != null) { checkBox_spineAni.Checked = true; textBox_spineAni.Text = item.SpineAni; } checkBox_spineRandomStart.Checked = item.SpineRandomStart; }