コード例 #1
0
    public virtual void BeginTurn()
    {
        isCharacterTurn = true;
        TGMap tempMap = (TGMap)FindObjectOfType(typeof(TGMap));

        tempMap.tileDataMap.GetTile(currentTileIndex).IsTraversable = true;
    }
コード例 #2
0
    public void SetSelectedTile(int x, int z)
    {
        TGMap     tempMap      = (TGMap)FindObjectOfType(typeof(TGMap));
        Component selectedTile = transform.FindChild("SelectedTile");

        if (!showMarker)
        {
            selectedTile.GetComponent <Renderer>().enabled = false;
            return;
        }
        else
        {
            selectedTile.GetComponent <Renderer>().enabled = true;
        }

        prevSelectedTileIndex = selectedTileIndex;
        selectedTileIndex     = (int)(x + (z * tileSizeX));

        selectedTileData = tempMap.tileDataMap.GetTile(selectedTileIndex);
        selectedTile.transform.position = new Vector3(x + 0.5f, tempMap.tileDataMap.GetTile(selectedTileIndex).Pos.y + 0.0001f, z + 0.5f);

        if (selectedTileData.IsTraversable)
        {
            selectedTile.GetComponent <Renderer>().material.color = Color.white;
        }
        else
        {
            selectedTile.GetComponent <Renderer>().material.color = Color.red;
        }
    }
コード例 #3
0
    public virtual void InitializeCharacter(int tileIndex)     // TODO: Change to protected when classes are inheriting
    {
        TGMap tempMap = (TGMap)FindObjectOfType(typeof(TGMap));

        tempMap.tileDataMap.GetTile(tileIndex).IsTraversable = false;
        transform.position = tempMap.tileDataMap.GetTile(tileIndex).Pos;

        pathList         = new List <TDTile>();
        pathIndex        = -1;
        currentTileIndex = tileIndex;

        skillsList = new List <BaseSkill>();

        BaseSkill tempSkill = new BaseSkill();

        tempSkill.SkillName = "Skill Number 1";
        BaseSkill tempSkill2 = new BaseSkill();

        tempSkill2.SkillName = "Skill Number 2";

        skillsList.Add(tempSkill);
        skillsList.Add(tempSkill2);

        byte[] fileData;

        fileData = File.ReadAllBytes("Assets/Resources/Character Portraits/Human.jpg");
        Texture2D tex = new Texture2D(2, 2);

        tex.LoadImage(fileData);

        characterPortrait = Sprite.Create(tex, new Rect(0, 0, 50, 50), new Vector2(0.5f, 0.5f));
    }
コード例 #4
0
ファイル: Dijkstras.cs プロジェクト: BenjeyBuchey/Pathfinding
    public override void StartAlgorithm(TDTile start, TDTile end, TGMap map)
    {
        algoSteps.Clear();

        SimplePriorityQueue <TDTile> frontier = new SimplePriorityQueue <TDTile>();

        frontier.Enqueue(start, 0);

        Dictionary <TDTile, TDTile> cameFrom = new Dictionary <TDTile, TDTile>();

        cameFrom.Add(start, null);

        Dictionary <TDTile, float> costSoFar = new Dictionary <TDTile, float>();

        costSoFar.Add(start, 0);

        float priority = 0.0f;

        while (frontier.Count > 0)
        {
            TDTile currentTile = frontier.Dequeue();
            if (currentTile.GetTileType() == (int)TILE_TYPE.ENDPOINT)
            {
                break;
            }

            AlgorithmStep algoStep = new AlgorithmStep(currentTile);
            algoSteps.Add(algoStep);

            foreach (TDTile nextTile in currentTile.neighbours)
            {
                if (nextTile == null || nextTile.GetTileType() == (int)TILE_TYPE.WATER || nextTile.GetTileType() == (int)TILE_TYPE.WALL)
                {
                    continue;
                }

                // diagonal step check: if neighbour is diagonal but diagonal step not allowed --> we skip
                if (IsDiagonalNeighbour(currentTile, nextTile) && !IsDiagonalStepAllowed())
                {
                    continue;
                }

                algoTiles.Add(nextTile);

                float newCost = costSoFar[currentTile] + map.GetCostByTileType(nextTile.GetTileType());

                if (!costSoFar.ContainsKey(nextTile) || newCost < costSoFar[nextTile])
                {
                    costSoFar[nextTile] = newCost;
                    priority            = newCost;
                    frontier.Enqueue(nextTile, priority);
                    cameFrom.Add(nextTile, currentTile);
                    algoStep.NeighbourTiles.Add(nextTile);
                }
            }
        }

        GeneratePath(end, cameFrom);
    }
