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); }
public override float CalcGPerCell(PathFinding search, CellData adjacent) { // 获取邻居的Tile SrpgTile tile = search.map.GetTile(adjacent.position); // 返回本格子的消耗 return(search.GetMoveConsumption(tile.terrainType)); }
public override bool IsTileWalkable(SrpgTile tile) { SrpgPropertyImpl prop = null; if (tile.TryGetProperty("Walkable", out prop)) { if (!prop.b) { return(false); } } return(true); }
//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); }
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); }
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; }
public bool IsSameTile(SrpgTile other) { return(GetComponent <SpriteRenderer>().sprite.GetInstanceID() == other.GetComponent <SpriteRenderer>().sprite.GetInstanceID()); }
public virtual bool IsTileWalkable(SrpgTile tile) { return(true); }