示例#1
0
    public SrpgTile CreateTileInto(SrpgLayer layer, Sprite tileSprt, int x, int y)
    {
        string     tileName = string.Format("[{0}, {1}] {2}", x, y, tileSprt.name);
        GameObject tileObj  = new GameObject(tileName);

        tileObj.transform.parent = layer.transform;

        SpriteRenderer tileRndr = tileObj.AddComponent <SpriteRenderer>();

        tileRndr.sprite       = tileSprt;
        tileRndr.sortingOrder = CalcZIndex(layer, y);

        float tileScale = _tileWidth / tileRndr.bounds.size.x;

        tileObj.transform.localScale = new Vector3(tileScale, tileScale, 1);
        tileObj.transform.position   = CalcTilePosition(x, y);

        if (layer.touchable)
        {
            tileObj.AddComponent <BoxCollider2D>();
        }

        SrpgTile tile = tileObj.AddComponent <SrpgTile>();

        tile.x = x;
        tile.y = y;

        return(tile);
    }
示例#2
0
        public override float CalcGPerCell(PathFinding search, CellData adjacent)
        {
            // 获取邻居的Tile
            SrpgTile tile = search.map.GetTile(adjacent.position);

            // 返回本格子的消耗
            return(search.GetMoveConsumption(tile.terrainType));
        }
示例#3
0
    public override bool IsTileWalkable(SrpgTile tile)
    {
        SrpgPropertyImpl prop = null;

        if (tile.TryGetProperty("Walkable", out prop))
        {
            if (!prop.b)
            {
                return(false);
            }
        }

        return(true);
    }
示例#4
0
    //private void DoSelectEvent(Vector3 hitPoint)
    //{
    //    Event e = Event.current;
    //    if (e.type != EventType.MouseDown && e.type != EventType.MouseDrag)
    //        return;
    //}

    private void CreateTileIntoMap(int x, int y, Sprite sprite)
    {
        SrpgTile oldTile = _currMap.GetTile(_currLayer, x, y);

        if (oldTile != null)
        {
            Undo.DestroyObjectImmediate(oldTile.gameObject);
        }

        SrpgTile newTile = _currMap.CreateTileInto(_currLayer, sprite, x, y);

        Undo.RegisterCreatedObjectUndo(newTile.gameObject, newTile.name);
        EditorUtility.SetSelectedRenderState(newTile.GetComponent <Renderer>(), EditorSelectedRenderState.Hidden);
    }
示例#5
0
    protected virtual bool OnTileClicked(object sender, EventArgs e)
    {
        if (!_gameRunning)
        {
            return(false);
        }

        SrpgTile tile = (SrpgTile)sender;

        if (tile == null)
        {
            Debug.LogError("tile is null");
            return(false);
        }

        foreach (SrpgUnit unit in _playerUnits)
        {
            if (tile.x == unit.x && tile.y == unit.y)
            {
                OnUnitClicked(unit, e);
                return(false);
            }
        }
        foreach (SrpgUnit unit in _enemyUnits)
        {
            if (tile.x == unit.x && tile.y == unit.y)
            {
                OnUnitClicked(unit, e);
                return(false);
            }
        }

        foreach (SrpgCell cell in _activeUnitCells)
        {
            if (tile.x == cell.x && tile.y == cell.y)
            {
                OnCellClicked(cell, e);
                return(false);
            }
        }

        return(true);
    }
示例#6
0
    private void DoEraseEvent(Vector3 hitPoint)
    {
        Event e = Event.current;

        if (e.type != EventType.MouseDown && e.type != EventType.MouseDrag)
        {
            return;
        }

        int mapX = 0, mapY = 0;

        _currMap.WorldToGrid(hitPoint, out mapX, out mapY);

        SrpgTile tile = _currMap.GetTile(_currLayer, mapX, mapY);

        if (tile != null)
        {
            Undo.DestroyObjectImmediate(tile.gameObject);
            e.Use();
        }
    }
 void OnEnable()
 {
     _target = (SrpgTile)target;
 }
示例#8
0
 public bool IsSameTile(SrpgTile other)
 {
     return(GetComponent <SpriteRenderer>().sprite.GetInstanceID()
            == other.GetComponent <SpriteRenderer>().sprite.GetInstanceID());
 }
示例#9
0
 public virtual bool IsTileWalkable(SrpgTile tile)
 {
     return(true);
 }