protected internal static void SelectAnimationClip( string label, dfSpriteAnimation animation )
    {
        var savedColor = GUI.color;
        var showDialog = false;

        try
        {

            var clip = animation.Clip;
            if( clip == null )
                GUI.color = Color.red;

            dfPrefabSelectionDialog.SelectionCallback selectionCallback = delegate( GameObject item )
            {
                var newClip = ( item == null ) ? null : item.GetComponent<dfAnimationClip>();
                dfEditorUtil.MarkUndo( animation, "Change Atlas" );
                animation.Clip = newClip;
            };

            var value = clip;

            EditorGUILayout.BeginHorizontal();
            {

                EditorGUILayout.LabelField( label, "", GUILayout.Width( dfEditorUtil.LabelWidth - 6 ) );

                GUILayout.Space( 2 );

                var displayText = value == null ? "[none]" : value.name;
                GUILayout.Label( displayText, "TextField" );

                var evt = Event.current;
                if( evt != null )
                {
                    Rect textRect = GUILayoutUtility.GetLastRect();
                    if( evt.type == EventType.mouseDown && evt.clickCount == 2 )
                    {
                        if( textRect.Contains( evt.mousePosition ) )
                        {
                            if( GUI.enabled && value != null )
                            {
                                Selection.activeObject = value;
                                EditorGUIUtility.PingObject( value );
                            }
                        }
                    }
                    else if( evt.type == EventType.DragUpdated || evt.type == EventType.DragPerform )
                    {
                        if( textRect.Contains( evt.mousePosition ) )
                        {
                            var draggedObject = DragAndDrop.objectReferences.First() as GameObject;
                            var draggedFont = draggedObject != null ? draggedObject.GetComponent<dfAtlas>() : null;
                            DragAndDrop.visualMode = ( draggedFont != null ) ? DragAndDropVisualMode.Copy : DragAndDropVisualMode.None;
                            if( evt.type == EventType.DragPerform )
                            {
                                selectionCallback( draggedObject );
                            }
                            evt.Use();
                        }
                    }
                }

                if( GUI.enabled && GUILayout.Button( new GUIContent( " ", "Edit Clip" ), "IN ObjectField", GUILayout.Width( 14 ) ) )
                {
                    showDialog = true;
                }

            }
            EditorGUILayout.EndHorizontal();

            GUILayout.Space( 2 );

            if( showDialog )
            {
                var dialog = dfPrefabSelectionDialog.Show( "Select Animation Clip", typeof( dfAnimationClip ), selectionCallback, dfAnimationClipInspector.RenderPreview, null );
                dialog.previewSize = 200;
            }

        }
        finally
        {
            GUI.color = savedColor;
        }
    }
Beispiel #2
0
    protected internal static void SelectAnimationClip(string label, dfSpriteAnimation animation)
    {
        var savedColor = GUI.color;
        var showDialog = false;

        try
        {
            var clip = animation.Clip;
            if (clip == null)
            {
                GUI.color = EditorGUIUtility.isProSkin ? Color.yellow : Color.red;
            }

            dfPrefabSelectionDialog.SelectionCallback selectionCallback = delegate(GameObject item)
            {
                var newClip = (item == null) ? null : item.GetComponent <dfAnimationClip>();
                dfEditorUtil.MarkUndo(animation, "Change Atlas");
                animation.Clip = newClip;
            };

            var value = clip;

            EditorGUILayout.BeginHorizontal();
            {
                EditorGUILayout.LabelField(label, "", GUILayout.Width(dfEditorUtil.LabelWidth - 6));

                GUILayout.Space(2);

                var displayText = value == null ? "[none]" : value.name;
                GUILayout.Label(displayText, "TextField");

                var evt = Event.current;
                if (evt != null)
                {
                    Rect textRect = GUILayoutUtility.GetLastRect();
                    if (evt.type == EventType.mouseDown && evt.clickCount == 2)
                    {
                        if (textRect.Contains(evt.mousePosition))
                        {
                            if (GUI.enabled && value != null)
                            {
                                Selection.activeObject = value;
                                EditorGUIUtility.PingObject(value);
                            }
                        }
                    }
                    else if (evt.type == EventType.DragUpdated || evt.type == EventType.DragPerform)
                    {
                        if (textRect.Contains(evt.mousePosition))
                        {
                            var draggedObject = DragAndDrop.objectReferences.First() as GameObject;
                            var draggedFont   = draggedObject != null?draggedObject.GetComponent <dfAtlas>() : null;

                            DragAndDrop.visualMode = (draggedFont != null) ? DragAndDropVisualMode.Copy : DragAndDropVisualMode.None;
                            if (evt.type == EventType.DragPerform)
                            {
                                selectionCallback(draggedObject);
                            }
                            evt.Use();
                        }
                    }
                }

                if (GUI.enabled && GUILayout.Button(new GUIContent(" ", "Edit Clip"), "IN ObjectField", GUILayout.Width(14)))
                {
                    showDialog = true;
                }
            }
            EditorGUILayout.EndHorizontal();

            GUILayout.Space(2);

            if (showDialog)
            {
                var dialog = dfPrefabSelectionDialog.Show("Select Animation Clip", typeof(dfAnimationClip), selectionCallback, dfAnimationClipInspector.RenderPreview, null);
                dialog.previewSize = 200;
            }
        }
        finally
        {
            GUI.color = savedColor;
        }
    }
