示例#1
0
    //Shuijing CreateCrystal(PATileTerrain.PACrystalTile crystalTile, int level,PATileTerrain.TileElementType elementType)
    Shuijing CreateCrystal(int level, PATileTerrain.TileElementType elementType)
    {
        string preShuijingName = "";

        if (elementType == PATileTerrain.TileElementType.Fire)
        {
            preShuijingName = "v_";
        }
        else if (elementType == PATileTerrain.TileElementType.Wood)
        {
            preShuijingName = "w_";
        }
        string     shuijingPrefabName = preShuijingName + shuijingName + level.ToString();
        GameObject shuijingGo         = PoolManager.Pools["Shuijing"].Spawn(shuijingPrefabName).gameObject;

        GameUtility.SetLayerRecursive(shuijingGo.transform, toPlaceBuildingLayer);
        Shuijing shuijing = shuijingGo.GetComponent <Shuijing>();

        shuijing.level       = level;
        shuijing.elementType = elementType;
        shuijing.prefabName  = shuijingPrefabName;
        shuijing.Reset();
        //shuijing.SetSelectTag(true);

        RaycastHit hit;
        Ray        ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2, 0));

        Physics.Raycast(ray, out hit, Mathf.Infinity, terrainChunkLayermask);
        shuijing.transform.position = hit.point;

        return(shuijing);
    }
示例#2
0
    NestBuilding CreateNest(PATileTerrain.TileElementType elementType)
    {
        string preName = "";

        if (elementType == PATileTerrain.TileElementType.Fire)
        {
            preName = "v_";
        }
        else if (elementType == PATileTerrain.TileElementType.Wood)
        {
            preName = "w_";
        }
        string     nestPrefabName = preName + nestName;
        GameObject nestGo         = PoolManager.Pools["Shuijing"].Spawn(nestPrefabName).gameObject;

        GameUtility.SetLayerRecursive(nestGo.transform, toPlaceBuildingLayer);
        NestBuilding nest = nestGo.GetComponent <NestBuilding>();

        nest.elementType = elementType;
        nest.prefabName  = nestPrefabName;

        RaycastHit hit;
        Ray        ray = Camera.main.ScreenPointToRay(new Vector3(Screen.width / 2, Screen.height / 2, 0));

        Physics.Raycast(ray, out hit, Mathf.Infinity, terrainChunkLayermask);
        nest.transform.position = hit.point;

        return(nest);
    }
示例#3
0
    Shuijing CreateCrystal(PATileTerrain.PATile tile, int level, PATileTerrain.TileElementType elementType)
    {
        PATileTerrain.PABuildingTile buildingTile = PATileTerrain.PABuildingTile.GetByTile(tileTerrain, tile);
        Shuijing shuijing = CreateCrystal(level, elementType);

        return(PlaceCrystal(shuijing, buildingTile));
    }
示例#4
0
    public void UpgradeSelectShuijing()
    {
        if (selectShuijing == null)
        {
            return;
        }
        PATileTerrain.PATile tile = selectShuijing.tile;
        int newLevel = selectShuijing.level + 1;

        PATileTerrain.TileElementType elementType = selectShuijing.elementType;
        RemoveCrystal(selectShuijing);
        Shuijing shuijing = CreateCrystal(tile, newLevel, elementType);

        //PaintCrystal(shuijing);
        RepaintAllCrystals();
        SetSelectShuijing(null);
    }
示例#5
0
    bool CalTileElement(PATileTerrain.PATile tile, Vector2 crystalPos, float centerValue, float atten, PATileTerrain.TileElementType elementType)
    {
        //tile.Reset();
        Vector2 tilePos  = new Vector2(tile.x + 0.5f, tile.y + 0.5f);
        float   distance = Vector2.Distance(crystalPos, tilePos);
        //if (tile.distance.Equals(-1))
        //    tile.distance = distance;
        //else
        //    tile.distance = Mathf.Min(tile.distance, distance);
        float tileElementValue = Mathf.Max(centerValue - atten * distance, 0);

        if (tileElementValue > 0f)
        {
            tile.element.AddElement(elementType, tileElementValue);
            return(true);
        }
        return(false);
    }