Beispiel #1
0
    public void AttachToGridX()
    {
        if (GridManager.Instance.NumRows <= 0)
        {
            return;
        }
        dataBefore = new UndoSystem.NoteDataBefore(mData);
        float minabs = int.MaxValue;
        float pos    = mData.Position;

        for (int i = 0; i < GridManager.GridCols.Count; i++)
        {
            float curtime = GridManager.GridCols [i].Time;
            curtime /= 1000f;
            curtime  = ParamCalculator.UnityXToVanillaPosition(curtime);
            if (mData.Direction != 0)
            {
                curtime = curtime * 1.25f - 0.625f;
            }
            curtime -= mData.Width / 2f;
            if (Mathf.Abs(curtime - mData.Position) < minabs)
            {
                minabs = Mathf.Abs(curtime - mData.Position);
                pos    = curtime;
            }
        }
        mData.Position = pos;
        UndoSystem.RegisterUndo(new UndoSystem.NoteDataChangeUndoAction(mData, dataBefore, new UndoSystem.NoteDataBefore(mData)));
    }
Beispiel #2
0
    public static GameObject NewNote(string path, int timedelta = 0, bool regundo = false)
    {
        GameObject go = GameObject.Instantiate(Resources.Load <GameObject> (path));
        NoteData   nd = go.GetComponent <NoteData> ();

        nd.Direction          = GridManager.Instance.GridDir;
        go.transform.position = Camera.main.ScreenToWorldPoint(Input.mousePosition);
        Vector3 tmp = go.transform.position;

        tmp.z = 0;
        if (GridManager.Instance.GridDir == 1)
        {
            tmp.x = go.transform.position.y / 9f * 16f / 0.8f;
            tmp.y = -go.transform.position.x + 4.255f - 2f;
        }
        else if (GridManager.Instance.GridDir == -1)
        {
            tmp.x = go.transform.position.y / 9f * 16f / 0.8f;
            tmp.y = go.transform.position.x + 4.25f - 2f;
        }
        go.transform.position = tmp;
        nd.Position           = ParamCalculator.UnityXToVanillaPosition(tmp.x) - nd.Width / 2;
        nd.Time        = ParamCalculator.PositionYToTime(tmp.y) + timedelta;
        nd.Width       = WidthStore [WidthStoreN];
        nd.InnerID     = ++AtomicCounter;
        nd.NotifyWidth = true;
        go.GetComponent <NoteSelection> ().ShouldAttachGridY = true;
        if (regundo)
        {
            UndoSystem.RegisterUndo(new UndoSystem.CreateNoteUndoAction(nd, path));
        }
        return(go);
    }
Beispiel #3
0
        protected override bool OnCreate()
        {
            if (!base.OnCreate())
            {
                return(false);
            }

            LongOperationNotifier.Setup();

            Log.Info(">> 初始化 EntitySystemWorld...");
            if (!EntitySystemWorld.Init(new EntitySystemWorld()))
            {
                Log.Info(">> EntitySystemWorld 初始化失败!");
                return(false);
            }

            WorldType worldType = EntitySystemWorld.Instance.DefaultWorldType;

            if (!EntitySystemWorld.Instance.WorldCreate(WorldSimulationTypes.Editor, worldType))
            {
                Log.Info(">> 创建世界失败, WorldType: {0}", worldType);
                return(false);
            }

            instance = this;

            DesignerInterface.Init(new DesignerInterfaceImpl());
            EntityWorld.Setup();

            if (MainForm.Instance != null)
            {
                /*
                 * if (MainForm.Instance.ResourcesForm != null)
                 * {
                 *  MainForm.Instance.ResourcesForm.ResourceChange += new ResourcesForm.ResourceChangeDelegate(this.OnResourceChange);
                 *  MainForm.Instance.ResourcesForm.IsResourceEditModeActive += new ResourcesForm.IsResourceEditModeActiveDelegate(this.OnIsResourceEditMode);
                 *  MainForm.Instance.ResourcesForm.ResourceBeginEditMode += new ResourcesForm.ResourceBeginEditModeDelegate(this.OnResourceBeginEditMode);
                 *  MainForm.Instance.ResourcesForm.ResourceRename += new ResourcesForm.ResourceRenameDelegate(this.OnResourceRename);
                 * }
                 * //*/
                if (MainForm.Instance.PropertiesForm != null)
                {
                    MainForm.Instance.PropertiesForm.ReadOnly = true;
                }
            }
            ResourceUtils.OnUITypeEditorEditValue += ResourceUtils_OnUITypeEditorEditValue;

            AddonManager.PreInit();
            InitResourceTypeManager();

            UndoSystem.Init(64);

            //EntitySystemWorld.Instance.Simulation = true;
            return(true);
        }
