static void Main(string[] args) { try { Story story = new MarketStoryWithGreetings(); IStorySettings settings = new StorySettings( DateTime.Now, DateTime.Now.AddHours(3), TimeSpan.FromMinutes(12) ); story.Play(settings); Console.Read(); } catch (Exception ex) { Console.WriteLine("Oops:"); Console.WriteLine(ex.ToString()); } finally { Console.Read(); } }
void SetNextText(bool isPositiveAnswer, bool isImmediatelly = false) { bool isLose; currentStorySettings = GameManager.Instance.StoryManager.GetNextStory(currentStorySettings, isPositiveAnswer, out isLose); if (currentStorySettings != null) { isAnswerButtonsEnabled = false; card.HideText(() => { card.ShowText(currentStorySettings, () => { isAnswerButtonsEnabled = true; }, isImmediatelly); }); } else { EndGamePopup endGamePopup = Instantiate(endGamePopupPrefab, transform); endGamePopup.transform.localPosition = Vector3.zero; endGamePopup.Show("ПРОДОЛЖЕНИЕ СЛЕДУЕТ :)"); PlayerPrefs.DeleteAll(); } StoryManager storyManager = GameManager.Instance.StoryManager; foreach (var parameter in storyManager.ValueByType) { BarInfo barInfo = barsInfo.Find((item) => item.parameterType == parameter.Key); if (barInfo != null) { Image image = barInfo.image; float current = image.fillAmount; float delta = current - (float)parameter.Value / storyManager.MaxValue; if (!Mathf.Approximately(delta, 0f)) { DOTween.To(() => 0f, (value) => { image.fillAmount = current - value * delta; }, 1, 0.1f) .SetId(this); } } } }
public void ShowText(StorySettings storySettings, Action callback, bool isImmediatelly) { Canvas.ForceUpdateCanvases(); foreach (var contentSizeFitter in updatedElements) { LayoutRebuilder.ForceRebuildLayoutImmediate((RectTransform)contentSizeFitter.transform); contentSizeFitter.enabled = false; contentSizeFitter.SetLayoutVertical(); } Vector2 pos = content.anchoredPosition; pos.y = 0; content.anchoredPosition = pos; StartCoroutine(End()); if (storySettings.isPaper) { DOTween.Kill(characterID); characterImage.DOFade(0f, 0.1f).SetId(characterID); backgroundImage.sprite = paperSprite; } else { DOTween.Kill(characterID); characterImage.DOFade(1f, 0.3f).SetId(characterID); backgroundImage.sprite = backgroundSprite; } text.text = storySettings.message; if (storySettings.isMessageOnly) { yesText.enabled = false; noText.enabled = false; } else { yesText.enabled = true; noText.enabled = true; yesText.text = storySettings.positiveAnswerInfo.answerText; noText.text = storySettings.negativeAnswerInfo.answerText; } if (storySettings.sprite != null) { image.sprite = storySettings.sprite; canvasGroup.DOFade(endAlphaValue, 0.4f).SetId(this); } if (isImmediatelly) { DOTween.Complete(characterID); } Color endColor = text.color; endColor.a = 1f; text.DOColor(endColor, 0.3f).SetId(this).OnComplete(() => { if (callback != null) { callback(); } }); }
public StorySettings GetNextStory(StorySettings settings, bool isPositiveAnswer, out bool isLose) { isLose = false; if (settings == null) { if (PlayerPrefs.HasKey("last_story_number")) { int storyNumber = PlayerPrefs.GetInt("last_story_number"); return(allStories[storyNumber]); } int index = allStories.FindIndex((val) => val == firstStory); PlayerPrefs.SetInt("last_story_number", index); return(firstStory); } AnswerInfo answerInfo = isPositiveAnswer ? settings.positiveAnswerInfo : settings.negativeAnswerInfo; isLose = answerInfo.isLose; StorySettings nextStorySettings = answerInfo.nextStorySettings; List <AddedParameterInfo> randomParaments = new List <AddedParameterInfo>(); if (Random.value < 0.7f) { randomParaments.Add(new AddedParameterInfo() { parameterType = ParameterType.Money, value = Random.Range(-1, 2) }); } if (Random.value < 0.5f) { randomParaments.Add(new AddedParameterInfo() { parameterType = ParameterType.Trust, value = Random.Range(-1, 2) }); } if (Random.value < 0.45f) { randomParaments.Add(new AddedParameterInfo() { parameterType = ParameterType.Information, value = Random.Range(-1, 2) }); } if (Random.value < 0.3f) { randomParaments.Add(new AddedParameterInfo() { parameterType = ParameterType.Personalisation, value = Random.Range(-1, 2) }); } if (nextStorySettings != null) { for (int i = 0; i < randomParaments.Count; i++) { if (!valueByType.ContainsKey(randomParaments[i].parameterType)) { valueByType.Add(randomParaments[i].parameterType, 0); } int value = valueByType[randomParaments[i].parameterType]; value = Mathf.Clamp(value + randomParaments[i].value, 0, maxValue); valueByType[randomParaments[i].parameterType] = value; PlayerPrefs.SetInt(randomParaments[i].parameterType.ToString(), value); } int index = allStories.IndexOf(nextStorySettings); if (index >= 0) { PlayerPrefs.SetInt("last_story_number", index); } } return(nextStorySettings); }