} //Stock of product //Handle objects interactions w/ Workshop //Return wether the object is taken from tavernkeeper public override bool use(GameObject userObject) { if (userObject != null) { // Debug.Log(userObject.tag); //TODO : Gérer Grabable qui ne sont pas des mugs ? if (userObject.tag == "Grabable" && currentMug is null) //Try to stock Mug into workshop { Mug mug = userObject.GetComponent <Mug>(); if (mug != null && mug.content is null && !mug.dirty && Stock > 0) //Mug clean & empty + remaining stock in workshop { Debug.Log(userObject.name + " stocked in " + gameObject.name); mug.take(); currentMug = userObject; if (UIPrepTimer != null) //Display UI prep timer { prepTimer = 0.0f; UIPrepTimer.SetValue(prepTimer / prepTime); UIPrepTimer.DisplayIcon(product_sprite); UIPrepTimer.gameObject.SetActive(true); } return(true); //Object taken } else { Debug.Log(userObject.name + " cannot be filled with " + product_name + " -stock:" + Stock); } } else if (userObject.tag == "Player" && prepTimer < prepTime && currentMug != null) //Prepare currentMug { continueUse(userObject); } else if (userObject.tag == "Player" && prepTimer >= prepTime) //Give tavernkeeper currentMug if finished preparation { Tavernkeeper_controller player = userObject.GetComponent <Tavernkeeper_controller>(); Mug mug = currentMug.GetComponent <Mug>(); if (player != null && mug != null) { Debug.Log(gameObject.name + " give " + currentMug.name + " filled with " + product_name + " to " + userObject.name); //Fill mug mug.fill(new Consumable(product_name, product_value, product_sprite)); Stock--; UIPrepTimer.gameObject.SetActive(false); //Turn off UI prep timer //Give mug player.grab(currentMug); currentMug = null; } } }
//TODO : Trigger falling animation on tavernkeeper void OnTriggerEnter2D(Collider2D other) { if (other.tag == "Player") { player = other.GetComponent <Tavernkeeper_controller>(); player.mvt_speed = player.mvt_speed / mvtSlow; //Slow movement speed if (Random.Range(0.0f, 99.9f) < effectChance) { Debug.Log("Woops"); player.emptyHands(); } } }
//Handle continuous interaction w/ Workshop protected void continueUse(GameObject userObject) { Debug.Log(gameObject.name + " still used by " + userObject.name); if (interactionCd < 0.01f) //No interaction CD => Try to set it up { Tavernkeeper_controller player = userObject.GetComponent <Tavernkeeper_controller>(); if (player != null) { interactionCd = player.action_cd * (1.0f + interactionSmoothing); //=action_cd+ interactionSmoothing(%) action_cd (for smooth continued interaction) } else { Debug.LogWarning(userObject.name + " cannot have a continuous interaction on " + gameObject.name); } } playerInteracting = true; //Set interaction indicator cdTimer = interactionCd; //Reset Interaction CD }
List <GameObject> stock = new List <GameObject>(); //List of mug in workshop //Handle objects interactions w/ Workshop //Return wether the object is taken from tavernkeeper public override bool use(GameObject userObject) { if (userObject != null) { //TODO : Gérer grabable autre que Mug if (userObject.tag == "Grabable") { //Stock mug Mug mug = userObject.GetComponent <Mug>(); if (mug != null) { Debug.Log(userObject.name + " stocked in " + gameObject.name); mug.take(); stock.Add(userObject); return(true); //Object taken } } else if (userObject.tag == "Player" && prepTimer < prepTime && currentMug != null) //Prepare currentMug { continueUse(userObject); } else if (userObject.tag == "Player" && prepTimer >= prepTime && currentMug != null) //Give tavernkeeper currentMug if cleaned { Tavernkeeper_controller player = userObject.GetComponent <Tavernkeeper_controller>(); Mug mug = currentMug.GetComponent <Mug>(); if (player != null && mug != null) { // Debug.Log(gameObject.name+" give "+currentMug.name+" to "+userObject.name); //Clean mug mug.dirty = false; //Give mug player.grab(currentMug); currentMug = null; UIPrepTimer.gameObject.SetActive(false); //Turn off UI prep timer } } } return(false); }
bool gameRunning = true; //Wehter the game is running (for clean-up purpose) //Handle objects interactions w/ obstacle //Return wether the object is taken from tavernkeeper public bool use(GameObject userObject) { //Handle continuous interaction w/ tavernkeeper if (userObject.tag == "Player") { if (stopTimer < stopTime) //Continue to stop fight { Debug.Log(gameObject.name + " still used by " + userObject.name); if (interactionCd < 0.01f) //No interaction CD ? { user_renderer = userObject.GetComponent <SpriteRenderer>(); //Renderer for visual effects //Reset interaction CD Tavernkeeper_controller player = userObject.GetComponent <Tavernkeeper_controller>(); if (player != null) { interactionCd = player.action_cd * (1.0f + interactionSmoothing); //=action_cd+ interactionSmoothing(%) action_cd (for smooth continued interaction) } else { Debug.LogWarning(userObject.name + " cannot have a continuous interaction on " + gameObject.name); } } playerInteracting = true; //Set interaction indicator cdTimer = interactionCd; //Reset Interaction CD //Visual effect (user disappear) if (user_renderer != null) { user_renderer.color = Color.clear; } } else //Fight stopped { Destroy(gameObject); } } return(false); //No object taken }