Ejemplo n.º 1
0
    public void LoadMapElement(Vector3 isoPos, GameObject go)
    {
        Vector3Int index = EffectiveUtility.IsoPositionToIndex(isoPos);

        if (go.GetComponent <Player>() != null)
        {
            return;
        }

        GameObject instance = Instantiate(go, isoPos, Quaternion.identity, transform);

        Character entity = instance.GetComponent <Character>();

        if (entity != null)
        {
            RoomAllEntitys.Add(entity);
            entity.OwnerRoom = this;
        }

        Door door = instance.GetComponent <Door>();

        if (door != null)
        {
            RoomDoors.Add(door);
            RoomWays.Add(door.DoorType);
            door.OwnerRoom = this;
        }
    }
    private void OnDrawGizmos()
    {
        if (!visible && Application.IsPlaying(gameObject))
        {
            return;
        }

        Vector3 boxSize = EffectiveUtility.VectorMultiple(guideSize, Isometric.IsometricTileSize);

        Vector3[] box = new Vector3[]
        {
            transform.parent.position + EffectiveUtility.VectorMultiple(new Vector3(-0.5f, 1f, 0.5f), boxSize),
            transform.parent.position + EffectiveUtility.VectorMultiple(new Vector3(-0.5f, 1f, -0.5f), boxSize),
            transform.parent.position + EffectiveUtility.VectorMultiple(new Vector3(0.5f, 1f, -0.5f), boxSize),
            transform.parent.position + EffectiveUtility.VectorMultiple(new Vector3(0.5f, 1f, 0.5f), boxSize),
            transform.parent.position + EffectiveUtility.VectorMultiple(new Vector3(-0.5f, 0f, -0.5f), boxSize),
            transform.parent.position + EffectiveUtility.VectorMultiple(new Vector3(0.5f, 0f, -0.5f), boxSize),
            transform.parent.position + EffectiveUtility.VectorMultiple(new Vector3(0.5f, 0f, 0.5f), boxSize)
        };

        Gizmos.color = new Color(0.1f, 0.9f, 0.1f);
        Gizmos.DrawLine(Isometric.TranslationIsometricToScreen(box[0]), Isometric.TranslationIsometricToScreen(box[1]));
        Gizmos.DrawLine(Isometric.TranslationIsometricToScreen(box[1]), Isometric.TranslationIsometricToScreen(box[2]));
        Gizmos.DrawLine(Isometric.TranslationIsometricToScreen(box[2]), Isometric.TranslationIsometricToScreen(box[3]));
        Gizmos.DrawLine(Isometric.TranslationIsometricToScreen(box[3]), Isometric.TranslationIsometricToScreen(box[0]));

        Gizmos.DrawLine(Isometric.TranslationIsometricToScreen(box[1]), Isometric.TranslationIsometricToScreen(box[4]));
        Gizmos.DrawLine(Isometric.TranslationIsometricToScreen(box[2]), Isometric.TranslationIsometricToScreen(box[5]));
        Gizmos.DrawLine(Isometric.TranslationIsometricToScreen(box[3]), Isometric.TranslationIsometricToScreen(box[6]));

        Gizmos.DrawLine(Isometric.TranslationIsometricToScreen(box[4]), Isometric.TranslationIsometricToScreen(box[5]));
        Gizmos.DrawLine(Isometric.TranslationIsometricToScreen(box[5]), Isometric.TranslationIsometricToScreen(box[6]));

        Gizmos.color = Color.white;
    }
Ejemplo n.º 3
0
    public void AddTile(Vector3 isoPos, GameObject go, bool activateLogic = false)
    {
        Vector3Int index = EffectiveUtility.IsoPositionToIndex(isoPos);

        if (!ContainsTile(index))
        {
            if (_tileMap.Count == 0)
            {
                min = index;
                max = index;
            }
            else
            {
                min = EffectiveUtility.Min(min, index);
                max = EffectiveUtility.Min(max, index);
            }

            GameObject instance = Instantiate(go, isoPos, Quaternion.identity, _tileMapPivotObject.transform);
            if (instance.GetComponent <Character>())
            {
                instance.GetComponent <Character>().enabled = activateLogic;
            }
            _tileMap.Add(index, instance);
        }
    }
Ejemplo n.º 4
0
    public static Room CreateRoom(string roomName, Vector2Int index)
    {
        string      jsonData = ResourceManager.GetResource <TextAsset>("Map/" + roomName).text;
        TileMapData data     = JsonUtility.FromJson <TileMapData>(jsonData);

        Room room = new GameObject(roomName).AddComponent <Room>();

        room.RoomIndex      = index;
        room.RoomAllEntitys = new List <Character>();
        room.RoomDoors      = new List <Door>();
        room.RoomWays       = new List <MapWay>();

        room.MapData          = data;
        room.SupportDrawCount = data.mapDraw;
        room.SupportCostCount = data.mapCost;

        foreach (var pair in data.mapData.data)
        {
            room.LoadMapElement(EffectiveUtility.VectorMultiple(new Vector3(pair.index.x, pair.index.y, pair.index.z), Isometric.IsometricTileSize),
                                ResourceManager.GetResource <GameObject>("Tiles/" + pair.tag));
        }

        room.NavData = DynamicNavigation.Instance.BuildNavigation(room.transform);
        room.gameObject.SetActive(false);
        return(room);
    }
Ejemplo n.º 5
0
    public void FromJson(TileData data, bool activateLogic = false)
    {
        DestroyMap();
        CreatePivot();

        foreach (var pair in data.data)
        {
            AddTile(EffectiveUtility.VectorMultiple(new Vector3(pair.index.x, pair.index.y, pair.index.z), Isometric.IsometricTileSize),
                    ResourceManager.GetResource <GameObject>("Tiles/" + pair.tag), activateLogic);
        }
    }
Ejemplo n.º 6
0
    public void RemoveTile(Vector3 isoPos)
    {
        Vector3Int index = EffectiveUtility.IsoPositionToIndex(isoPos);

        if (ContainsTile(index))
        {
            GameObject instance = _tileMap[index];
            Destroy(instance);
            _tileMap.Remove(index);
        }
    }
Ejemplo n.º 7
0
    public GameObject GetTile(Vector3 isoPos)
    {
        Vector3Int index = EffectiveUtility.IsoPositionToIndex(isoPos);

        if (ContainsTile(index))
        {
            return(_tileMap[index]);
        }
        else
        {
            return(null);
        }
    }
Ejemplo n.º 8
0
    public void RemoveTile(Vector3 isoPos)
    {
        Vector3Int index = EffectiveUtility.IsoPositionToIndex(isoPos);

        if (ContainsTile(index))
        {
            List <GameObject> objectList = _tileMap[index];

            GameObject instance = objectList[objectList.Count - 1];
            Destroy(instance);
            objectList.Remove(objectList[objectList.Count - 1]);

            if (objectList.Count == 0)
            {
                _tileMap.Remove(index);
            }
        }
    }
Ejemplo n.º 9
0
    public bool ContainsTile(Vector3 isoPos)
    {
        Vector3Int index = EffectiveUtility.IsoPositionToIndex(isoPos);

        return(ContainsTile(index));
    }