コード例 #5
0
    // Use this for initialization
    void Start()
    {
        _pathManager = (PathManager)FindObjectOfType(typeof(PathManager));

        TGMap tempMap = (TGMap)FindObjectOfType(typeof(TGMap));

        tileSize = tempMap.tileSize;
    }
コード例 #6
0
    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();

        if (GUILayout.Button("Regenerate"))
        {
            TGMap tileMap = (TGMap)target;
            tileMap.BuildMesh();
        }
    }
コード例 #7
0
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();

        if (GUILayout.Button("Regenerate"))
        {
            TGMap map = (TGMap)target;
            map.BuildMesh();
        }
    }
コード例 #8
0
ファイル: TileMapMouse.cs プロジェクト: miko-t/2016RpgGame
    IEnumerator Start()
    {
        coll     = GetComponent <Collider>();
        _tileMap = GetComponent <TGMap>();

        while (Grid_creator.instance == null || !Grid_creator.instance.Loaded)
        {
            yield return(new WaitForSeconds(5 * Time.deltaTime));
        }
        v *= Grid_creator.instance.node_radius;
    }
コード例 #9
0
    public override void StartAlgorithm(TDTile start, TDTile end, TGMap map)
    {
        algoSteps.Clear();

        SimplePriorityQueue <TDTile> frontier = new SimplePriorityQueue <TDTile>();

        frontier.Enqueue(start, 0);

        Dictionary <TDTile, TDTile> cameFrom = new Dictionary <TDTile, TDTile>();

        cameFrom.Add(start, null);

        float priority = 0.0f;

        while (frontier.Count > 0)
        {
            TDTile currentTile = frontier.Dequeue();
            Debug.Log("Dequeue Tile: " + currentTile.GetHashCode());
            if (currentTile.GetTileType() == (int)TILE_TYPE.ENDPOINT)
            {
                break;
            }

            AlgorithmStep algoStep = new AlgorithmStep(currentTile);
            algoSteps.Add(algoStep);

            foreach (TDTile nextTile in currentTile.neighbours)
            {
                if (nextTile == null || nextTile.GetTileType() == (int)TILE_TYPE.WATER || nextTile.GetTileType() == (int)TILE_TYPE.WALL)
                {
                    continue;
                }

                // diagonal step check: if neighbour is diagonal but diagonal step not allowed --> we skip
                if (IsDiagonalNeighbour(currentTile, nextTile) && !IsDiagonalStepAllowed())
                {
                    continue;
                }

                algoTiles.Add(nextTile);

                if (!cameFrom.ContainsKey(nextTile))
                {
                    priority = Heuristic(end, nextTile) + ComputeVectorCrossProduct(start, end, nextTile);                     // TODO: add priority field to TDTile? to debug and or display priority in game
                    frontier.Enqueue(nextTile, priority);
                    //Debug.Log("Enqueue Tile: " + nextTile.GetHashCode() + " - priority: " + priority);
                    cameFrom.Add(nextTile, currentTile);
                    algoStep.NeighbourTiles.Add(nextTile);                     // WRONG! WE NEED TO LOOK AT THE TILE WITH LOWEST HEURISTIC FIRST
                }
            }
        }

        GeneratePath(end, cameFrom);
    }
