Example #1
0
    public void GenerateMesh()
    {
        CaveManager cmanager = GameObject.FindGameObjectWithTag("CaveManager").GetComponent <CaveManager> ();

        int m_lengthRes = cmanager.GetDivRes();
        int m_ribRes    = cmanager.GetRoundRes();

        m_DivScales = new List <float> ();

        for (int i = 0; i < m_lengthRes; ++i)
        {
            m_DivScales.Add(3);
        }

        // Add the now set mesh to the game object as a meshfilter
        gameObject.AddComponent <MeshFilter> ().mesh = new Mesh();

        // Add and set up the new mesh renderer
        gameObject.AddComponent <MeshRenderer>().material = cmanager.m_caveMaterial;

        // Add a mesh collider used for raycast testing
        gameObject.AddComponent <MeshCollider>();

        UpdateMesh(m_lengthRes, m_ribRes);

        GenerateTriangles(m_lengthRes, m_ribRes);

        // Add a mesh collider used for raycast testing
        GetComponent <MeshCollider>().sharedMesh = GetComponent <MeshFilter> ().mesh;
    }
Example #2
0
    void DecideAction()
    {
        Debug.Log("AAA");
        Touch touch = Input.GetTouch(0);

        if (touch.phase == TouchPhase.Began)
        {
            Debug.Log(Time.time);
            StillTouch = true;
            StartCoroutine(DecideLongTouch());
        }
        if (touch.phase == TouchPhase.Stationary)
        {
            if (NowAssignIsland)
            {
                CaveManager cavemanager = FindObjectsOfType <CaveManager>()[0].GetComponent <CaveManager>();
                cavemanager.PetOnIsland(Petnum);
            }
        }
        if (touch.phase == TouchPhase.Ended)
        {
            if (!NowAssignIsland)
            {
                petview.WatchPet(Petnum);
                PetViewPanel.SetActive(true);
                CaveViewCanvas.SetActive(false);
            }
            StillTouch      = false;
            NowAssignIsland = false;
        }
    }
Example #3
0
    public void tunnelFrom(CaveBody body, Vector3 dir)
    {
        CaveManager.tunnels.Add(this);

        GameObject digObj = CaveManager.getNewDigger();

        digObj.transform.localScale = new Vector3(1, 1, 1);
        digger = digObj.GetComponent <Digger>();
        digger.init(this);
        digger.colID              = body.centerColumnID;
        digger.tier               = body.tier + 1;
        digger.layer              = body.centerDepth + 2;
        destDepth                 = body.centerDepth + tunnelDepth;
        digger.neighbourCount     = 0;
        digger.transform.position = Vector3.zero;
        digger.setScale(tunnelSize);
        digger.gradient = 2;
        direction       = dir;


        digger.right     = Vector3.Cross(direction, -MapManager.manager.getPositionOf(0, body.centerColumnID)).normalized;
        digger.travelDir = direction.normalized;
        //Debug.Log("creating new digger with dir = " + digger.travelDir + " right = " + digger.right);
        digger.nextDest = 3 * MapManager.manager.getPositionOf(0, body.centerColumnID) - 2 * MapManager.manager.getPositionOf(1, body.centerColumnID);

        digger.gameObject.SetActive(true);

        digger.travelToNext();
    }
Example #4
0
    // I have clicked on this curve section of cave within the hierarchy
    public void SelectCurve()
    {
        CaveManager cmanager = GameObject.FindGameObjectWithTag("CaveManager").GetComponent <CaveManager> ();

        cmanager.DeSelectCaveBezier();

        m_gizmos.Add(Instantiate(m_gizmo, a_anchor, Quaternion.identity).transform);
        m_gizmos.Add(Instantiate(m_gizmo, a_control, Quaternion.identity).transform);

        //Make handle (1) a child of anchor (0)
        m_gizmos [0].GetComponent <Gizmo> ().m_childGizmo = m_gizmos [1];

        m_gizmos.Add(Instantiate(m_gizmo, b_control, Quaternion.identity).transform);
        m_gizmos.Add(Instantiate(m_gizmo, b_anchor, Quaternion.identity).transform);

        //Make handle (2) a child of anchor (3)
        m_gizmos [3].GetComponent <Gizmo> ().m_childGizmo = m_gizmos [2];

        int m_lengthRes = cmanager.GetDivRes();

        // Add the scaling rings
        for (int i = 0; i < m_lengthRes; ++i)
        {
            //Add a new ring
            m_gizmos.Add(Instantiate(m_bezierScaleGizmo, transform.position, Quaternion.identity).transform);

            // Set the t value for this ring
            m_gizmos [m_gizmos.Count - 1].GetComponent <GizmoRing> ().m_percentageT = ((float)1 / (m_lengthRes - 1)) * i;
            m_gizmos [m_gizmos.Count - 1].GetComponent <GizmoRing> ().m_bezier      = this;
        }

        PositionRingGizmos();

        cmanager.SelectCaveBezier(this);
    }