Beispiel #4
0
 public void KeysWithControlAlt()
 {
     if (Input.GetKeyDown(KeyCode.O))
     {
         Dialogs.OpenXml();
     }
     else if (Input.GetKeyDown(KeyCode.I))
     {
         Dialogs.OpenMusic();
     }
     else if (Input.GetKeyDown(KeyCode.R))
     {
         if (PlaybackSystem.GetMillisTotal() < 500)
         {
             MessageBox.Show("You Should Load A Music First!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
         }
         else if (MessageBox.Show("Confirm Exporting Video?", "Confirm", MessageBoxButtons.YesNo) == DialogResult.Yes)
         {
             ExportVideoSystem.Instance.RecordOnce();
         }
     }
     else if (Input.GetKeyDown(KeyCode.K))
     {
         Instantiate(Resources.Load("UI/FormChartInfo"), Canvas.transform);
     }
     else if (Input.GetKeyDown(KeyCode.S))
     {
         Dialogs.SaveXml();
     }
     else if (Input.GetKeyDown(KeyCode.V))
     {
         if (TimeControl.Instance == null)
         {
             Instantiate(Resources.Load <GameObject> ("UI/TimeControl"), Canvas.transform);
         }
         else
         {
             NoteSelection.MouseInterfaceID = -1;
             DestroyObject(TimeControl.Instance.gameObject);
             TimeControl.Instance = null;
         }
     }
     else if (Input.GetKeyDown(KeyCode.Z))
     {
         UndoSystem.Undo();
     }
     else if (Input.GetKeyDown(KeyCode.Y) || Input.GetKeyDown(KeyCode.X))
     {
         UndoSystem.Redo();
     }
 }
Beispiel #5
0
        /// <summary>
        /// Initializes a new instance of the ImageEditPanel
        /// </summary>
        public ImageEditPanel()
        {
            EditingEnabled = true;

            // Create the controls
            SuspendLayout();

            _internalPictureBox = new InternalPictureBox(this)
            {
                MinimumZoom           = new PointF(0.25f, 0.25f),
                MaximumZoom           = new PointF(160, 160),
                ShowImageArea         = false,
                ClipBackgroundToImage = true,
                AllowDrag             = false,
                NotifyTo = this,
                Dock     = DockStyle.Fill
            };

            _owningPanel = new Panel
            {
                Dock        = DockStyle.Fill,
                AutoScroll  = true,
                BorderStyle = BorderStyle.FixedSingle
            };

            // Add controls
            _owningPanel.Controls.Add(_internalPictureBox);
            Controls.Add(_owningPanel);

            ResumeLayout(true);

            _undoSystem = new UndoSystem();

            _defaultCompositingMode = CompositingMode.SourceOver;
            _defaultFillMode        = OperationFillMode.SolidFillFirstColor;
        }
Beispiel #6
0
    // Update is called once per frame
    void Update()
    {
        if (Begin == null || !Begin.gameObject.activeInHierarchy)
        {
            if (End != null && End.gameObject.activeInHierarchy)
            {
                DestroyObject(End.gameObject);
            }
            Destroy(gameObject);
            return;
        }
        if (End == null || !End.gameObject.activeInHierarchy)
        {
            if (Begin != null && Begin.gameObject.activeInHierarchy)
            {
                UndoSystem.RegisterUndo(new UndoSystem.HoldCreateUndoAction(Begin.GetComponent <NoteData> (), Begin.GetComponent <NoteData> ().Sub, false));
                DestroyObject(Begin.gameObject);
            }
            Destroy(gameObject);
            return;
        }
        Vector3 bgp = Begin.position;

        GetComponent <SpriteRenderer> ().enabled = !End.GetComponent <NoteJudge> ().Judged;
        Vector3 sc = transform.localScale;

        if (Begin.GetComponent <NoteData> ().Direction == 0)
        {
            if (Begin.GetComponent <NoteJudge> ().Judged)
            {
                bgp.y = -2;
            }
            sc.x = Begin.localScale.x * 4f;
            sc.y = (End.position.y - bgp.y) * 2f;
        }
        else
        {
            if (Begin.GetComponent <NoteJudge> ().Judged)
            {
                bgp.x = Begin.GetComponent <NoteData> ().Direction * 4.25f;
            }
            sc.x = Begin.localScale.x * 4f;
            sc.y = Mathf.Abs(End.position.x - bgp.x) * 2f;
        }
        End.GetComponent <NoteData> ().Time        = Mathf.Max(Begin.GetComponent <NoteData> ().Time + 60, End.GetComponent <NoteData> ().Time);
        End.GetComponent <NoteData> ().Position    = Begin.GetComponent <NoteData> ().Position;
        End.GetComponent <NoteData> ().Width       = Begin.GetComponent <NoteData> ().Width;
        End.GetComponent <NoteData> ().NotifyWidth = true;
        End.GetComponent <NoteData> ().Direction   = Begin.GetComponent <NoteData> ().Direction;
        Begin.GetComponent <NoteData> ().Sub       = End.GetComponent <NoteData> ();
        transform.position      = (bgp + End.position) / 2;
        transform.localRotation = Begin.localRotation;

        Color c = new Color(1f, 1f, 1f, 1f);

        if (Begin.GetComponent <NoteData> ().Direction == 0 && Begin.position.y > 1f)
        {
            c.a = 2f - transform.position.y;
        }
        else if (Begin.GetComponent <NoteData> ().Direction != 0 && Begin.GetComponent <NoteData> ().Direction *(Begin.position.x) < 2f)
        {
            c.a = Begin.GetComponent <NoteData> ().Direction *(transform.position.x) - 1f;
        }

        c.a = Mathf.Clamp01(c.a);
        GetComponent <SpriteRenderer> ().color = c;
        GetComponent <SpriteRenderer> ().size  = new Vector2(sc.x, sc.y);
    }
Beispiel #7
0
    public void KeysBared()
    {
        if (Input.GetKeyDown(KeyCode.Space))
        {
            TimeControlSystem.isPlaying = !TimeControlSystem.isPlaying;
        }
        if (Input.GetKeyDown(KeyCode.Z))
        {
            if (Mathf.Abs(GridManager.Instance.GridDir) > 1)
            {
                MessageBox.Show("You Should Enable Grids First!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            NewNote("NoteNormal", regundo: true);
        }
        if (Input.GetKeyDown(KeyCode.X))
        {
            if (Mathf.Abs(GridManager.Instance.GridDir) > 1)
            {
                MessageBox.Show("You Should Enable Grids First!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            NewNote("NoteChain", regundo: true);
        }
        if (Input.GetKeyDown(KeyCode.C))
        {
            if (Mathf.Abs(GridManager.Instance.GridDir) > 1)
            {
                MessageBox.Show("You Should Enable Grids First!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
            }
            GameObject go = NewNote("NoteHoldSub", 500);
            Transform  ed = go.transform;

            go = NewNote("NoteHoldHold");
            Transform bg = go.transform;

            go = GameObject.Instantiate(Resources.Load <GameObject> ("NoteHold"));
            HoldScaling hs = go.GetComponent <HoldScaling> ();
            hs.Begin = bg;
            hs.End   = ed;
            UndoSystem.RegisterUndo(new UndoSystem.HoldCreateUndoAction(bg.GetComponent <NoteData>(), ed.GetComponent <NoteData>()));
        }

        if (Input.GetKeyDown(KeyCode.U))
        {
            if (PlaybackSystem.PlaySpeed >= 0.2f)
            {
                PlaybackSystem.PlaySpeed -= 0.1f;
            }
            else
            {
                PlaybackSystem.PlaySpeed = 0.1f;
            }
        }
        else if (Input.GetKeyDown(KeyCode.I))
        {
            if (PlaybackSystem.PlaySpeed <= 2.9f)
            {
                PlaybackSystem.PlaySpeed += 0.1f;
            }
            else
            {
                PlaybackSystem.PlaySpeed = 3f;
            }
        }

        KeyCode[] ls = { KeyCode.Alpha1, KeyCode.Alpha2, KeyCode.Alpha3, KeyCode.Alpha4 };
        for (int i = 0; i < 4; i++)
        {
            if (Input.GetKeyDown(ls [i]))
            {
                WidthStoreN = i;
            }
        }

        if (Input.GetKeyDown(KeyCode.G))
        {
            GridManager.Instance.GridDir++;
            if (GridManager.Instance.GridDir > 1)
            {
                GridManager.Instance.GridDir = -1;
            }
        }
    }
Beispiel #8
0
    private void Awake()
    {
        instance = this;

        cubeMoves = new Stack <MainCube>();
    }
Beispiel #9
0
 private void Start()
 {
     UndoSystem.undoSystem = this;
     gouradFirst.Value     = new CommandEmpty();
     gouradLast.Value      = new CommandEmpty();
 }
Beispiel #10
0
    IEnumerator do_Update()
    {
        if (ShouldAttachGridX)
        {
            ShouldAttachGridX = false;
            AttachToGridX();
        }
        if (ShouldAttachGridY)
        {
            ShouldAttachGridY = false;
            AttachToGridY();
        }
        if (mData.Direction == 0)
        {
            Hitbox = new Rect(transform.position.x - transform.localScale.x, transform.position.y - transform.localScale.y * 0.32f, transform.localScale.x * 2, transform.localScale.y * 2 * 0.32f);
        }
        else
        {
            Hitbox = new Rect(transform.position.x - transform.localScale.y * 0.32f, transform.position.y - transform.localScale.x, transform.localScale.y * 2 * 0.32f, transform.localScale.x * 2);
        }

        if ((Input.GetKey(KeyCode.LeftAlt) || Input.GetKey(KeyCode.RightAlt)))
        {
            if (JudgeContain())
            {
                if (Input.GetMouseButton(0))
                {
                    AttachToGridX();
                }
                if (Input.GetMouseButton(1))
                {
                    AttachToGridY();
                }
            }
            yield break;
        }
        lastClick += Time.deltaTime;

        if (MouseInterfaceID == -1 && Input.GetMouseButton(0) && GridManager.Instance.GridDir == mData.Direction && JudgeContain() && !TimeControlSystem.isPlaying)
        {
            if (lastClick < 0.33f)
            {
                Debug.Log(1);
                Instantiate(Resources.Load <GameObject> ("UI/NoteDataEdit"), HotkeySystem.Instance.Canvas.transform).GetComponent <NoteDataEdit> ().Editing = mData;
                MouseInterfaceID = -2;
            }
            else
            {
                MouseInterfaceID = Mathf.Abs(GetHashCode());
                IsSelected       = true;
                dataBefore       = new UndoSystem.NoteDataBefore(mData);

                mIndicator           = Instantiate(Resources.Load <GameObject> ("RectLines")).GetComponent <RectLines> ();
                mIndicator.Rectangle = Hitbox;
                mIndicator.LineWidth = 0.05f;
            }
            lastClick = 0;
        }
        if (MouseInterfaceID == Mathf.Abs(GetHashCode()))
        {
            mIndicator.Rectangle = Hitbox;
            if (!Input.GetMouseButton(0) || GridManager.Instance.GridDir != mData.Direction)
            {
                MouseInterfaceID = -1;
                IsSelected       = false;

                mIndicator.NeedsDestroy = true;
                AttachToGridY();
                UndoSystem.RegisterUndo(new UndoSystem.NoteDataChangeUndoAction(mData, dataBefore, new UndoSystem.NoteDataBefore(mData)));
            }
        }
        if (MouseInterfaceID == -1 && Input.GetMouseButtonDown(1) && JudgeContain())
        {
            MouseInterfaceID = Mathf.Abs(GetHashCode());

            yield return(new WaitForEndOfFrame());

            Destroy(gameObject);
            if (mData.NoteType != "HOLD" && mData.NoteType != "SUB")
            {
                UndoSystem.RegisterUndo(new UndoSystem.CreateNoteUndoAction(mData, name.Split('(') [0], false));
            }
            else if (mData.Sub != null)
            {
                UndoSystem.RegisterUndo(new UndoSystem.HoldCreateUndoAction(mData, mData.Sub, false));
            }
        }
        if (IsSelected)
        {
            if (Input.GetKey(KeyCode.LeftControl) || Input.GetKey(KeyCode.RightControl))
            {
                mData.Width += Input.GetAxis("Mouse Y") * 0.8f;
                if (mData.Width < 0.05f)
                {
                    mData.Width = 0.05f;
                }
                else
                {
                    mData.Position -= Input.GetAxis("Mouse Y") * 0.4f;
                }
            }
            else
            {
                float UNX;
                float UNY;
                if (mData.Direction == 0)
                {
                    UNX = transform.position.x + Input.GetAxis("Mouse X");
                    UNY = transform.position.y + Input.GetAxis("Mouse Y");
                }
                else if (mData.Direction == 1)
                {
                    UNX = (transform.position.y + Input.GetAxis("Mouse Y")) / 9f * 16f / 0.8f;
                    UNY = -(transform.position.x + Input.GetAxis("Mouse X")) + 4.255f - 2f;
                }
                else
                {
                    UNX = (transform.position.y + Input.GetAxis("Mouse Y")) / 9f * 16f / 0.8f;
                    UNY = (transform.position.x + Input.GetAxis("Mouse X")) + 4.25f - 2f;
                }
                mData.Position = ParamCalculator.UnityXToVanillaPosition(UNX) - mData.Width / 2;
                mData.Time     = ParamCalculator.PositionYToTime(UNY);
            }
        }
    }