コード例 #10
0
    protected bool IsDiagonalStepAllowed()
    {
        TGMap tgm = GameObject.Find("TileMap").GetComponent <TGMap>();

        if (tgm == null || !tgm.allowDiagonalStep)
        {
            return(false);
        }

        return(true);
    }
コード例 #11
0
    public virtual void EndTurn()
    {
        TGMap tempMap = (TGMap)FindObjectOfType(typeof(TGMap));

        tempMap.tileDataMap.GetTile(currentTileIndex).IsTraversable = false;

        PathManager tempPathManager = (PathManager)FindObjectOfType(typeof(PathManager));

        tempPathManager.ClearPath();

        moveCharacter   = false;
        isCharacterTurn = false;
    }
コード例 #12
0
//	float v = 0.5f;

    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();

//		EditorGUILayout.BeginVertical ();
//		v = EditorGUILayout.Slider (v, 0, 2.0f);
//		EditorGUILayout.EndVertical ();

        if (GUILayout.Button("Regenerate"))
        {
            TGMap tileMap = (TGMap)target;
            tileMap.BuildMesh();
        }
    }
コード例 #13
0
    void Update()
    {
        TGMap            tempMap = (TGMap)FindObjectOfType(typeof(TGMap));
        CharacterManager tempCharacterManager = (CharacterManager)FindObjectOfType(typeof(CharacterManager));

        if (prevSelectedTileIndex != selectedTileIndex)
        {
            myPathSearch.AStar(tempMap.tileDataMap.GetTile(tempCharacterManager.GetCurrentCharacterTileIndex()), tempMap.tileDataMap.GetTile(selectedTileIndex));
            pathSolution = myPathSearch.GetSolution();

            tempCharacterManager.SetCharacterPath(pathSolution);

            PathMarkerMaintence();
        }
    }
コード例 #14
0
    protected float ComputeVectorCrossProduct(TDTile start, TDTile goal, TDTile current)
    {
        TGMap tgm = GameObject.Find("TileMap").GetComponent <TGMap>();

        if (tgm == null || !tgm.computeVectorCrossProduct)
        {
            return(0.0f);
        }

        float dx1 = current.GetX() - goal.GetX();
        float dy1 = current.GetY() - goal.GetY();
        float dx2 = start.GetX() - goal.GetX();
        float dy2 = start.GetY() - goal.GetY();

        return(System.Math.Abs(dx1 * dy2 - dx2 * dy1) * 0.001f);
    }
コード例 #15
0
    public override void StartAlgorithm(TDTile start, TDTile end, TGMap map = null)
    {
        algoSteps.Clear();

        Queue <TDTile> frontier = new Queue <TDTile>();

        frontier.Enqueue(start);

        Dictionary <TDTile, TDTile> cameFrom = new Dictionary <TDTile, TDTile>();

        cameFrom.Add(start, null);

        while (frontier.Count > 0)
        {
            TDTile currentTile = frontier.Dequeue();
            if (currentTile.GetTileType() == (int)TILE_TYPE.ENDPOINT)
            {
                break;
            }

            AlgorithmStep algoStep = new AlgorithmStep(currentTile);
            algoSteps.Add(algoStep);

            foreach (TDTile nextTile in currentTile.neighbours)
            {
                if (nextTile == null || nextTile.GetTileType() == (int)TILE_TYPE.WATER || nextTile.GetTileType() == (int)TILE_TYPE.WALL)
                {
                    continue;                                                                                                                                      // || == START TYLE !?
                }
                // diagonal step check: if neighbour is diagonal but diagonal step not allowed --> we skip
                if (IsDiagonalNeighbour(currentTile, nextTile) && !IsDiagonalStepAllowed())
                {
                    continue;
                }

                if (!cameFrom.ContainsKey(nextTile))
                {
                    frontier.Enqueue(nextTile);
                    cameFrom.Add(nextTile, currentTile);
                    algoStep.NeighbourTiles.Add(nextTile);
                }
            }
        }

        GeneratePath(end, cameFrom);
    }
