public void SendDroneToResBox(ResourcesBox rbox) { if (rbox == null) { return; } CargoDrone drone = null; foreach (CargoDrone c in transportDrones) { if (c.gameObject.activeSelf == false || c.target == null) { drone = c; break; } } if (drone == null) { drone = transportDrones[(int)Random.value * (transportDrones.Length - 1)]; } if (drone != null) { drone.target = rbox; if (!drone.gameObject.activeSelf) { drone.transform.position = transform.TransformPoint(droneHangarPos); drone.gameObject.SetActive(true); } drone.changeDestinationAfterHaul = true; } }
public void FormatResources(GlobalData data) { if (data.Inventory == null) { return; } ResourcesBox.Update(); }
public void RemoveLootPoint(ResourcesBox rb) { if (rb == null || plannedLootPoints == null || plannedLootPoints.Count == 0) { return; } for (int i = 0; i < plannedLootPoints.Count; i++) { if (plannedLootPoints[i] == rb) { plannedLootPoints[i].isActiveLootPoint = false; plannedLootPoints.RemoveAt(i); } } }
public ResourcesBox GetLootPoint() { if (plannedLootPoints == null || plannedLootPoints.Count == 0) { return(null); } ResourcesBox answer = null; for (int i = 0; i < plannedLootPoints.Count; i++) { if (plannedLootPoints[i].BitmasksConjuction() == 0) { plannedLootPoints[i].isActiveLootPoint = false; plannedLootPoints.RemoveAt(i); } else { answer = plannedLootPoints[i]; break; } } return(answer); }
void Update() { if (GameMaster.isPaused() || depot == null) { return; } if (timer > 0) { timer -= Time.deltaTime; myRenderer.enabled = true; return; } if (content != null) { if (Vector3.Distance(transform.position, depot.transform.position) < CONTACT_DISTANCE) { if (depot.LoadItemFromDrone(content) == true) { content = null; timer = UNLOAD_SPEED; myRenderer.enabled = false; } } else //плыть к носителю { transform.rotation = Quaternion.LookRotation(depot.transform.position - transform.position, Vector3.up); float dist = Vector3.Distance(transform.position, depot.transform.position); if (dist < speed * Time.deltaTime) { transform.Translate(Vector3.forward * dist); } else { transform.Translate(Vector3.forward * speed * Time.deltaTime); } } } else //пустой { if (target != null && target.isActiveLootPoint) { // плыть к "руднику" if (Vector3.Distance(transform.position, target.transform.position) < CONTACT_DISTANCE) //грузим на борт { content = target.Extract(); if (content != null) { timer = target.extractionSpeed; myRenderer.enabled = false; } else { target = null; } if (changeDestinationAfterHaul) { target = depot.GetLootPoint(); changeDestinationAfterHaul = false; } } else { transform.rotation = Quaternion.LookRotation(target.transform.position - transform.position, Vector3.up); float dist = Vector3.Distance(transform.position, target.transform.position); if (dist < speed * Time.deltaTime) { transform.Translate(Vector3.forward * dist); } else { transform.Translate(Vector3.forward * speed * Time.deltaTime); } } } else // нет цели { target = depot.GetLootPoint(); if (target == null) { if (Vector3.Distance(transform.position, depot.transform.position) < CONTACT_DISTANCE) { timer = 0; gameObject.SetActive(false); } else //плыть к носителю { transform.rotation = Quaternion.LookRotation(depot.transform.position - transform.position, Vector3.up); float dist = Vector3.Distance(transform.position, depot.transform.position); if (dist < speed * Time.deltaTime) { transform.Translate(Vector3.forward * dist); } else { transform.Translate(Vector3.forward * speed * Time.deltaTime); } } } } } }
void Update() { if (GameMaster.isPaused()) { return; } sw = Screen.width; sh = Screen.height; k = sh / 24; GameMaster.SetGUIPiece(k); mousePos = Input.mousePosition; mousePos.y = sh - mousePos.y; if (GameMaster.isPaused()) { return; } if (Input.GetMouseButtonDown(0)) { Ray r = Camera.main.ScreenPointToRay(new Vector3(Input.mousePosition.x, Input.mousePosition.y)); RaycastHit rh; var waterLayerMask = 1 << 4; //water layer waterLayerMask = ~waterLayerMask; if (Physics.Raycast(r, out rh, PlayerController.player.shortRangeScanner, waterLayerMask)) { GameObject target = rh.collider.transform.root.gameObject; chosenResBox = target.GetComponent <ResourcesBox>(); if (chosenResBox != null) { updateResBoxData = true; } } } if (Input.GetKeyDown("m")) { if (mapIsActive) { foreach (GameObject g in mapCells) { g.SetActive(false); } shipMarker.SetActive(false); mapIsActive = false; } else { if (mapCells == null) { GameMaster.designer.CreateMap(ref mapCells, UI_RENDER_LAYER, out distanceCoefficient); shipMarker = Instantiate(Resources.Load <GameObject>("shipMarker_pref")) as GameObject; shipMarker.transform.parent = UI_camera; //shipMarker.transform.localScale = Vector3.one * radius; shipMarker.transform.localRotation = Quaternion.Euler(0, 0, PlayerController.player.transform.rotation.eulerAngles.y * (-1)); shipMarker.layer = UI_RENDER_LAYER; shipMarker.SetActive(false); } foreach (GameObject g in mapCells) { g.SetActive(true); } shipMarker.SetActive(true); mapIsActive = true; } } if (mapIsActive) { Vector3 delta = ScenarioManager.scenarist.GetPlayerPosition() - GameMaster.designer.GetHex(0, 0).GetWorldPosition(); delta.y = delta.z; delta.z = -0.005f; shipMarker.transform.localPosition = mapCells[0].transform.localPosition + delta * distanceCoefficient; shipMarker.transform.localRotation = Quaternion.Euler(0, 0, PlayerController.player.transform.eulerAngles.y * (-1)); } }
public void AddLootPoint(ResourcesBox source) { if (source == null || source.extractionBitmask == 0 || transportDrones.Length == 0) { return; } if (plannedLootPoints.Count > 0) { foreach (ResourcesBox rb in plannedLootPoints) { if (rb == source) { return; } } } plannedLootPoints.Add(source); source.isActiveLootPoint = true; if (source.workingDrones > 0) { int activeDronesCount = 0; foreach (CargoDrone c in transportDrones) { if (c.gameObject.activeSelf) { activeDronesCount++; } } if (activeDronesCount < transportDrones.Length) { int newActiveDronesCount = activeDronesCount + source.workingDrones; if (newActiveDronesCount > transportDrones.Length) { newActiveDronesCount = transportDrones.Length; foreach (CargoDrone c in transportDrones) { if (!c.gameObject.activeSelf) { c.transform.position = transform.TransformPoint(droneHangarPos); c.gameObject.SetActive(true); c.timer = 0; c.target = plannedLootPoints[plannedLootPoints.Count - 1]; } } } else { activeDronesCount = source.workingDrones; foreach (CargoDrone c in transportDrones) { if (!c.gameObject.activeSelf) { c.transform.position = transform.TransformPoint(droneHangarPos); c.gameObject.SetActive(true); c.timer = 0; activeDronesCount--; c.target = plannedLootPoints[plannedLootPoints.Count - 1]; if (activeDronesCount == 0) { break; } } } } } } }