private void Start()
    {
        _transportRouteManager = FindObjectOfType <GameHandler>().TransportRouteManager;
        _userNotificationView  = FindObjectOfType <UserNotificationView>();
        vehicleChoiceSubView.Initialize();
        vehicleChoiceSubView.OnVehicleSelect += transportVehicleData => _routeToggle.interactable = transportVehicleData;
        SettingController.Initialize();
        _stationManager.RouteCreationView = this;

        _showButton.onClick.AddListener(delegate { SetVisible(true); });
        _exitButton.onClick.AddListener(delegate
        {
            SetVisible(false);
            Reset();
        });

        _routeToggle.onValueChanged.AddListener(delegate(bool value)
        {
            vehicleChoiceSubView.VehicleChoiceVisibleGameObject.SetActive(!value);
            _stationManager.RouteElementVisibleGameObject.SetActive(value);
            if (value)
            {
                TransportVehicleData transportVehicleData = vehicleChoiceSubView.SelectedTransportVehicleData;
                SettingController.OnShow(transportVehicleData != null ? transportVehicleData.MaxCapacity : -1);
            }
            else
            {
                SettingController.Reset();
            }
        });
        _createButton.onClick.AddListener(CreateRoute);
        _applyButton.onClick.AddListener(SaveRouteChanges);
    }
Beispiel #2
0
    public List <TransportRouteElement> FindPath(TransportVehicleData transportVehicleData,
                                                 List <TransportRouteElement> transportRouteElements)
    {
        AbstractPathFindingAlgorithm _pathFinder = _pathFindingAlgorithms[transportVehicleData.PathType];

        foreach (TransportRouteElement transportRouteElement in transportRouteElements)
        {
            IPathNode pathNode = transportRouteElement.FromNode as IPathNode;
            Path      path;
            if (pathNode != null)
            {
                path = pathNode.PathTo(transportRouteElement.ToNode);
                if (path == null)
                {
                    path = _pathFinder.FindPath(transportRouteElement.FromNode, transportRouteElement.ToNode);
                    pathNode.AddPath(transportRouteElement.ToNode, path);
                }
            }
            else
            {
                path = _pathFinder.FindPath(transportRouteElement.FromNode, transportRouteElement.ToNode);
            }
            transportRouteElement.Path = path;
        }
        return(transportRouteElements);
    }
Beispiel #3
0
 private void UpdateUi(TransportVehicleData transportVehicleData)
 {
     _vehicleChoiceTitleText.text = transportVehicleData ? transportVehicleData.VehicleName : "Vehicle Choice";
     _speedText.text       = transportVehicleData ?  transportVehicleData.MaxSpeed.ToString() : "-";
     _strengthText.text    = "-";
     _capacityText.text    = transportVehicleData ?  transportVehicleData.MaxCapacity.ToString() : "-";
     _unloadSpeedText.text = "-";
     _costText.text        = "-";
     _dailyCostText.text   = "-";
 }
Beispiel #4
0
    public TransportVehicle AddVehicle(TransportVehicleData transportVehicleData, Vector3 position, Vector3 eulerAngle = default(Vector3))
    {
        // Instantiate root game object
        GameObject rootGameObject = new GameObject(transportVehicleData.VehicleName);

        rootGameObject.transform.parent   = _sceneObject.transform;
        rootGameObject.transform.position = position;
        rootGameObject.transform.rotation = Quaternion.Euler(eulerAngle);
        // Instantiate model object and set as a child of the root
        GameObject.Instantiate(transportVehicleData.Model, rootGameObject.transform);
        // Add & Setup Collider
        BoxCollider boxCollider = rootGameObject.AddComponent <BoxCollider>();

        boxCollider.center = transportVehicleData.ColliderInfo.center;
        boxCollider.size   = transportVehicleData.ColliderInfo.size;
        // Add & Setup Mover
        RouteMover routeMover = rootGameObject.AddComponent <RouteMover>();

        routeMover.PathType          = transportVehicleData.PathType;
        routeMover.MaxSpeed          = transportVehicleData.MaxSpeed;
        routeMover.AccelerationCurve = transportVehicleData.AccelerationCurve;
        routeMover.DecelerationCurve = transportVehicleData.DecelerationCurve;
        // Add & Setup Mover
        TransportVehicle transportVehicle = rootGameObject.AddComponent <TransportVehicle>();

        transportVehicle.VehicleName = transportVehicleData.VehicleName;
        transportVehicle.MaxSpeed    = transportVehicleData.MaxSpeed;
        transportVehicle.MaxCapacity = transportVehicleData.MaxCapacity;
        transportVehicle.Sprite      = transportVehicleData.Sprite;
        transportVehicle.RouteMover  = routeMover;

        if (transportVehicleData.PathType.Equals(PathType.Rail))
        {
            WaypointMoverFollower _waypointMoverFollower = rootGameObject.AddComponent <WaypointMoverFollower>();
            _waypointMoverFollower.MoverTransform          = GameObject.Instantiate(Resources.Load <GameObject>("Prefabs/Transportation/Vehicle/Trailer/ContainerTrailer")).transform;
            _waypointMoverFollower.MoverTransform.position = position;
        }

        InstancedVehicleList.Add(rootGameObject);
        return(transportVehicle);
    }
Beispiel #5
0
 private void OnVehicleSelectClick(TransportVehicleData transportVehicleData)
 {
     SelectedTransportVehicleData = transportVehicleData;
     OnVehicleSelect?.Invoke(SelectedTransportVehicleData);
 }