Example #5
0
    internal void createEntranceAt(int colID, Vector3 dir)
    {
        columnID = colID;

        CaveManager.entrances.Add(this);

        GameObject digObj = CaveManager.getNewDigger();

        digObj.transform.localScale = new Vector3(1, 1, 1);
        digger = digObj.GetComponent <Digger>();
        digger.init(this);
        digger.colID              = colID;
        digger.tier               = 0;
        digger.layer              = 0;
        digger.neighbourCount     = 0;
        digger.transform.position = Vector3.zero;
        digger.setScale(entrancesize);
        digger.gradient = 2;
        direction       = dir.normalized;
        if (direction.magnitude != 1)
        {
            Debug.LogError("digging entrance with no direction, dir = " + direction);
        }


        digger.right     = Vector3.Cross(direction, -MapManager.manager.getPositionOf(0, columnID)).normalized;
        digger.travelDir = direction.normalized;
        //Debug.Log("creating new digger with dir = " + digger.travelDir + " right = " + digger.right);
        digger.nextDest = 3 * MapManager.manager.getPositionOf(0, colID) - 2 * MapManager.manager.getPositionOf(1, colID);

        digger.gameObject.SetActive(true);

        digger.travelToNext();
    }
Example #6
0
    IEnumerator DecideLongTouch()
    {
        yield return(new WaitForSeconds(0.5f));

        if (StillTouch)
        {
            NowAssignIsland = true;
            CaveManager cavemanager = FindObjectsOfType <CaveManager>()[0].GetComponent <CaveManager>();
            cavemanager.PetOnIsland(Petnum);
        }
    }
Example #7
0
    private void PositionRingGizmos()
    {
        CaveManager cmanager = GameObject.FindGameObjectWithTag("CaveManager").GetComponent <CaveManager> ();

        int m_lengthRes = cmanager.GetDivRes();

        // Add the scaling rings
        for (int i = 0; i < m_lengthRes; ++i)
        {
            // Get the position CURRENTLY along the bezier (0 .. 1) t -> vec3
            Vector3 bezierTPos = PositionFromInterpolant(((float)1 / (m_lengthRes - 1)) * i);

            // Get t (interpolant) for next (0 .. 1+(eot)) (last spill)
            float tNext = ((float)1 / (m_lengthRes - 1)) * (i + 1);

            Vector3    dir = Vector3.zero;
            Quaternion rot = Quaternion.identity;

            // if !last
            if (tNext <= 1)
            {
                // safe internal
                dir = Vector3.Normalize(PositionFromInterpolant(tNext) - bezierTPos);
                rot = Quaternion.LookRotation(dir);
            }
            else
            {
                // collect spilled value
                dir = Vector3.Normalize(bezierTPos - PositionFromInterpolant(((float)1 / (m_lengthRes - 1)) * (i - 1)));

                if (dir != Vector3.zero)
                {
                    rot = Quaternion.LookRotation(dir);
                }
            }

            // Rotate to the bezier orientation
            m_gizmos [i + 4].position = bezierTPos;

            //Position along bezier
            m_gizmos [i + 4].rotation = rot;

            if (i < m_DivScales.Count)
            {
                //Scale to size
                m_gizmos [i + 4].localScale = new Vector3(m_DivScales[i], m_DivScales[i], m_DivScales[i]);
            }
            else
            {
                //Scale to size
                m_gizmos [i + 4].localScale = new Vector3(3.25f, 3.25f, 3.25f);
            }
        }
    }
