protected override void MechanismStart()
 {
     isSolutionMechanism = false;
     if (toGenerateConstruction == null)
     {
         toGenerateConstruction = Construction.CreateSimpleConstruction(PartType.None);
     }
 }
Exemplo n.º 2
0
 public void LoadBlankEditor()
 {
     ClearSolution();
     ClearLevel();
     LoadedLevelName             = LevelDataManager.EditorSaveName;
     LevelOptions                = 0;
     GridManager.instance.target = Construction.CreateSimpleConstruction(PartType.None);
     OnGridChangedEvent();
 }
    IEnumerator Start()
    {
        SetUpControlModes();
        yield return(null);

        int counter = 0;

        List <Construction> draggableParts = new List <Construction>();

        foreach (PartType partType in GameSettings.instance.partPrefabs.ConvertAll <PartType>((input) => input.partType))
//		foreach (GrabbablePart prefab in GameSettings.instance.partPrefabs)
        {
            Construction partConstruction = Construction.CreateSimpleConstruction(partType);
            partConstruction.ignoreCollisions = true;

            GameObject dragButton   = Instantiate(_draggableButtonPrefab.gameObject) as GameObject;
            UIButton   dragUIButton = dragButton.GetComponent <UIButton>();
            SetUpDragDropBehaviour(dragUIButton, partConstruction.CenterPart);
            dragButton.SetActive(true);
//			_dragButtons.Add(dragButton.GetComponent<UIButton>());

            dragButton.transform.parent        = _partHolder.transform;
            dragButton.transform.localPosition = new Vector3(0, -60f * counter, 0);

            partConstruction.transform.parent        = dragButton.transform;
            partConstruction.transform.localPosition = Vector3.zero;

            draggableParts.Add(partConstruction);

//			GameObject partObject = Instantiate(prefab.gameObject) as GameObject;
//			partObject.transform.parent = _partHolder.transform;
//			partObject.transform.position = Vector3.zero;
//			partObject.transform.localPosition = new Vector3 (0, -60f * counter, 0);

            counter += 1;
        }

        _editorAreaInputCatcher.OnInputEvent += HandleScreenPoint;


        yield return(null);

        foreach (Construction construction in draggableParts)
        {
//			construction.CenterPart.PartSphereCollider.gameObject.SetActive(false);
            construction.ignoreCollisions = true;
        }

        CloseMaker();
    }
 public void SaveConstruction()
 {
     Debug.Log("Saving");
     if (saveEvent != null)
     {
         if (targetConstructions.Count > 0)
         {
             saveEvent(targetConstructions[0]);
         }
         else
         {
             Construction noneConstruction = Construction.CreateSimpleConstruction(PartType.None);
             saveEvent(noneConstruction);
             noneConstruction.DestroySelf();
         }
     }
 }
    void SetUpDragDropBehaviour(UIButton button, GrabbablePart part)
    {
        dragButtons[part.partType] = button;
        buttonToPart[button]       = part;
        Debug.Log("Setting up Drag Drop behaviour");
//		Debug.DebugBreak();
        button.SetDragDropDelegate((parms) =>
        {
            if (parms.evt == EZDragDropEvent.Begin)
            {
                Debug.Log("Begin " + parms.dragObj /*+":"+parms.dragObj.transform.position+":"+parms.ptr.ray*/);

                if (onDragStart != null)
                {
                    onDragStart();
                    onDragStart = null;
                }

                // from retarget
//				DestroyMarkedPart();
            }
            if (parms.evt == EZDragDropEvent.Update)
            {
                if (Input.GetMouseButtonUp(1))
                {
                    HandleAltTapWhileDragging(part);
                }
//
//
                int rotationOffset = GetSuggestedRotation(part);
                part.RotatateSimulationOrientation(rotationOffset);
//
//				if (rotateByOne)
//				{
//					RotateDraggedPart(part);
//				}
//				Debug.Log (string.Join(",", partSides.ConvertAll((input) => ""+input.offsetFromSide).ToArray()));
            }
            if (parms.evt == EZDragDropEvent.Cancelled)
            {
                Debug.Log("Cancelled " + parms.dragObj);
                Debug.Log("DropTarget: " + parms.dragObj.DropTarget);

                if (parms.dragObj.DropTarget == _editorAreaInputCatcher.Control.gameObject)
                {
                    foreach (Construction construction in targetConstructions)
                    {
                        Debug.Log("Construction: " + construction);
                    }

                    if (targetConstructions.Count > 0 && targetConstructions[0].Count > 0)
                    {
                        ClearInnerArrows();

                        ConnectPartWithBestRotation(part);
                    }
                    else if (targetConstructions.Count > 0 && targetConstructions[0].Count == 0)
                    {
                        Debug.Log("Adding new part to blank construction");
                        GrabbablePart singlePart = ObjectPoolManager.GetObject(GameSettings.instance.GetPartPrefab(part.partType));
                        targetConstructions[0].AddToConstruction(singlePart);
                        targetConstructions[0].CenterConstruction(singlePart);
                        MarkConstructionChange();
                    }
                    else
                    {
                        Debug.Log("Adding new construction");
                        targetConstructions.Add(Construction.CreateSimpleConstruction(part.partType));
                        targetConstructions[0].FirstPart.SetSimulationOrientation(part.SimulationOrientation);
                        targetConstructions[0].transform.parent        = _constructionHolder.transform;
                        targetConstructions[0].transform.localPosition = Vector3.zero;
                        MarkConstructionChange();
                    }
                }
                part.SetSimulationOrientation(HexMetrics.Direction.Up);

//				targetConstructions.
            }
            if (parms.evt == EZDragDropEvent.CancelDone)
            {
                Debug.Log("CancelDone " + parms.dragObj);
            }
        });
    }
Exemplo n.º 6
0
 void Start()
 {
     SetTarget(Construction.CreateSimpleConstruction(PartType.None));
     OnGridChangedEvent += PerformAutosave;
 }