public int GetNextScene(Enums.GameMode gameMode, int currSceneIndex) { foreach (SceneList sl in allGameScenes) { if (sl.gameMode == gameMode) { for (int i = 0; i < sl.sceneBuildIndex.Count - 1; ++i) { if (sl.sceneBuildIndex[i] == currSceneIndex) { return(sl.sceneBuildIndex[i + 1]); } } } } return(0); }
public IEnumerable <RecordModel> GetTopThree(Enums.GameMode gameMode, Enums.Difficulty difficulty) { List <RecordModel> topThree = new List <RecordModel>(); var query = from record in Records.OrderBy(x => x.Score) where record.GameMode == gameMode && record.Difficulty == difficulty select record as RecordModel; while (topThree.Count < 4) { foreach (var record in query) { topThree.Add(record); } if (topThree.Count == query.Count()) { break; } } return(topThree.OrderByDescending(x => x.Score)); }
void HandleDragAndDrop(Enums.GameMode game_mode) { // Handles pick up part of drag and drop if (Input.GetButtonDown("Fire1")) { var ray = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; var layerMask = 1 << 8; //only raycast to layer 8 if (Physics.Raycast(ray.origin, ray.direction, out hit, Mathf.Infinity, layerMask)) { objectBeingDragged = hit.transform; if (objectBeingDragged.GetComponent <Die>()) { objectBeingDragged.position += new Vector3(0, grabHeight, 0); } else { objectBeingDragged.position += new Vector3(0, grabHeight, 0); } objectBeingDraggedOriginalRotation = objectBeingDragged.rotation; initial_object_pos = objectBeingDragged.transform.position; intermediate_object_pos = objectBeingDragged.transform.position; cumulative_distance = 0f; } } // Handles drop part of drag and drop if (Input.GetButtonUp("Fire1")) { if (objectBeingDragged != null) { if (objectBeingDragged.GetComponent <Die>()) { Rigidbody rigidbody = objectBeingDragged.GetComponent <Rigidbody>(); var final_object_pos = objectBeingDragged.transform.position; float roll_vigor = Mathf.Clamp(cumulative_distance / 2, 1f, 5f); var calculated_torque = roll_vigor * Vector3.Cross(intermediate_object_pos, final_object_pos) * 1000; rigidbody.AddTorque(calculated_torque, ForceMode.Impulse); var calculated_force = (final_object_pos - intermediate_object_pos).normalized * rigidbody.mass * roll_vigor * 100; calculated_force.y = 50f; calculated_force.z *= 2f; calculated_force.x *= 2f; rigidbody.AddForce(calculated_force, ForceMode.Force); } // If objectBeingDragged is a hex tile, snap to grid. if (objectBeingDragged.GetComponent <HexTile>()) { RaycastHit hit; var layerMask = 1 << 9; //check if we hit a hex cell if (Physics.Raycast(objectBeingDragged.position, -Vector3.up, out hit, Mathf.Infinity, layerMask)) { Vector3 new_pos = new Vector3(hit.transform.position.x, 0f, hit.transform.position.z); objectBeingDragged.position = new_pos; objectBeingDragged.rotation = Quaternion.Euler(-90, 0, 0); } } else if (objectBeingDragged.GetComponent <NumberToken>()) { RaycastHit hit; var layerMask = 1 << 9; //check if we hit a hex cell if (Physics.Raycast(objectBeingDragged.position, -Vector3.up, out hit, Mathf.Infinity, layerMask)) { Vector3 new_pos = new Vector3(hit.transform.position.x, 0f, hit.transform.position.z); objectBeingDragged.position = new_pos; objectBeingDragged.rotation = Quaternion.Euler(-90, 0, 0); } } } objectBeingDragged = null; } // Handles drag part of drag and drop. if (Input.GetButton("Fire1")) { if (objectBeingDragged != null) { // track the path distance we have dragged this object. var object_pos = objectBeingDragged.transform.position; cumulative_distance += Vector3.Distance(intermediate_object_pos, object_pos); intermediate_object_pos = object_pos; var ray2 = Camera.main.ScreenPointToRay(Input.mousePosition); RaycastHit hit; var layerMask = 1 << 8; layerMask = ~layerMask; // invert to exclude layer 8 if (Physics.Raycast(ray2.origin, ray2.direction, out hit, Mathf.Infinity, layerMask)) { objectBeingDragged.position = hit.point; if (objectBeingDragged.GetComponent <Die>()) { objectBeingDragged.position += new Vector3(0, grabHeight, 0); } else { objectBeingDragged.position += new Vector3(0, grabHeight, 0); } //objectBeingDragged.rotation = objectBeingDraggedOriginalRotation; } else // resets rotation to prevent crazy rotation from gravity { objectBeingDragged.position += new Vector3(0, 0, 0); //objectBeingDragged.rotation = objectBeingDraggedOriginalRotation; } if (Input.GetKey("q")) { objectBeingDragged.transform.Rotate(Vector3.forward * Time.deltaTime * 75); } else if (Input.GetKey("e")) { objectBeingDragged.transform.Rotate(-Vector3.forward * Time.deltaTime * 75); } if (Input.GetKeyUp("f")) { var rotation = objectBeingDragged.rotation; objectBeingDragged.rotation = Quaternion.Euler(rotation.eulerAngles.x + 180, rotation.eulerAngles.y, rotation.eulerAngles.z); } CmdSetAuth(objectBeingDragged.GetComponent <NetworkIdentity>().netId, GetComponent <NetworkIdentity>()); } } }