Example #8
0
    public IEnumerator allSurfaceVoxelsLoadedServerSide()
    {
        if (!isServer)
        {
            Debug.LogError("trying to do server map opperations on client side");
        }
        yield return(new WaitForSeconds(1.4f));


        foreach (Voxel vox in voxels[0].Values)
        {
            //vox.gameObject.transform.localScale *= MapManager.mapSize;
            vox.checkNeighbourCount();
            //Debug.Log("adding position for voxel 0, " + vox.columnID);
            try
            {
                voxelPositions.Add(vox.columnID, vox.centreOfObject);
            }
            catch (ArgumentException a)
            {
                //Debug.LogError(a);
                Debug.LogError("already added this voxel to voxel positions? colID = " + vox.columnID + " old center: " + voxelPositions[vox.columnID] + " new center: " + vox.centreOfObject);
            }

            // This was uneccasarry and was causing errors with new lobby system (names are still trivoxel
            // vox.gameObject.name = "TriVoxel";
        }


        if (noSurfaceCaves > 0)
        {
            //Debug.Log("digging caves");
            CaveManager.digTierZeroCaves();
        }
        else
        {
            if (useHills)
            {
                //Debug.Log("creating hills");
                deviateHeights();
            }
            else
            {
                //Debug.Log("finishing map - no caves no hills");
                finishMapLocally();
            }
        }
    }
Example #9
0
    // Use this for initialization
    void Start()
    {
        //Debug.Log("trying to start cave manager");
        tiersLeft = caveTiers;
        //Debug.Log("starting cave manager");
        caves        = new HashSet <CaveBody>();
        entrances    = new HashSet <CaveEntrance>();
        diggers      = new HashSet <Digger>();
        tunnels      = new HashSet <CaveTunnel>();
        diggerPrefab = Resources.Load("Prefabs/Map/Digger");
        manager      = this;

        caveFloors   = new HashSet <Voxel>();
        caveCeilings = new HashSet <Voxel>();
        caveWalls    = new HashSet <Voxel>();
        //Debug.Log("found digger : " + diggerPrefab);
    }
Example #10
0
 void Start()
 {
     m_mapHandlerScript  = GameObject.FindGameObjectWithTag("MapHandler").GetComponent <MapHandler> ();
     m_caveManagerScript = GameObject.FindGameObjectWithTag("CaveManager").GetComponent <CaveManager> ();
 }
    public int currentCave = 0;  //current cave that the player is in

    //Called before Start
    void Awake()
    {
        //Check if instance exists
        if (instance == null)
        {
            //If not, set it up
            instance = this;
            //If it's already set up and it's not this, destroy it
        }
        else if (instance != this)
        {
            Destroy(gameObject);
        }

        //Get the intro animation object
        introAnim = GameObject.Find("IntroAnim").GetComponent <Animator>();

        //Instantiate the arraylist
        objectsOnScreen = new ArrayList();

        //Don't destroy this when reloading a scene
        //DontDestroyOnLoad(gameObject);

        //Get caveScript, which is attached to the Cave object
        caveScript = GameObject.Find("Cave").GetComponent <CaveManager>();

        //Find sound by name
        sound = GameObject.Find("Sound").GetComponent <SoundManager>();
        sound.Init();

        //Find ui by name
        ui = GameObject.Find("UI").GetComponent <UI>();
        ui.Init();

        //Find player by name
        player = GameObject.Find("Player").GetComponent <Player>();

        //Find journal by name
        journal = GameObject.Find("Journal").GetComponent <Journal>();

        //Update highscores
        upScore = GameObject.Find("HighScore").GetComponent <HighScore> ();

        //Get credits animator
        credits = GameObject.Find("Credits").GetComponent <Animator> ();

        //Show the UI for getting the player's name, and pauses the game
        menuUI.SetActive(false);
        getNameUI.SetActive(true);
        Time.timeScale = 0f;
        input.ActivateInputField();

        //Initialize the game by creating cave 0
        caveScript.Init();
        createCave(0, false);

        //Start the intro conversation
        GameObject.Find("IntroDialogue").GetComponent <Dialogue>().StartDialogue();

        //Set all bools to false, don't allow the player to move/shoot yet
        player.enabled  = false;
        battleStart     = false;
        form1dead       = false;
        form2dead       = false;
        endgame         = false;
        cutscenePlaying = true;

        //Firstcave = if the player has not yet gone to a different cave yet
        firstcave = true;
    }
