Exemplo n.º 1
0
        public override async Task UpdateAsync()
        {
            await base.UpdateAsync();

            if (IsDead)
            {
                myRespawnIn -= DeltaTime;
                OnChanged();
                if (myRespawnIn < TimeSpan.Zero)
                {
                    Respawn();
                }

                return;
            }

            await myWeapon.UpdateAsync();

            try
            {
                Regeneration.Update();
                if (IsAiming)
                {
                    Aim();
                    return;
                }
                var turnAction = GetTurnAction();
                if (turnAction != null)
                {
                    switch (turnAction)
                    {
                    case ShootAtTurnAction shoot:
                        Execute(shoot);
                        break;

                    case MoveTowardsTurnAction moveTowards:
                        Execute(moveTowards);
                        break;

                    case MoveAwayFromTurnAction moveAway:
                        Execute(moveAway);
                        break;

                    case PickUpResourceTurnAction pickUpResource:
                        Execute(pickUpResource);
                        break;

                    case DropDownResourceTurnAction dropDownResource:
                        Execute(dropDownResource);
                        break;

                    case PickUpWeaponTurnAction pickUpAmmo:
                        Execute(pickUpAmmo);
                        break;

                    case EquipWeaponTurnAction equipWeapon:
                        Execute(equipWeapon);
                        break;

                    case PickUpFirstAidKitTurnAction pickUpFirstAidKit:
                        Execute(pickUpFirstAidKit);
                        break;
                    }
                }
            }
            catch
            {
                // ignored
            }
        }