void OnSelectMask() { Vector3 worldPos = GetWorldPos(new Vector2(Input.mousePosition.x, Input.mousePosition.y)); mSelectIndex = MaskTile.Mgr.Instance.GetMapIndex(worldPos); MaskTile maskTile = MaskTile.Mgr.Instance.Get(mSelectIndex); if (maskTile == mSelectMaskTile) { mSelectMaskTile = null; mSelectMask.enabled = false; mSelectIndex = -1; } else { mSelectMaskTile = maskTile; mSelectMask.enabled = true; float sizePerTile = texSize / mTexLen; mSelectMask.transform.localScale = new Vector3(sizePerTile, sizePerTile, 1); //lz-2016.11.15 因为地图的大小不是128的倍数,所以会产生缩放,这里需要把图片的大小对应一下,避免偏移 float x = ((mSelectIndex % mTexLen - mTexLen / 2) * texSize / mTexLen + 0.5f * sizePerTile) * offsetScale; float y = ((mSelectIndex / mTexLen - mTexLen / 2) * texSize / mTexLen + 0.5f * sizePerTile) * offsetScale; mSelectMask.transform.localPosition = new Vector3(x, y, 0);; } mWarpWnd.SetActive(false); }
virtual public void UpdateGrid(Grid grid) { if (_object != null) { if (_copyobject_ori != null) { _object.SetActive(true); } //SetPos(x, y); grid.AttachTile = this; this.ParentGrid = grid; var selfpos = _zeropos + new Vector3(grid.ColID * Constant.TileSize.x, -grid.RowID * Constant.TileSize.y, 0); _object.transform.position = selfpos; } if (_copyobject_ori != null) { GameObject.Destroy(_copyobject_ori); _copyobject_ori = null; } if (_copyobject_target != null) { GameObject.Destroy(_copyobject_target); _copyobject_target = null; } if (_maskobject_ori != null) { _maskModule?.SetMaskTile(_maskobject_ori); _maskobject_ori = null; } if (_maskobject_copy != null) { _maskModule?.SetMaskTile(_maskobject_copy); _maskobject_copy = null; } }
virtual public void CopyMoveTo(int currentTargetX, int currentTargetY, int startX, int startY, int endX, int endY, float movetime, int direct) { if (_object != null) { var currentTargetPos = _zeropos + new Vector3(currentTargetX * Constant.TileSize.x, -currentTargetY * Constant.TileSize.y, 0); var copycurrentpos = _zeropos + new Vector3(startX * Constant.TileSize.x, -startY * Constant.TileSize.y, 0); var targetpos = _zeropos + new Vector3(endX * Constant.TileSize.x, -endY * Constant.TileSize.y, 0); //_copyobject = GameObject.Instantiate(_object) as GameObject; _copyobject_target = GameObject.Instantiate(Resources.Load("Prefabs/MaskTiles/" + _name)) as GameObject; _copyobject_target.SetActive(true); var gridctrl_target = _copyobject_target.gameObject.GetComponent <GridMotionController>(); //add by wwh if (gridctrl_target == null) { gridctrl_target = _copyobject_target.gameObject.AddComponent <GridMotionController>(); } gridctrl_target.transform.position = copycurrentpos; var sortorder = startY * 2; gridctrl_target.transform.GetChild(0).GetComponent <SpriteRenderer>().sortingOrder = sortorder; gridctrl_target?.MoveToPosition(targetpos, movetime); _maskobject_copy = _maskModule?.GetMaskTile(); if (_maskobject_copy) { _maskobject_copy.InitMask(TileSize, sortorder, direct, false); _maskobject_copy.gameObject.transform.position = copycurrentpos; } } }
public MaskTile GetMaskTile() { MaskTile retMaskTile = null; if (_maskTileCache.Count == 0) { retMaskTile = LoadTile(); } else { retMaskTile = _maskTileCache.Pop(); } retMaskTile.gameObject.SetActive(true); return(retMaskTile); }
virtual public void MoveTo(int x, int y, float movetime, int direct, bool usecopy = false) { var targetpos = _zeropos + new Vector3(x * Constant.TileSize.x, -y * Constant.TileSize.y, 0); if (_object == null) { return; } if (usecopy) { _copyobject_ori = GameObject.Instantiate(Resources.Load("Prefabs/MaskTiles/" + _name)) as GameObject; _copyobject_ori.SetActive(true); var gridctrl_ori = _copyobject_ori.gameObject.GetComponent <GridMotionController>(); if (gridctrl_ori == null) { gridctrl_ori = _copyobject_ori.gameObject.AddComponent <GridMotionController>(); } gridctrl_ori.transform.position = _object.transform.position; var sordorder = _object.transform.GetChild(0).GetComponent <SpriteRenderer>().sortingOrder; gridctrl_ori.transform.GetChild(0).GetComponent <SpriteRenderer>().sortingOrder = sordorder; gridctrl_ori?.MoveToPosition(targetpos, movetime); _maskobject_ori = _maskModule?.GetMaskTile(); if (_maskobject_ori) { _maskobject_ori.InitMask(TileSize, sordorder, direct, true); _maskobject_ori.gameObject.transform.position = targetpos; } _object?.SetActive(false); return; } var gridctrl = _object.gameObject.GetComponent <GridMotionController>(); gridctrl?.MoveToPosition(targetpos, movetime); }
public void SetMaskTile(MaskTile mt) { mt.gameObject.SetActive(false); _maskTileCache.Push(mt); }