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); }; }
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); }