Beispiel #1
0
 public Level(List <LvlVert> verts, List <LvlEdge> edges, LvlVert startVert, List <LvlVert> endVerts)
 {
     this.verts     = verts;
     this.edges     = edges;
     this.startVert = startVert;
     this.endVerts  = endVerts;
 }
Beispiel #2
0
    private LvlEdge readEdge(String edge)
    {
        string[] edgeVerts = edge.Split(' ');

        LvlVert vert1 = rawVertexes[int.Parse(edgeVerts[1]) - 1];
        LvlVert vert2 = rawVertexes[int.Parse(edgeVerts[2]) - 1];

        return(new LvlEdge(vert1, vert2));
    }
Beispiel #3
0
 public void Setup(List <LvlVert> verts, List <LvlEdge> edges, LvlVert startVert, List <LvlVert> endVerts, String mesh)
 {
     this.verts     = verts;
     this.edges     = edges;
     this.startVert = startVert;
     this.endVerts  = endVerts;
     this.meshPath  = mesh;
     isSetup        = true;
     GD.Print("Level Setup Complete!");
 }
Beispiel #4
0
    public void SetLerpPos(LvlVert vert)
    {
        GD.Print(GetTranslation() + " Something");
        elapsedTime = 0;
        targetPos   = vert.Vertex;
        traveling   = true;
        currentVert = vert;
        GuiScript gui = GetNode <GuiScript>("/root/GameNode/ObjLevelLoader/InGameGui");

        gui.UpdateMove();
        startingPos = GetTranslation();
    }
Beispiel #5
0
 public void ResetLevel()
 {
     foreach (Node child in this.GetChildren())
     {
         RemoveChild(child);
         child.CallDeferred("free");
     }
     this.verts     = new List <LvlVert>();
     this.edges     = new List <LvlEdge>();
     this.startVert = null;
     this.endVerts  = new List <LvlVert>();
     this.isSetup   = false;
     GD.Print("Level has been reset!");
 }
Beispiel #6
0
    public void movePlayerTo(string id)
    {
        LvlVert vert = verts[0];

        foreach (LvlVert v in verts)
        {
            if (v.Id.ToString().Equals(id))
            {
                vert = v;
                break;
            }
        }

        disableVertHighlights();
        player.SetLerpPos(vert);
    }
Beispiel #7
0
 public LvlEdge(LvlVert vert1, LvlVert vert2)
 {
     id         = Guid.NewGuid();
     this.vert1 = vert1;
     this.vert2 = vert2;
 }
Beispiel #8
0
    public void LoadLevel(String levelObjPath)
    {
        rawVertexes        = new List <LvlVert>();
        compressedVertexes = new List <LvlVert>();
        edges     = new List <LvlEdge>();
        startVert = null;
        endVerts  = new List <LvlVert>();

        String[] objText = System.IO.File.ReadAllLines(levelObjPath);

        String startFace = "";
        String endFace1  = "";
        String endFace2  = "";
        String endFace3  = "";
        String endFace4  = "";

        for (int i = 0; i < objText.Length; i++)
        {
            //Print everything except comments

            /*
             * if (!line.BeginsWith("#")) {
             *  GD.Print(line);
             * }
             */

            if (objText[i].BeginsWith("v"))
            {
                rawVertexes.Add(readVertex(objText[i]));
            }

            if (objText[i].BeginsWith("l"))
            {
                edges.Add(readEdge(objText[i]));
            }

            //Find the start point
            if (objText[i].BeginsWith("g Start"))
            {
                startFace = objText[i + 1];
            }

            //Find the start point
            if (objText[i].BeginsWith("g End1"))
            {
                endFace1 = objText[i + 1];
            }

            //Find the start point
            if (objText[i].BeginsWith("g End2"))
            {
                endFace2 = objText[i + 1];
            }

            //Find the start point
            if (objText[i].BeginsWith("g End3"))
            {
                endFace3 = objText[i + 1];
            }

            //Find the start point
            if (objText[i].BeginsWith("g End4"))
            {
                endFace4 = objText[i + 1];
            }
        }

        //Calculate the start vert
        startVert = getVertByFaceNum(startFace);

        endVerts = new List <LvlVert>();

        if (!string.IsNullOrEmpty(endFace1))
        {
            endVerts.Add(getVertByFaceNum(endFace1));
        }

        if (!string.IsNullOrEmpty(endFace2))
        {
            endVerts.Add(getVertByFaceNum(endFace2));
        }

        if (!string.IsNullOrEmpty(endFace3))
        {
            endVerts.Add(getVertByFaceNum(endFace3));
        }

        if (!string.IsNullOrEmpty(endFace4))
        {
            endVerts.Add(getVertByFaceNum(endFace4));
        }

        if (debugPrint)
        {
            GD.Print("Start vert = " + startVert.Id.ToString());

            GD.Print("End verts = ");
            foreach (var vert in endVerts)
            {
                GD.Print(vert.Id.ToString());
            }

            GD.Print("End verts = ");
            foreach (var vert in endVerts)
            {
                GD.Print(vert.Id.ToString());
            }
        }

        compressVerts();

        if (debugPrint)
        {
            GD.Print("Compressed verts count = " + compressedVertexes.Count);
            GD.Print("Verts:");
            foreach (var vert in compressedVertexes)
            {
                GD.Print(vert.Id.ToString() + " - " + vert.Vertex.ToString());
            }

            //compressEdges();
            GD.Print("Edge count = " + edges.Count);
            GD.Print("Edges:");
            foreach (var edge in edges)
            {
                GD.Print(edge.Vert1.Id.ToString() + " - " + edge.Vert2.Id.ToString());
            }
        }
        //level = new Level(compressedVertexes, edges, startVert, endVerts);

        String mesh = levelObjPath.Replace("Edges", "");

        LevelLoader levelLoader = (LevelLoader)GetNode("LevelLoader");

        levelLoader.ResetLevel();
        if (!levelLoader.IsSetup)
        {
            levelLoader.Setup(compressedVertexes, edges, startVert, endVerts, mesh);
        }
    }