public Construction StepPreStart() { // Debug.Log ("StepPreStart"); if (hexCell != null && toGenerateConstruction.Count > 0) { if (placeOnNextTurn) { Construction construction; construction = Construction.DecodeCreate(encodedConsruction); construction.idNumber = generatorCount; // construction.gameObject.name = toGenerateConstruction.gameObject.name+" "+generatorCount; // part.PlaceAtLocation(Location); construction.transform.position = GridManager.instance.GetHexCell(Location).transform.position; // construction.AddToConstruction(construction); // construction.transform.localPosition = Vector3.zero; placeOnNextTurn = false; generatorCount += 1; return(construction); } else if (hexCell.partOverCell == null) { placeOnNextTurn = true; } } return(null); }
public override bool Decode(Encoding encoding) { // List<object> encoded = new List<object>(encodings); if (!encoding.Validate(EncodingType.Group, EncodingType.Group )) { Debug.Log("Could not decode generator \n" + encoding.DebugString()); return(false); } Debug.Log("Decoding Generator: " + encoding.DebugString()); base.Decode(encoding.SubEncoding(0)); if (toGenerateConstruction != null) { ObjectPoolManager.DestroyObject(toGenerateConstruction); toGenerateConstruction = null; } if (encoding.Count > 1) { toGenerateConstruction = Construction.DecodeCreate(encoding.SubEncoding(1)); toGenerateConstruction.ignoreCollisions = true; } return(true); }
public override void OnInspectorGUI() { constructionText = EditorGUILayout.TextField("Create Construction", constructionText); if (GUILayout.Button("Generate Construction")) { Construction construction = Construction.DecodeCreate(constructionText); Debug.Log(construction.PartsList.Count); EditorUtility.SetDirty(construction); foreach (GrabbablePart part in construction.Parts) { EditorUtility.SetDirty(part); } // GrabbablePart constructed = constructionDef.GenerateConnectedParts(); construction.transform.parent = (target as ConstructionDefinitionCreator).transform; construction.transform.localPosition = Vector3.zero; } }
public bool Decode(Encoding encodings) { Debug.Log("EncodableLevel Encoding Data\n" + encodings.DebugString()); // int count = encodings.Int(0); // for (int i = 0 ; i < count ; i++) // { // PartGenerator generator = ObjectPoolManager.GetObject(GameSettings.instance.partGeneratorPrefab); // generator.Decode(encodings.SubEncoding(1+i)); // } int i = 0; MechanismType [] mechanismTypes = new MechanismType [] { MechanismType.Generator, MechanismType.Grabber, MechanismType.WeldingRig }; foreach (MechanismType type in mechanismTypes) { int count = encodings.Int(i); i++; for (int j = 0; j < count; j++) { Mechanism newMechanism = ObjectPoolManager.GetObject <Mechanism>(GameSettings.instance.GetMechanism(type)); newMechanism.Decode(encodings.SubEncoding(i)); i++; } } GridManager.instance.targetConstructions = encodings.Int(i + 0); // GridManager.instance.targetConstructions2 = encodings.Int(i+1); Construction target0 = Construction.DecodeCreate(encodings.SubEncoding(i + 2)); // Debug.Log ("Setting Target0 "+encodings.SubEncoding(i+2).DebugString()); // Debug.Log ("Setting Target0 "+Encoding.Encode(target0)); GridManager.instance.SetTarget(target0); target0.DestroySelf(); // Construction target0 = Construction.DecodeCreate(encodings.SubEncoding(i+3)); // CoroutineUtils.WaitOneFrameAndDo(() => GridManager.instance.SetTarget(target0)); GridManager.instance.LevelOptions = encodings.Int(i + 4); return(true); }