Exemplo n.º 1
0
        public static AlterraShippingNameController Create(AlterraShippingTarget shippingContainer, GameObject textPrefab)
        {
            var alterraShippingNameController = textPrefab.GetComponent <AlterraShippingNameController>();

            alterraShippingNameController.Initialize(shippingContainer, textPrefab);
            return(alterraShippingNameController);
        }
        internal bool SendItems(ItemsContainer items, AlterraShippingTarget target)
        {
            QuickLogger.Debug($"Starting Transfer to {target.GetInstanceID()}", true);
            QuickLogger.Debug($"Target Found: {target.Name}", true);
            QuickLogger.Debug($"Target IsReceivingTransfer: {target.IsReceivingTransfer}", true);

            if (_mono == null)
            {
                _mono = gameObject.GetComponent <AlterraShippingTarget>();
            }

            if (!target.IsReceivingTransfer)
            {
                QuickLogger.Debug($"Starting Transfer to {target.Name}", true);
                _target = target;
                _items  = items;
                _done   = false;
                _target.IsReceivingTransfer = true;
                _currentTime = GetTime(_target);
                _target.OnReceivingTransfer?.Invoke();
            }
            else
            {
                QuickLogger.Message(string.Format(AlterraShippingBuildable.TargetIsShipping(), _target.Name), true);
            }

            return(true);
        }
        private float GetTime(AlterraShippingTarget target)
        {
            var dist = Vector3.Distance(target.transform.position, _mono.transform.position);

            QuickLogger.Debug($"Distance to other: {dist}", true);
            var km   = MeterToKilometer(dist);
            var time = DistanceToTime(km, _botSpeedInKmh);

            return(HourToSeconds(time));
        }
        private void PendTransfer()
        {
            if (Mathf.CeilToInt(_currentTime) == 0)
            {
                _done = true;

                QuickLogger.Debug($"Done: {_done}");

                var listOfItems = _items.ToList();

                for (int i = 0; i < _items.count; i++)
                {
                    _itemsToRemove.Add(listOfItems[i].item);
                }

                foreach (Pickupable pickupable in _itemsToRemove)
                {
                    if (_target.HasRoomFor(pickupable))
                    {
                        _mono.RemoveItem(pickupable);
                        _target.AddItem(new InventoryItem(pickupable));
                    }
                }

                ErrorMessage.AddMessage($"[{_target.Name} Message]: Shipment has arrived!");

                _itemsToRemove.Clear();
                _target.Recieved = true;
                _currentTime     = ResetTime;
                _mono.OnItemSent?.Invoke();
                _target.OnItemSent?.Invoke();
                _target.IsReceivingTransfer = false;

                _items  = null;
                _target = null;
            }
            else
            {
                _currentTime -= 1 * DayNightCycle.main.deltaTime;
            }

            if (_target != null)
            {
                _target.OnTimerChanged?.Invoke(TimeConverters.SecondsToHMS(_currentTime));
            }
            _mono.OnTimerChanged?.Invoke(TimeConverters.SecondsToHMS(_currentTime));
        }
        private IEnumerator FindTarget(string currentTarget)
        {
            while (!_done && _currentTime > 0 && _target == null)
            {
                if (string.IsNullOrEmpty(currentTarget))
                {
                    break;
                }

                foreach (var target in ShippingTargetManager.GlobalShippingTargets)
                {
                    QuickLogger.Debug($"Target: {target.GetInstanceID()} located");
                    if (target.GetPrefabIdentifier() == currentTarget)
                    {
                        _target = target;
                    }
                }

                QuickLogger.Debug("No Target Found!", true);

                yield return(null);
            }
        }
 internal void SetMono(AlterraShippingTarget mono)
 {
     _mono = mono;
 }
Exemplo n.º 7
0
 private void Initialize(AlterraShippingTarget shippingContainer, GameObject textPrefab)
 {
     target = shippingContainer;
     _shippingContainerName = textPrefab.GetComponent <Text>();
 }