コード例 #16
0
    void Start()
    {
        selectedTileIndex = 0;

        TGMap tempMap = (TGMap)FindObjectOfType(typeof(TGMap));

        tileSizeX = tempMap.size_x;

        myPathSearch   = GetComponent <PathSearch>();
        pathSolution   = new List <TDTile>();
        pathMarkerList = new List <GameObject>();

        Component selectedTile = transform.FindChild("SelectedTile");

        selectedTile.GetComponent <Renderer>().enabled = false;

        showMarker    = false;
        moveCharacter = false;
    }
コード例 #17
0
    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();

        if (GUILayout.Button("Reconstruct"))
        {
            TGMap tilemap = (TGMap)target;
            tilemap.ConstructMesh();
        }

        if (GUILayout.Button("Build Walls"))
        {
            TGMap tilemap = (TGMap)target;
            tilemap.ConstructWalls();
        }

        if (GUILayout.Button("Delete Walls"))
        {
            TGMap tilemap = (TGMap)target;
            tilemap.RemoveWallsEditor();
        }
    }
コード例 #18
0
 // Use this for initialization
 void Start()
 {
     _TGMap = GetComponent<TGMap>();
 }
コード例 #19
0
 public void SetMap(TGMap map)
 {
     this.map = map;
 }
コード例 #20
0
ファイル: EGFirehouse.cs プロジェクト: QusaTalma/FireTrucks
 public void SetTGMap(TGMap map)
 {
     _map = map;
 }
コード例 #21
0
ファイル: UIManager.cs プロジェクト: BenjeyBuchey/Pathfinding
    public void StartAlgorithm()
    {
        TGMap tgmap = tileMap.GetComponent <TGMap>();

        tgmap.StartAlgorithm(algorithms[dropdown.value]);
    }
コード例 #22
0
ファイル: UIManager.cs プロジェクト: BenjeyBuchey/Pathfinding
    public void Clear()
    {
        TGMap tgmap = tileMap.GetComponent <TGMap>();

        tgmap.ClearAlgorithm();
    }
コード例 #23
0
 // Use this for initialization
 void Start()
 {
     _instance   = this;
     _map        = GetComponent <TGMap>();
     _dispatcher = new EDDispatcher();
 }
コード例 #24
0
 void Start()
 {
     _instance = this;
     _map      = gameObject.GetComponent <TGMap> ();
     endGameDialog.gameObject.SetActive(false);
 }
