コード例 #1
0
    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);
    }
コード例 #2
0
    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);
    }
コード例 #3
0
    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;
        }
    }
コード例 #4
0
        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);
        }