Beispiel #3
0
 public static void TriggerReloadHook(Action <GameUIReloadBarController, PlayerController, Vector3, float, float, int> orig, GameUIReloadBarController self, PlayerController attachParent, Vector3 offset, float duration, float activeReloadStartPercent,
                                      int pixelWidth)
 {
     if (tempraryActiveReloads.ContainsKey(self))
     {
         foreach (MultiActiveReload multiactivereload in tempraryActiveReloads[self])
         {
             if (multiactivereload.sprite != null && multiactivereload.sprite.gameObject != null)
             {
                 UnityEngine.Object.Destroy(multiactivereload.sprite.gameObject);
             }
             if (multiactivereload.celebrationSprite != null && multiactivereload.celebrationSprite.gameObject != null)
             {
                 UnityEngine.Object.Destroy(multiactivereload.celebrationSprite.gameObject);
             }
         }
         tempraryActiveReloads[self].Clear();
     }
     orig(self, attachParent, offset, duration, activeReloadStartPercent, pixelWidth);
     if (attachParent != null && attachParent.CurrentGun != null && attachParent.CurrentGun.GetComponent <MultiActiveReloadController>() != null)
     {
         foreach (MultiActiveReloadData data in attachParent.CurrentGun.GetComponent <MultiActiveReloadController>().reloads)
         {
             dfSprite sprite = UnityEngine.Object.Instantiate(self.activeReloadSprite);
             self.activeReloadSprite.Parent.AddControl(sprite);
             sprite.enabled = true;
             float width    = self.progressSlider.Width;
             float maxValue = self.progressSlider.MaxValue;
             float num      = data.startValue / maxValue * width;
             float num2     = data.endValue / maxValue * width;
             float x        = num + (num2 - num) * data.activeReloadStartPercentage;
             float width2   = (float)pixelWidth * Pixelator.Instance.CurrentTileScale;
             sprite.RelativePosition = self.activeReloadSprite.RelativePosition;
             sprite.RelativePosition = GameUIUtility.QuantizeUIPosition(sprite.RelativePosition.WithX(x));
             sprite.Width            = width2;
             sprite.IsVisible        = true;
             dfSprite celebrationSprite = UnityEngine.Object.Instantiate(self.celebrationSprite);
             self.activeReloadSprite.Parent.AddControl(celebrationSprite);
             celebrationSprite.enabled = true;
             dfSpriteAnimation component = celebrationSprite.GetComponent <dfSpriteAnimation>();
             component.Stop();
             component.SetFrameExternal(0);
             celebrationSprite.enabled          = false;
             celebrationSprite.RelativePosition = sprite.RelativePosition + new Vector3(Pixelator.Instance.CurrentTileScale * -1f, Pixelator.Instance.CurrentTileScale * -2f, 0f);
             int activeReloadStartValue = Mathf.RoundToInt((float)(data.endValue - data.startValue) * data.activeReloadStartPercentage) + data.startValue - data.activeReloadLastTime / 2;
             MultiActiveReload reload   = new MultiActiveReload
             {
                 sprite            = sprite,
                 celebrationSprite = celebrationSprite,
                 startValue        = activeReloadStartValue,
                 endValue          = activeReloadStartValue + data.activeReloadLastTime,
                 stopsReload       = data.stopsReload,
                 canAttemptActiveReloadAfterwards = data.canAttemptActiveReloadAfterwards,
                 reloadData           = data.reloadData,
                 usesActiveReloadData = data.usesActiveReloadData
             };
             if (tempraryActiveReloads.ContainsKey(self))
             {
                 tempraryActiveReloads[self].Add(reload);
             }
             else
             {
                 tempraryActiveReloads.Add(self, new List <MultiActiveReload> {
                     reload
                 });
             }
         }
     }
 }