Example #12
0
    // Update is called once per frame
    void Update()
    {
        float dist   = Vector3.Distance(transform.position, Camera.main.transform.position);
        float m_size = ((dist > 1) ? dist : 1) * m_gizmoScale;

        transform.localScale = new Vector3(m_size, m_size, m_size);

        // Hit out from raycast
        RaycastHit hit;

        // Cast the mouse position to world hit
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

        // Ray hit a collider
        if (Physics.Raycast(ray, out hit))
        {
            if (!m_gizmoActive)
            {
                // Get the clicked gizmo handle
                if (hit.collider.tag == "GizmoHandle")
                {
                    if (Input.GetMouseButton(0))
                    {
                        // Disable sketch mode
                        m_gizmoActive = true;

                        m_toolManagerScript.SetAllowedToDraw(false);

                        // Cache the object
                        m_activeHandle = hit.collider.gameObject;

                        // Process the axis from the clicked object's name
                        if (!m_axisProcessed)
                        {
                            numberOfAxis = ProcessAxis(hit.collider.gameObject.name);

                            if (hit.transform.childCount == 0)
                            {
                                m_colourView.GetComponent <Renderer> ().material = hit.collider.GetComponent <Renderer> ().material;
                            }
                            else
                            {
                                m_colourView.GetComponent <Renderer> ().material = hit.transform.GetChild(0).GetComponent <Renderer> ().material;
                            }
                        }
                    }
                }
                else
                {
                    if (hit.collider.tag == "GizmoRing")
                    {
                        m_ringActive = true;

                        m_toolManagerScript.SetAllowedToDraw(false);

                        // Cache the object
                        m_activeHandle = hit.collider.gameObject;
                    }
                }
            }
        }

        if (!Input.GetMouseButton(0))
        {
            // Re-enable sketch mode
            m_gizmoActive = false;
            m_ringActive  = false;
            m_toolManagerScript.SetAllowedToDraw(true);
        }

        if (m_ringActive)
        {
            float mouseMove = m_lastMousePosition.x - Input.mousePosition.x;
            if (mouseMove < 0)
            {
                if (m_activeHandle.transform.root.localScale.x > 2)
                {
                    m_activeHandle.transform.root.localScale += new Vector3(mouseMove * .1f, mouseMove * .1f, mouseMove * .1f);
                }
            }
            else
            {
                m_activeHandle.transform.root.localScale += new Vector3(mouseMove * .1f, mouseMove * .1f, mouseMove * .1f);
            }

            CaveManager cmanager = GameObject.FindGameObjectWithTag("CaveManager").GetComponent <CaveManager> ();

            if (m_activeHandle.transform.root != null)
            {
                m_activeHandle.transform.root.GetComponent <GizmoRing> ().m_bezier.UpdateMesh(cmanager.GetDivRes(), cmanager.GetRoundRes());
            }
        }

        // The gizmo is active, do logic
        if (m_gizmoActive && m_activeHandle.transform.root.gameObject == this.gameObject)
        {
            Vector2 mouseMove = m_lastMousePosition - Input.mousePosition;

            // Do the correct process in the retrieved axis
            switch (m_processType)
            {
            case ProcessType.Translate:
            {
                // SingleAxis
                if (numberOfAxis == 1)
                {
                    // Up is along axis, convert to screen space
                    Vector3 screenPos   = Camera.main.WorldToScreenPoint(m_activeHandle.transform.position);
                    Vector3 screenPosUp = Camera.main.WorldToScreenPoint(m_activeHandle.transform.position + m_activeHandle.transform.up);

                    float colinearity = Vector2.Dot(
                        Vector3.Normalize(new Vector2(screenPos.x - screenPosUp.x, screenPos.y - screenPosUp.y)),
                        Vector3.Normalize(new Vector2(mouseMove.x, mouseMove.y))
                        );

                    Vector3 newPos = m_activeHandle.transform.up * colinearity * (mouseMove.magnitude * m_gizmoMovementPower) * (m_size * m_gizmoMovementPower);

                    newPos = (newPos.magnitude > 10000) ? Vector3.zero : newPos;

                    transform.Translate(newPos, Space.World);

                    if (m_childGizmo != null)
                    {
                        m_childGizmo.Translate(newPos, Space.World);
                    }
                }
                else
                {
                    // Planar motion
                    Plane plane = new Plane(m_activeHandle.transform.up, transform.position);

                    //Vector2 mouseMove = m_lastMousePosition - Input.mousePosition;
                    // Create a current and last ray
                    Ray curRay  = Camera.main.ScreenPointToRay(Input.mousePosition);
                    Ray lastRay = Camera.main.ScreenPointToRay(m_lastMousePosition);

                    //Distance along ray (on plane)
                    float distance;

                    Vector3 curpos  = Vector3.zero;
                    Vector3 lastpos = Vector3.zero;;

                    // Do the raycasts
                    if (plane.Raycast(lastRay, out distance))
                    {
                        lastpos = lastRay.GetPoint(distance);
                    }
                    if (plane.Raycast(curRay, out distance))
                    {
                        curpos = curRay.GetPoint(distance);
                    }

                    Vector3 newPos = (curpos - lastpos) * (mouseMove.magnitude * m_gizmoMovementPower) * (m_size * m_gizmoMovementPower);

                    newPos = (newPos.magnitude > 10000) ? Vector3.zero : newPos;

                    transform.Translate(newPos, Space.World);

                    if (m_childGizmo != null)
                    {
                        m_childGizmo.Translate(newPos, Space.World);
                    }
                }
            }
            break;

            case ProcessType.Rotate:
            {
                transform.Rotate(m_activeHandle.transform.up * mouseMove.x, Space.World);

                if (m_childGizmo != null)
                {
                    m_childGizmo.RotateAround(transform.position, m_activeHandle.transform.up, mouseMove.x);
                }
            }
            break;
            }
        }
        else
        {
            // Reset the core material colour
            m_colourView.GetComponent <Renderer> ().material = m_resetMaterial;
            // Reset the currently active axis (because I check for them additively)
            m_activeAxis = Vector3.zero;
            // A bit of a messy way to store active axis but oh well
            numberOfAxis = 0;
        }

        // Cache mouse pos at end of update tick
        m_lastMousePosition = Input.mousePosition;
    }
