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; }
private void Initialize(AlterraShippingTarget shippingContainer, GameObject textPrefab) { target = shippingContainer; _shippingContainerName = textPrefab.GetComponent <Text>(); }