Example #1
0
        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();
            }
        }
Example #2
0
    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);
                }
            }
        }
    }
Example #3
0
    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();
            }
        });
    }
Example #4
0
    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);
    }