Example #13
0
        public string MovePlayer(int desiredCave)
        {
            LocationManager.PlayerMovement(desiredCave);
            PlayerManager.TakeATurn();

            string PositionStatus = LocationManager.CheckPositions();

            if (PositionStatus == "wumpus")
            {
                SoundManager.PlayWumpus();
                bool didWin = TriviaObject.TriviaBattle(5, 3);
                if (didWin)
                {
                    LocationManager.WumpusMoves();
                }
                else
                {
                    EndGameNormally();
                }
            }
            else if (PositionStatus == "pit")
            {
                //trivia
                //sound
                SoundManager.PlayPit();
                bool didWin = TriviaObject.TriviaBattle(3, 1);
                if (didWin)
                {
                    LocationManager.WumpusMoves();
                }
                else
                {
                    EndGameNormally();
                }
                LocationManager.PitsMove();
            }
            else if (PositionStatus == "bat")
            {
                //trivia
                //sound
                SoundManager.PlayBats();
                LocationManager.BatsMove();
                LocationManager.BatFling();
                return("A bat flung you to another room!");
            }

            string Proximity = LocationManager.CheckProximity(CaveManager.GetConnectedList(LocationManager.Player));

            if (Proximity == "wumpus")
            {
                return("The Wumpus is close.");
            }
            else if (Proximity == "pit")
            {
                return("I feel a draft.");
            }
            else if (Proximity == "bat")
            {
                return("Bats are squeaky.");
            }
            else
            {
                return(TriviaObject.GetSecret());
            }

            //get a secret thing and show it
        }