Пример #1
0
 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;
 }
Пример #3
0
        /// <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));
        }
Пример #4
0
        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;
        }