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; } }
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]); }
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(); } } }
public virtual void Run(AlienC alienC, ServersGraphC serversC, List <Slot> slots, bool isForward) { Debug.Log("Control the Alien phase."); }