Exemple #1
0
    public void CreateTodo(TodoCardData data)
    {
        if (data.Location == LocationType.Null)
        {
            Debug.LogWarning($"Wrong {nameof(LocationType)} passed to {nameof(CreateCard)}");
            return;
        }

        var todo = new Todo(data.IsExpirable, data.IsInternal, data.ExpiryTime + StatusManager.Instance.CurrentTime);

        _listTodo.Add(todo);

        todo.OnExpire += () => {
            foreach (var ev in data.FailedEvent)
            {
                ProcessEvent(ev);
            }

            _listTodo.Remove(todo);
        };

        var cardController = DrawTodo(data);

        cardController.OnClick += () => {
            if (!Operatable || GameMaster.Instance.IsGameOver)
            {
                return;
            }

            if (data.Cost)
            {
                StatusManager.Instance.ApplyStatusChange(data.Cost);
            }

            foreach (var ev in data.FulFillEvent)
            {
                ProcessEvent(ev);
            }

            _listTodo.Remove(todo);
        };
    }
Exemple #2
0
    private CardController DrawTodo(TodoCardData data)
    {
        var panel           = _dicLocationPanel[data.Location];
        var pos             = _dicRefPos[$"{panel}TodoRefPos"].position;
        var parentTransform = _dicRefPos[$"{panel}CardContainer"];
        var cardIndex       = _listTodoCards.Count;

        pos += new Vector3(0f, -Config.CardVerticalStep * cardIndex * 0f, 0f);

        var newCard        = Instantiate(TodoPrefab, pos, Quaternion.identity, parentTransform);
        var cardController = newCard.GetComponent <CardController>();

        cardController.name = data.name;
        cardController.BelongingLocation = data.Location;
        cardController.PinPos            = pos;
        cardController.GetComponentInChildren <TextMeshProUGUI>().text = data.Name;
        _listTodoCards.Add(cardController);

        return(cardController);
    }