Beispiel #4
0
        // Token: 0x060001DA RID: 474 RVA: 0x000110B4 File Offset: 0x0000F2B4
        public static void TriggerReloadHook(MultiActiveReloadManager.Action <GameUIReloadBarController, PlayerController, Vector3, float, float, int> orig, GameUIReloadBarController self, PlayerController attachParent, Vector3 offset, float duration, float activeReloadStartPercent, int pixelWidth)
        {
            bool flag = MultiActiveReloadManager.tempraryActiveReloads.ContainsKey(self);

            if (flag)
            {
                foreach (MultiActiveReload multiActiveReload in MultiActiveReloadManager.tempraryActiveReloads[self])
                {
                    bool flag2 = multiActiveReload.sprite != null && multiActiveReload.sprite.gameObject != null;
                    if (flag2)
                    {
                        UnityEngine.Object.Destroy(multiActiveReload.sprite.gameObject);
                    }
                    bool flag3 = multiActiveReload.celebrationSprite != null && multiActiveReload.celebrationSprite.gameObject != null;
                    if (flag3)
                    {
                        UnityEngine.Object.Destroy(multiActiveReload.celebrationSprite.gameObject);
                    }
                }
                MultiActiveReloadManager.tempraryActiveReloads[self].Clear();
            }
            orig(self, attachParent, offset, duration, activeReloadStartPercent, pixelWidth);
            bool flag4 = attachParent != null && attachParent.CurrentGun != null && attachParent.CurrentGun.GetComponent <MultiActiveReloadController>() != null;

            if (flag4)
            {
                foreach (MultiActiveReloadData multiActiveReloadData in attachParent.CurrentGun.GetComponent <MultiActiveReloadController>().reloads)
                {
                    dfSprite dfSprite = UnityEngine.Object.Instantiate <dfSprite>(self.activeReloadSprite);
                    self.activeReloadSprite.Parent.AddControl(dfSprite);
                    dfSprite.enabled = true;
                    float width    = self.progressSlider.Width;
                    float maxValue = self.progressSlider.MaxValue;
                    float num      = (float)multiActiveReloadData.startValue / maxValue * width;
                    float num2     = (float)multiActiveReloadData.endValue / maxValue * width;
                    float x        = num + (num2 - num) * multiActiveReloadData.activeReloadStartPercentage;
                    float width2   = (float)pixelWidth * Pixelator.Instance.CurrentTileScale;
                    dfSprite.RelativePosition = self.activeReloadSprite.RelativePosition;
                    dfSprite.RelativePosition = GameUIUtility.QuantizeUIPosition(dfSprite.RelativePosition.WithX(x));
                    dfSprite.Width            = width2;
                    dfSprite.IsVisible        = true;
                    dfSprite dfSprite2 = UnityEngine.Object.Instantiate <dfSprite>(self.celebrationSprite);
                    self.activeReloadSprite.Parent.AddControl(dfSprite2);
                    dfSprite2.enabled = true;
                    dfSpriteAnimation component = dfSprite2.GetComponent <dfSpriteAnimation>();
                    component.Stop();
                    component.SetFrameExternal(0);
                    dfSprite2.enabled          = false;
                    dfSprite2.RelativePosition = dfSprite.RelativePosition + new Vector3(Pixelator.Instance.CurrentTileScale * -1f, Pixelator.Instance.CurrentTileScale * -2f, 0f);
                    int num3 = Mathf.RoundToInt((float)(multiActiveReloadData.endValue - multiActiveReloadData.startValue) * multiActiveReloadData.activeReloadStartPercentage) + multiActiveReloadData.startValue - multiActiveReloadData.activeReloadLastTime / 2;
                    MultiActiveReload item = new MultiActiveReload
                    {
                        sprite            = dfSprite,
                        celebrationSprite = dfSprite2,
                        startValue        = num3,
                        endValue          = num3 + multiActiveReloadData.activeReloadLastTime,
                        stopsReload       = multiActiveReloadData.stopsReload,
                        canAttemptActiveReloadAfterwards = multiActiveReloadData.canAttemptActiveReloadAfterwards,
                        reloadData           = multiActiveReloadData.reloadData,
                        usesActiveReloadData = multiActiveReloadData.usesActiveReloadData,
                        Name = multiActiveReloadData.Name
                    };
                    bool flag5 = MultiActiveReloadManager.tempraryActiveReloads.ContainsKey(self);
                    if (flag5)
                    {
                        MultiActiveReloadManager.tempraryActiveReloads[self].Add(item);
                    }
                    else
                    {
                        MultiActiveReloadManager.tempraryActiveReloads.Add(self, new List <MultiActiveReload>
                        {
                            item
                        });
                    }
                }
            }
        }