예제 #1
0
    void ChangeElement(int index, int newType)
    {
        var p = powders[index];

        PowderSystemUtils.SchdeduleRemovePowder(ref toDeleteEntities, index);
        PowderGame.Spawn(ref cmdBuffer, p.coord.x, p.coord.y, newType);
    }
예제 #2
0
 public void Execute()
 {
     if (PowderTypes.values[type].IsGenerator())
     {
         if (!isPainting)
         {
             for (var x = coord.x - PowderGame.brushSize; x <= coord.x + PowderGame.brushSize; ++x)
             {
                 if (!PowderSystemUtils.IsOccupied(ref hashMap, x, coord.y))
                 {
                     PowderGame.Spawn(ref cmdBuffer, x, coord.y, type);
                 }
             }
         }
     }
     else
     {
         var size = 0;
         for (var y = coord.y - PowderGame.brushSize; y <= coord.y + PowderGame.brushSize; ++y)
         {
             for (var x = coord.x - size; x <= coord.x + size; ++x)
             {
                 if (!PowderSystemUtils.IsOccupied(ref hashMap, x, y))
                 {
                     PowderGame.Spawn(ref cmdBuffer, x, y, type);
                 }
             }
             size += y < coord.y ? 1 : -1;
         }
     }
 }
예제 #3
0
    void Generate(ref Powder p, ref Neighbors n)
    {
        var generatedType = PowderTypes.values[p.type].generatedElementType;

        if (PowderTypes.values[generatedType].state == PowderState.Liquid || PowderTypes.values[generatedType].state == PowderState.Powder)
        {
            if (n.TopEmpty())
            {
                var generatedPowder = PowderTypes.values[generatedType].creator(new Vector2Int(p.coord.x, p.coord.y - 1));
                PowderGame.Spawn(ref cmdBuffer, generatedPowder);
            }
        }
        else if (n.BottomEmpty())
        {
            var generatedPowder = PowderTypes.values[generatedType].creator(new Vector2Int(p.coord.x, p.coord.y + 1));
            PowderGame.Spawn(ref cmdBuffer, generatedPowder);
        }
    }