Beispiel #1
0
    private void RefreshMode(bool forceChanged)
    {
        var editCtrl = GridEditController.instance;
        var ghost    = editCtrl.ghostController;

        var prevEditMode = mCurEditMode;

        //change state based on edit mode
        if (forceChanged || editCtrl.editMode != mCurEditMode || mCurEntity != editCtrl.selected)
        {
            mCurEditMode = editCtrl.editMode;

            var ghostMode      = GridGhostController.Mode.Hidden;
            var displayVisible = false;
            var moveActive     = false;
            var expandActive   = false;

            switch (mCurEditMode)
            {
            case GridEditController.EditMode.Select:
                displayVisible = editCtrl.selected != null;
                break;

            case GridEditController.EditMode.Move:
                moveActive = true;

                if (editCtrl.selected)
                {
                    displayVisible = true;
                    ghostMode      = GridGhostController.Mode.Move;
                }
                break;

            case GridEditController.EditMode.Expand:
                expandActive = true;

                if (editCtrl.selected)
                {
                    displayVisible = true;
                    ghostMode      = GridGhostController.Mode.Expand;
                }
                break;
            }

            if (displayVisible)
            {
                displayGO.SetActive(true);
                if (moveToggleGO)
                {
                    moveToggleGO.SetActive(moveActive);
                }
                if (expandToggleGO)
                {
                    expandToggleGO.SetActive(expandActive);
                }
            }
            else
            {
                displayGO.SetActive(false);
            }

            if (ghostMode != GridGhostController.Mode.Hidden && editCtrl.selected)
            {
                ghost.data = editCtrl.selected.data;
            }

            ghost.mode = ghostMode;
        }

        insufficientResourcesGO.SetActive(false);

        //change info based on selected entity
        if (forceChanged || mCurEntity != editCtrl.selected)
        {
            mCurEntity = editCtrl.selected;
            if (mCurEntity)
            {
                displayGO.SetActive(true);

                //setup info
                titleText.text = M8.Localize.Get(mCurEntity.data.nameTextRef);

                RefreshDimensionInfoDisplay();

                if (!string.IsNullOrEmpty(sfxSelected))
                {
                    M8.SoundPlaylist.instance.Play(sfxSelected, false);
                }
            }
        }

        switch (prevEditMode)
        {
        case GridEditController.EditMode.Placement:
        case GridEditController.EditMode.Select:
        case GridEditController.EditMode.None:
            if (ghost.mode != GridGhostController.Mode.Hidden && mCurEntity)
            {
                ghost.cellIndex = mCurEntity.cellIndex;
                ghost.cellSize  = mCurEntity.cellSize;
            }
            break;
        }

        if (mCurEntity && mCurEntity.signalInvokeEntitySizeChanged) //this will refresh display on cards
        {
            mCurEntity.signalInvokeEntitySizeChanged.Invoke(mCurEntity);
        }
    }
Beispiel #2
0
 public override void Reset()
 {
     mode = GridEditController.EditMode.None;
 }