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); }
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); }
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 = "-"; }
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); }
private void OnVehicleSelectClick(TransportVehicleData transportVehicleData) { SelectedTransportVehicleData = transportVehicleData; OnVehicleSelect?.Invoke(SelectedTransportVehicleData); }