private void OnSelection(SituationsManager.SelectionChoice selection) { foreach (var item in selection.int_effects) { GameManager.instance.int_stats[item.stat] += item.value; } foreach (var item in selection.bool_effects) { GameManager.instance.boolean_stats[item.stat] = item.value; } GameManager.instance.situations_manager.current_situation.duration += selection.time_investment; if (selection.sound != null) { GameManager.instance.audio_source.PlayOneShot(Resources.Load <AudioClip>("Sounds/" + selection.sound)); Debug.Log("Playing audio " + selection.sound); } //GameManager.instance.situations_manager.OnStepFinish(); end dialogue does it for now GameManager.instance.situations_manager.current_situation.current_step.next_step = selection.next_step; GameManager.instance.ui_opened = false; GameManager.instance.dialogue_manager.EndDialogue(); foreach (Transform child in selection_list.transform) { Destroy(child.gameObject); } }
internal void LoadEvent(JSONObject json) { GameManager.instance.ui_opened = true; close_button.interactable = GameManager.instance.boolean_stats["Shop"]; accept_button.interactable = false; foreach (Transform child in shopping_list.transform) { Destroy(child.gameObject); } JSONObject options = json.GetField("options"); foreach (JSONObject j_option in options.list) { SituationsManager.SelectionChoice selection = JsonUtility.FromJson <SituationsManager.SelectionChoice>(j_option.ToString()); selection.int_requirements = new List <GameManager.Stat <int> >(); selection.bool_requirements = new List <GameManager.Stat <bool> >(); j_option.GetField("stat_requirement", delegate(JSONObject stat_requirement) { foreach (JSONObject j_req in stat_requirement.list) { if (j_req.GetField("value").IsBool) { selection.bool_requirements.Add(JsonUtility.FromJson <GameManager.Stat <bool> >(j_req.ToString())); } else { selection.int_requirements.Add(JsonUtility.FromJson <GameManager.Stat <int> >(j_req.ToString())); } } }, delegate(string name) { }); selection.int_effects = new List <GameManager.Stat <int> >(); selection.bool_effects = new List <GameManager.Stat <bool> >(); j_option.GetField("effect", delegate(JSONObject effects) { foreach (JSONObject j_eff in effects.list) { if (j_eff.GetField("value").IsBool) { selection.bool_effects.Add(JsonUtility.FromJson <GameManager.Stat <bool> >(j_eff.ToString())); } else { selection.int_effects.Add(JsonUtility.FromJson <GameManager.Stat <int> >(j_eff.ToString())); } } }, delegate(string name) { Debug.Log("No effects found on"); }); CreateShoppingSelection(selection); } }
private void CreateShoppingSelection(SituationsManager.SelectionChoice selection) { GameObject selection_go = Instantiate(shopping_selection_prefab); selection_go.GetComponentInChildren <Text>().text = selection.text; bool booleans_check = true; bool ints_check = true; foreach (var item in selection.bool_requirements) { if (GameManager.instance.boolean_stats[item.stat] != item.value) { booleans_check = false; break; } } foreach (var item in selection.int_requirements) { if (GameManager.instance.int_stats[item.stat] < item.value) { ints_check = false; break; } } if (!booleans_check || !ints_check) { selection_go.GetComponent <Toggle>().interactable = false; } selection_go.transform.SetParent(shopping_list.transform, false); selection_go.transform.DOPunchScale(new Vector3(0.1f, 0.5f, 0.0f), 1.0f, 3); selection_go.GetComponent <Toggle>().onValueChanged.AddListener(delegate { OnSelection(); }); toggles.Add(selection_go.GetComponent <Toggle>(), selection); }
internal void CreateSelection(SituationsManager.SelectionChoice selection) { GameObject selection_go = Instantiate(selection_prefab); selection_go.GetComponentInChildren <Text>().text = selection.text; foreach (var item in selection.bool_requirements) { if (GameManager.instance.boolean_stats[item.stat] != item.value) { selection_go.GetComponent <Image>().color = Color.gray; selection_go.GetComponent <Button>().interactable = false; RawImage img = selection_go.GetComponentInChildren <RawImage>(); img.texture = emojis[item.stat]; img.enabled = true; break; } } foreach (var item in selection.int_requirements) { if (GameManager.instance.int_stats[item.stat] < item.value) { selection_go.GetComponent <Image>().color = Color.gray; selection_go.GetComponent <Button>().interactable = false; RawImage img = selection_go.GetComponentInChildren <RawImage>(); img.texture = emojis[item.stat]; img.enabled = true; break; } } foreach (var item in selection.int_effects) { GameObject eff_obj = Instantiate(Resources.Load <GameObject>("UI/Effect_Image"), selection_go.transform.GetChild(2)); float scale = 1; if (item.stat.Equals("Health")) { eff_obj.GetComponent <RawImage>().texture = item.value > 0 ? Resources.Load <Texture>("UI/Health_Positive"): Resources.Load <Texture>("UI/Health"); if (Math.Abs(item.value) < 2.0) { scale = 0.5f; } } else { eff_obj.GetComponent <RawImage>().texture = item.value > 0 ? Resources.Load <Texture>("UI/green_face") : Resources.Load <Texture>("UI/Positivism"); if (Math.Abs(item.value) < 2.0) { scale = 0.5f; } else if (Math.Abs(item.value) >= 4) { scale = 1.5f; } } eff_obj.transform.localScale = new Vector3(scale, scale, 1); } selection_go.GetComponent <Button>().onClick.AddListener(delegate { OnSelection(selection); }); selection_go.transform.SetParent(selection_list.transform, false); }