コード例 #1
0
    public override void SetData(BlockTypeEnum blockType)
    {
        base.SetData(blockType);
        BlockShapeCustom blockShapeCustom = blockShape as BlockShapeCustom;

        BlockBaseCrop.InitCropVert(blockShapeCustom.vertsAdd);
    }
コード例 #2
0
ファイル: ItemTypeSeed.cs プロジェクト: wobushiren79/ThaumAge
    protected override void UseForPlayer(Player player, ItemsBean itemData, ItemUseTypeEnum useType)
    {
        //检测玩家前方是否有方块
        if (player.playerRay.RayToChunkBlock(out RaycastHit hit, out Vector3Int targetBlockPosition))
        {
            ChunkComponent chunkForHit = hit.collider.GetComponentInParent <ChunkComponent>();
            if (chunkForHit != null)
            {
                //获取位置和方向
                player.playerRay.GetHitPositionAndDirection(hit, out Vector3Int targetPosition, out Vector3Int closePosition, out BlockDirectionEnum direction);

                Vector3Int localPosition = targetPosition - chunkForHit.chunk.chunkData.positionForWorld;
                //获取原位置方块
                Block tagetBlock = chunkForHit.chunk.chunkData.GetBlockForLocal(localPosition);

                //如果不能种地
                if (tagetBlock.blockInfo.plant_state == 0)
                {
                    return;
                }

                //种植位置
                Vector3Int upLocalPosition = localPosition + Vector3Int.up;
                //获取上方方块
                Block upBlock = chunkForHit.chunk.chunkData.GetBlockForLocal(upLocalPosition);

                //如果上方有方块 则无法种植
                if (upBlock != null && upBlock.blockType != BlockTypeEnum.None)
                {
                    return;
                }

                //种植的方块
                ItemsInfoBean itemsInfo      = GetItemsInfo(itemData.itemId);
                BlockTypeEnum plantBlockType = (BlockTypeEnum)itemsInfo.type_id;
                //初始化meta数据
                BlockMetaCrop blockCropData = new BlockMetaCrop();
                blockCropData.isStartGrow = false;
                blockCropData.growPro     = 0;
                string metaData = BlockBaseCrop.ToMetaData(blockCropData);
                //替换为种植
                chunkForHit.chunk.SetBlockForLocal(upLocalPosition, plantBlockType, BlockDirectionEnum.UpForward, metaData);

                //扣除道具
                UserDataBean userData = GameDataHandler.Instance.manager.GetUserData();
                userData.AddItems(itemData, -1);
                //刷新UI
                UIHandler.Instance.RefreshUI();
            }
        }
    }
コード例 #3
0
    /// <summary>
    /// 获取UVAdd
    /// </summary>
    public virtual Vector2[] GetUVsAddForCrop(Chunk chunk, Vector3Int localPosition, BlockInfoBean blockInfo)
    {
        BlockBean     blockData     = chunk.GetBlockData(localPosition);
        BlockMetaCrop blockCropData = BlockBaseCrop.FromMetaData <BlockMetaCrop>(blockData.meta);

        Vector2 uvStartPosition = GetUVStartPosition(blockInfo, blockCropData);

        Vector2[] uvsAdd = new Vector2[]
        {
            new Vector2(uvStartPosition.x, uvStartPosition.y),
            new Vector2(uvStartPosition.x, uvStartPosition.y + uvWidth),
            new Vector2(uvStartPosition.x + uvWidth, uvStartPosition.y + uvWidth),
            new Vector2(uvStartPosition.x + uvWidth, uvStartPosition.y),

            new Vector2(uvStartPosition.x, uvStartPosition.y),
            new Vector2(uvStartPosition.x, uvStartPosition.y + uvWidth),
            new Vector2(uvStartPosition.x + uvWidth, uvStartPosition.y + uvWidth),
            new Vector2(uvStartPosition.x + uvWidth, uvStartPosition.y)
        };
        return(uvsAdd);
    }
コード例 #4
0
    /// <summary>
    /// 获取生长UV
    /// </summary>
    public virtual Vector2 GetUVStartPosition(BlockInfoBean blockInfo, BlockMetaCrop blockCropData)
    {
        BlockBaseCrop       blockCrop  = block as BlockBaseCrop;
        List <Vector2Int[]> listUVData = blockCrop.GetListGrowUV();
        Vector2             uvStartPosition;

        if (listUVData.IsNull())
        {
            uvStartPosition = Vector2.zero;
        }
        else if (blockCropData.growPro >= blockCrop.GetCropLifeCycle())
        {
            //如果生长周期大于UV长度 则取最后一个
            Vector2Int[] itemUVData = listUVData[listUVData.Count - 1];
            uvStartPosition = new Vector2(uvWidth * itemUVData[blockCropData.uvIndex].y, uvWidth * itemUVData[blockCropData.uvIndex].x);
        }
        else
        {
            Vector2Int[] itemUVData = listUVData[blockCropData.growPro];
            //按生长周期取UV
            uvStartPosition = new Vector2(uvWidth * itemUVData[blockCropData.uvIndex].y, uvWidth * itemUVData[blockCropData.uvIndex].x);
        }
        return(uvStartPosition);
    }
コード例 #5
0
 public BlockShapeCropCrossOblique() : base()
 {
     BlockBaseCrop.InitCropVert(vertsAdd);
 }
コード例 #6
0
 public BlockShapeCropWell() : base()
 {
     BlockBaseCrop.InitCropVert(vertsAdd);
 }