public override void Run(AlienC alien, ServersGraphC serversC, List <Slot> slots, bool isForward)
    {
        switch (step)
        {
        case -1:
            slots[step + 1].holding.myImage.color = Color.green;
            d = slots[step + 1].holding;
            Animate(alien, serversC, true);
            break;

        case 0:
            serversC.nowAt = serversC.goingTo;
            serversC.nowAt.BucklePath(false);
            alien.GetExploded(delegate { Feedback.instance.popUp(true, "Challenge2"); });
            break;
        }
    }
示例#2
0
        private static void CreatingAReferenceExample()
        {
            /* A single AlienC reference was created, which is made to refer to a new AlienC object */
            AlienC x = new AlienC(100, 100);

            Console.WriteLine("x {0}", x);

            /* This is followed by the creation of an array, which contains 100 AlienC references. Each
             * reference in the array is then made to refer to a new AlienC object. The use of the new
             * keyword to create a new object is said to create a new instance of a class.
             * Note that when a variable of type AlienC is declared, the variable is now a reference to
             * an AlienC, and initially the reference does not refer to anything. */

            AlienC[] swarm = new AlienC[100];
            for (int i = 0; i < swarm.Length; i++)
            {
                /* When we created the alien swarm we had to explicitly set each element in the array
                 * to refer to an AlienC instance */
                swarm[i] = new AlienC(0, 0);
            }

            Console.WriteLine("swarm[0] {0}", swarm[0]);
        }
示例#3
0
    public override void Run(AlienC alien, ServersGraphC serversC, List <Slot> slots, bool isForward)
    {
        if (isForward)
        {
            switch (step)
            {
            case -1:
                slots.Reverse();    //Read from the end.
                d = slots[step + 1].holding;
                if (d.myName == "COM")
                {
                    Animate(alien, serversC, true);
                }
                else
                {
                    alien.GetConfused();
                }
                break;

            case 0:
                serversC.nowAt = serversC.goingTo;
                serversC.nowAt.BucklePath(false);
                d = slots[step + 1].holding;
                if (d.myName == "CITI" || d.myName == "ONLINE")
                {
                    serversC.goingTo = serversC.nowAt.ReturnChild(d.myName);
                    Animate(alien, serversC, true);
                }
                else
                {
                    alien.GetConfused();
                }
                break;

            case 1:
                serversC.nowAt = serversC.goingTo;
                serversC.nowAt.BucklePath(false);
                d = slots[step + 1].holding;
                if (d.myName == "CITI" || d.myName == "ONLINE")
                {
                    serversC.goingTo = serversC.nowAt.ReturnChild(d.myName);
                    Animate(alien, serversC, true);
                }
                else
                {
                    alien.GetConfused();
                }
                break;

            case 2:
                serversC.nowAt = serversC.goingTo;
                serversC.nowAt.BucklePath(false);
                if (d.myName == "CITI")
                {
                    alien.GetExploded(delegate { GetComponent <NetworkWindows>().NextAI(delegate { Feedback.instance.popUp(true, "Challenge5"); }); });
                }
                else if (d.myName == "ONLINE")
                {
                    alien.GetRevenge(delegate { Feedback.instance.popUp(false, "Challenge5"); });
                }
                else
                {
                    alien.GetConfused();
                }
                break;

            default:
                Debug.Log("Shouldn't reach here.@AIGoChallengeFour");
                break;
            }
        }
        else
        {
            if (step > 0)
            {
                d = slots[step - 1].holding;
                serversC.goingTo = serversC.nowAt.ReturnParent();
                Animate(alien, serversC, false);
            }
            else if (step == 0)
            {
                serversC.nowAt   = serversC.goingTo;
                serversC.goingTo = serversC.nowAt.ReturnParent();
                Animate(alien, serversC, false);
            }
            else
            {
                //Reached the launchpad.
                serversC.nowAt   = serversC.goingTo;
                serversC.goingTo = serversC.root;
                alien.isForward  = true;
                slots.Reverse(); //Enable sync.
                Hint();
            }
        }
    }
示例#4
0
 public virtual void Run(AlienC alienC, ServersGraphC serversC, List <Slot> slots, bool isForward)
 {
     Debug.Log("Control the Alien phase.");
 }