コード例 #25
0
ファイル: TGMap.cs プロジェクト: miko-t/2016RpgGame
    // Update is called once per frame
    public void BuildMesh()
    {
        instance     = this;
        MapCreated   = false;
        MapWorldSize = new Vector2(size_x * tileSize, size_y * tileSize);
        if (grid != null)
        {
            grid.node_radius   = tileSize / 2;
            grid.GridWorldSize = MapWorldSize;
        }

        CalcTex();

        Global_TDMap = new TDMap(size_x, size_y, MapTerrainType, TileChance, MaxHeightForPlants, MaxHeightLeap);

        int numTiles = size_x * size_y;
        int numTris  = numTiles * 2;
        int vsize_x  = size_x * 2;
        int vsize_y  = size_y * 2;
        int numVerts = vsize_x * vsize_y;

        if (vsize_x * vsize_y > 65000)
        {
            size_x = 125;
            size_y = 125;
            return;
        }

        Vector3[] vertices = new Vector3[numVerts];
        Vector3[] normals  = new Vector3[numVerts];
        Vector2[] uv       = new Vector2[numVerts];

        int[] triangles = new int[numTris * 3];

        int x, y;

        Vector3 sp = Vector3.zero;

        sp.x -= tileSize * size_x / 2;
        sp.y -= tileSize * size_x / 2;
        float r = Random.Range(-2f, 2f);

        for (y = 0; y < vsize_y; y++)
        {
            for (x = 0; x < vsize_x; x++)
            {
                vertices[y * vsize_x + x] = new Vector3((x + 1) / 2 * tileSize, (y + 1) / 2 * tileSize, 0) + sp;
                normals[y * vsize_x + x]  = new Vector3(0, 0, -1);
                uv[y * vsize_x + x]       = GetTexture(Global_TDMap.GetTile(x / 2, y / 2).type, x, y);
            }
        }


        if (Heights)
        {
            for (y = 1; y < vsize_y - 1; y += 2)
            {
                for (x = 1; x < vsize_x - 1; x += 2)
                {
                    r = Random.Range(0, 0);

                    if (Global_TDMap.GetIfWater(x / 2, y / 2))
                    {
                        r = -Random.Range(-8f, -10f);
                    }
                    else
                    {
                        r = Global_TDMap.GetIfMountine((x + 0) / 2, (y + 0) / 2);
                    }
                    vertices[y * vsize_x + x].z           = r;
                    vertices[y * vsize_x + x + 1].z       = r;
                    vertices[(y + 1) * vsize_x + x].z     = r;
                    vertices[(y + 1) * vsize_x + x + 1].z = r;
                }
            }

            for (y = 0; y < vsize_y; y++)
            {
                vertices[y * vsize_x].z = vertices[y * vsize_x + 1].z;
                vertices[y * vsize_x + vsize_x - 1].z = vertices[y * vsize_x + vsize_x - 2].z;
            }

            for (x = 0; x < vsize_x; x++)
            {
                vertices[x].z = vertices[vsize_x + x].z;
                vertices[(vsize_y - 1) * vsize_x + x].z = vertices[(vsize_y - 2) * vsize_x + x].z;
            }

            print("End OF Heights!");
        }
        for (y = 0; y < size_y; y++)
        {
            for (x = 0; x < size_x; x++)
            {
                //x = 1
                int squareIndex = y * size_x + x;
                int triOffset   = squareIndex * 6;
                triangles[triOffset + 0] = (y * 2) * vsize_x + (x * 2) + 0;
                triangles[triOffset + 1] = (y * 2) * vsize_x + (x * 2) + vsize_x + 0;
                triangles[triOffset + 2] = (y * 2) * vsize_x + (x * 2) + vsize_x + 1;

                triangles[triOffset + 3] = (y * 2) * vsize_x + (x * 2) + 0;
                triangles[triOffset + 4] = (y * 2) * vsize_x + (x * 2) + vsize_x + 1;
                triangles[triOffset + 5] = (y * 2) * vsize_x + (x * 2) + 1;
            }
        }

        Mesh mesh = new Mesh();

        mesh.vertices  = vertices;
        mesh.normals   = normals;
        mesh.uv        = uv;
        mesh.triangles = triangles;

        MeshFilter   mesh_filter   = GetComponent <MeshFilter>();
        MeshRenderer mesh_renderer = GetComponent <MeshRenderer>();
        MeshCollider mesh_collider = GetComponent <MeshCollider>();

        mesh_filter.mesh         = mesh;
        mesh_collider.sharedMesh = mesh;
        Debug.Log("Done Mesh!");
        //BuildTexture();

        OnMapGenerator GenerateTrees = new OnMapGenerator(Global_TDMap, size_x, size_y, tileSize, MapHolder);

        StartCoroutine(GenerateTreesEI(GenerateTrees));
        //MapCreated = true;
    }
コード例 #26
0
ファイル: TileMapMouse.cs プロジェクト: miberen/Game
 void Start()
 {
     _tileMap = GetComponent <TGMap>();
 }
コード例 #27
0
 public abstract void StartAlgorithm(TDTile start, TDTile end, TGMap map);