Exemplo n.º 1
0
    public void EnzymesAI()
    {
        Nucleobase_View NucleobaseToComplement = Nucleobase_View.GetNucleobaseAtPosition(NucleobaseToComplementMarker.position);

        Nucleobase.types goodType = NucleobaseToComplement.getNucleobaseComplementType();

        Nucleobase_View NucleobaseToPluck_1 = null;
        Nucleobase_View NucleobaseToPluck_2 = null;

        Pluckables.ResetAvailables();

        if (Random.Range(0, 2) == 0)
        {
            NucleobaseToPluck_1 = Pluckables.GetNucleobaseOfType(goodType);
            NucleobaseToPluck_2 = Pluckables.GetRandomNucleobase();
        }
        else
        {
            NucleobaseToPluck_1 = Pluckables.GetRandomNucleobase();
            NucleobaseToPluck_2 = Pluckables.GetNucleobaseOfType(goodType);
        }


        if (NucleobaseToPluck_1 == null)
        {
            Debug.Log("First pluckable is null! Trying a random one.");
            NucleobaseToPluck_1 = Pluckables.GetRandomNucleobase();
        }

        if (NucleobaseToPluck_2 == null)
        {
            Debug.Log("Second pluckable is null! Trying a random one.");
            NucleobaseToPluck_2 = Pluckables.GetRandomNucleobase();
        }

        if (NucleobaseToPluck_1 == null || NucleobaseToPluck_2 == null)
        {
            Debug.LogError("Out of Nucleobases to pluck !?!?");
            return;
        }



        if (NucleobaseToPluck_1.transform.position.x < NucleobaseToPluck_2.transform.position.x)
        {
            LeftEnzyme.SelectNucleobase(NucleobaseToPluck_1);
            leftHasGoodAnswer = (NucleobaseToPluck_1.getNucleobaseType() == goodType);

            RightEnzyme.SelectNucleobase(NucleobaseToPluck_2);
            rightHasGoodAnswer = (NucleobaseToPluck_2.getNucleobaseType() == goodType);
        }
        else
        {
            LeftEnzyme.SelectNucleobase(NucleobaseToPluck_2);
            leftHasGoodAnswer = (NucleobaseToPluck_2.getNucleobaseType() == goodType);

            RightEnzyme.SelectNucleobase(NucleobaseToPluck_1);
            rightHasGoodAnswer = (NucleobaseToPluck_1.getNucleobaseType() == goodType);
        }
    }
Exemplo n.º 2
0
    public void Preload()
    {
        isReadyForTurnStart = false;

        GameController  gc = GameController.GetInstance();
        Nucleobase_View newRandomNucleobase = null;
        Vector3         pos = SpawnMarker.position;

        int failSafeCounter = 0;         // to prevent infinite loops

        while (true)
        {
            newRandomNucleobase = SpawnRandomNucleobase();
            SetupNewNucleobase(newRandomNucleobase);
            newRandomNucleobase.transform.position = pos;

            if (complement)
            {
                newRandomNucleobase = gc.SpawnNucleobaseFromType(newRandomNucleobase.getNucleobaseComplementType());
                SetupNewNucleobase(newRandomNucleobase);
                newRandomNucleobase.transform.position = pos;
                newRandomNucleobase.transform.Translate(0, 6, 0);
                newRandomNucleobase.transform.Rotate(180, 0, 0);
            }

            if (Vector3.Distance(pos, ActionMarker.position) <= 0.1f)
            {
                break;
            }

            if (++failSafeCounter >= 30)
            {
                Debug.LogError("FailSafeCounter reached when preloading sequence " + this.gameObject.name);
                break;
            }

            pos += movementDirection * 10;
        }
        ;

        isReadyForTurnStart = true;
    }
Exemplo n.º 3
0
    public void NextTurn()
    {
        isReadyForTurnStart = false;


        Nucleobase_View newRandomNucleobase = SpawnRandomNucleobase();

        SetupNewNucleobase(newRandomNucleobase);

        if (complement)
        {
            newRandomNucleobase = GameController.GetInstance().SpawnNucleobaseFromType(newRandomNucleobase.getNucleobaseComplementType());
            SetupNewNucleobase(newRandomNucleobase);
            newRandomNucleobase.transform.Translate(0, 6, 0);
            newRandomNucleobase.transform.Rotate(180, 0, 0);
        }

        isReadyForTurnStart = true;
    }