public void AddTopping(topping topping) { if (this.toppings.Count == 10) { throw new ArgumentException("Number of toppings should be in range [0..10]."); } this.toppings.Add(topping); }
//Topping follows hand. Release if you throw away topping or hover over pizza void hold_topping() { //topping follows hand cur_topping.gameObject.transform.position = gameObject.transform.position; float xDist_pizza = Mathf.Abs(gameObject.transform.position.x - pizza.transform.position.x); float yDist_pizza = Mathf.Abs(gameObject.transform.position.y - pizza.transform.position.y); if (xDist_pizza < .15f && yDist_pizza < .15f) { // print ("on pizza"); if (!set) { usage = Time.time + 1f; set = true; } if (Time.time > usage) //time has lapsed so drop topping on pizza { set = false; next_state = State.empty; topping top = cur_topping.GetComponent <topping>(); top.onPizza = true; } } else { set = false; next_state = State.hold_topping; } topping topHeld = cur_topping.GetComponent <topping>(); float xDist_spawn = Mathf.Abs(gameObject.transform.position.x - topHeld.toppingSpawn.x); float yDist_spawn = Mathf.Abs(gameObject.transform.position.y - topHeld.toppingSpawn.y); if (xDist_spawn < .15f && yDist_spawn < .15f) { //print ("put back"); if (!toppingResetSet) { toppingResetUsage = Time.time + putBackDelay; toppingResetSet = true; } if (Time.time > toppingResetUsage) { toppingResetSet = false; next_state = State.empty; topping top = cur_topping.GetComponent <topping>(); top.inHand = false; top.transform.position = top.toppingSpawn; sets[cur_topping_int] = false; for (int i = 0; i < toppings.Length; i++) { sets[i] = false; } } } }
public override void customerQuery() { base.customerQuery(); Console.WriteLine("Ukuran yang dipilih, S, M, atau L?"); bool ukuranBetul = false; while (ukuranBetul == false) { string sizes = Console.ReadLine(); if (string.Equals(sizes, "s", StringComparison.OrdinalIgnoreCase)) { this.size = Size.S; ukuranBetul = true; } else if (string.Equals(sizes, "m", StringComparison.OrdinalIgnoreCase)) { this.size = Size.M; ukuranBetul = true; } else if (string.Equals(sizes, "l", StringComparison.OrdinalIgnoreCase)) { this.size = Size.L; ukuranBetul = true; } else { Console.WriteLine("Input yang anda masukkan salah! Coba Lagi."); } } Console.WriteLine("Apakah ingin memesan menggunakan tumblr(y/n)?"); bool tumblrBetul = false; while (tumblrBetul == false) { string Tumblr = Console.ReadLine(); if (string.Equals(Tumblr, "y", StringComparison.OrdinalIgnoreCase)) { this.bawaTumblr = true; tumblrBetul = true; } else if (string.Equals(Tumblr, "n", StringComparison.OrdinalIgnoreCase)) { this.bawaTumblr = false; tumblrBetul = true; } else { Console.WriteLine("Input yang anda masukkan salah! Coba Lagi."); } } Console.WriteLine("Ingin tambah topping apa?"); Console.WriteLine("1: caramel sauce, 2:whipppedcream, 3:chocolate sauce"); bool toppingBetul = false; while (toppingBetul == false) { string Topping = Console.ReadLine(); if (string.Equals(Topping, "1", StringComparison.OrdinalIgnoreCase)) { this.Topping = topping.caramel; toppingBetul = true; } else if (string.Equals(Topping, "2", StringComparison.OrdinalIgnoreCase)) { this.Topping = topping.cream; toppingBetul = true; } else if (string.Equals(Topping, "3", StringComparison.OrdinalIgnoreCase)) { this.Topping = topping.chocosauce; toppingBetul = true; } else { Console.WriteLine("Input yang anda masukkan salah! Coba Lagi."); } } }
//nothing in hand. Hover over topping or pizza to change state. void empty() { int i = 0; foreach (GameObject topping in toppings) { topping top = topping.GetComponent <topping> (); if (!top.onPizza) { float xDist_top = Mathf.Abs(gameObject.transform.position.x - topping.transform.position.x); float yDist_top = Mathf.Abs(gameObject.transform.position.y - topping.transform.position.y); //float dist = Vector3.Distance(gameObject.transform.position, topping.transform.position); if (xDist_top < .15f && yDist_top < .15f) { //print ("on topping"); //hover over topping to grab if (!sets[i]) { //print ("set time for " + topping.name); usages[i] = Time.time + delay; sets[i] = true; } if (Time.time > usages[i]) //successfully grabbed topping { sets[i] = false; cur_topping = topping; cur_topping_int = i; next_state = State.hold_topping; //print ("grabbed it"); return; } } else //you exited topping before grabbing //print ("exited topping"); { sets[i] = false; next_state = State.empty; } } i++; } //pizza float xDist_pizza = Mathf.Abs(gameObject.transform.position.x - pizza.transform.position.x); float yDist_pizza = Mathf.Abs(gameObject.transform.position.y - pizza.transform.position.y); //float pizzaDist = Vector3.Distance (gameObject.transform.position, pizza.transform.position); //print ("pizza distance " + pizzaDist); if (xDist_pizza < .15f && yDist_pizza < .15f) { //print ("on pizza"); if (!pizzaSet) { //print ("set time for pizza"); pizzaUsage = Time.time + delay; pizzaSet = true; } if (Time.time > pizzaUsage) { pizzaSet = false; next_state = State.hold_pizza; //print ("grabbed pizza"); return; } } else { //print ("exited pizza"); pizzaSet = false; next_state = State.empty; } //phone if (phone.GetComponent <phone> ().cur_state == PhoneState.ringing) { float xDist_phone = Mathf.Abs(gameObject.transform.position.x - phone.transform.position.x); float yDist_phone = Mathf.Abs(gameObject.transform.position.y - phone.transform.position.y); if (xDist_phone < .15f && yDist_phone < .15f) { //print ("on phone"); if (!phoneSet) { // print ("set time for phone"); phoneUsage = Time.time + delay; phoneSet = true; } if (Time.time > phoneUsage) { // print ("phone answered"); phoneSet = false; next_state = State.empty; phone talk = phone.GetComponent <phone> (); talk.next_state = PhoneState.busy; next_state = State.empty; return; } } else { next_state = State.empty; phoneSet = false; } } }
void hold_pizza() { //print ("holding pizza"); pizza.gameObject.transform.position = gameObject.transform.position; //let go over oven float xDist_oven = Mathf.Abs(gameObject.transform.position.x - oven.transform.position.x); float yDist_oven = Mathf.Abs(gameObject.transform.position.y - oven.transform.position.y); if (xDist_oven < .15f && yDist_oven < .15f) { // print ("in oven"); if (!ovenSet) { ovenUsage = Time.time + delay; ovenSet = true; } if (Time.time > ovenUsage) { ovenSet = false; oven cook = oven.GetComponent <oven>(); cook.next_state = ovenState.cooking; next_state = State.empty; scoreSystem.scoreUpdate(); foreach (var top in toppings) { topping onTop = top.GetComponent <topping>(); if (onTop.onPizza) { onTop.inOven = true; onTop.onPizza = false; onTop.resetPosition(); } } for (int i = 0; i < scoreSystem.wantedToppings.Count; i++) { scoreSystem.wantedToppings[i] = false; } } } //go in trash float xDist_trash = Mathf.Abs(gameObject.transform.position.x - trash.transform.position.x); float yDist_trash = Mathf.Abs(gameObject.transform.position.y - trash.transform.position.y); if (xDist_trash < .15f && yDist_trash < .15f) { //print ("throw away"); if (!trashSet) { trashUsage = Time.time + delay; trashSet = true; } if (Time.time > trashUsage) { foreach (var top in toppings) { var topHand = top.GetComponent <topping>(); topHand.resetPosition(); } next_state = State.empty; trashSet = false; pizza.transform.position = pizzaSpawn; trash.GetComponent <AudioSource>().audio.Play(); } } float xDist_counter = Mathf.Abs(gameObject.transform.position.x - pizzaSpawn.x); float yDist_counter = Mathf.Abs(gameObject.transform.position.y - pizzaSpawn.y); if (xDist_counter < .15f && yDist_counter < .15f) { //print ("put back"); if (!counterSet) { counterUsage = Time.time + putBackDelay; counterSet = true; } if (Time.time > counterUsage) { next_state = State.empty; counterSet = false; pizza.transform.position = pizzaSpawn; } } }