예제 #1
0
        public virtual bool UseItem(PlayerController player)
        {
            if (LastUse + Cooltime > Time.time)
            {
                return(false);
            }

            LastUse = Time.time;

            if (player.Stamina < RequiredStamina)
            {
                UIStatusManager.GetInstance()?.AddText("You need to take a rest!", 1.0f);

                return(false);
            }

            player.Stamina -= RequiredStamina;
            if (IsConsumed)
            {
                for (var i = 0; i < player.Inventory.MaxItems; i++)
                {
                    if (player.Inventory.Get(i) != this)
                    {
                        continue;
                    }
                    Count--;
                    player.Inventory.Set(i, (Count == 0) ? null : this);
                    break;
                }
            }

            OnUseItem(player);
            return(true);
        }
예제 #2
0
        public void ExecuteEvents(PlayerController player)
        {
            var date = player.GameManager.DayCounter;

            if (date <= _lastDate)
            {
                return;
            }

            _lastDate = date;

            var letterCount = player.Inventory.GetCount(ItemLetter.Id);

            if (letterCount > 0)
            {
                UIStatusManager.GetInstance()?.AddText("Your outdated letters have been disposed!", 1f);
                player.Inventory.RemoveItem(new ItemLetter(letterCount));
            }

            var dialog = _dialogManager.OpenIfNoneOpened(DialogKey.Note, _dialogManager.note);

            dialog.GetComponent <UINote>().SetDay(player.GameManager.DayCounter);

            if (!_eventTable.TryGetValue(date, out var todayInfo))
            {
                todayInfo = _defaultEvent;
            }

            foreach (var todayEvent in todayInfo.Events)
            {
                todayEvent.OnExecute(player);
            }
        }
        public void Start()
        {
            Craft = new CraftManager(this);

            GameManager = gameManager.GetComponent <GameManager>();
            World       = GameManager.World;

            _statusManager = GameObject.FindGameObjectWithTag("StatusManager")
                             .GetComponent <UIStatusManager>();

            Entities = GameObject.FindGameObjectWithTag("EntityManager")
                       .GetComponent <EntityManager>();

            Controller  = GetComponent <CharacterController>();
            _animator   = GetComponent <Animator>();
            _animMove   = Animator.StringToHash("Move");
            _animAttack = Animator.StringToHash("IsAttack");
        }
        public override void OnInteract(PlayerController player)
        {
            base.OnInteract(player);

            var result = EventManager.GetInstance().ClaimItem(
                player, transform.position + new Vector3(0, 4f, 0),
                out var count
                );

            if (result)
            {
                return;
            }
            if (count > 0)
            {
                UIStatusManager.GetInstance()?.AddText("There were no letters but something came out", 2.5f);
                return;
            }

            UIStatusManager.GetInstance()?.AddText("The postbox is empty.", 1.0f);
        }