Ejemplo n.º 1
0
 public EarnedPointEventArgs(int count, int point, string reason, Block.KIND kind)
 {
     this.point  = point;
     this.reason = reason;
     this.kind   = kind;
     this.count  = count;
 }
Ejemplo n.º 2
0
    public void ChangeTheme(Block.KIND kind)
    {
        Sprite newSprite = null;

        alpha    = 100;
        changing = true;
        switch (this.kind = kind)
        {
        case Block.KIND.SPRING:
            newSprite = SpringSprite;
            break;

        case Block.KIND.SUMMER:
            newSprite = SummerSprite;
            break;

        case Block.KIND.FALL:
            newSprite = FallSprite;
            break;

        case Block.KIND.WINTER:
            newSprite = WinterSprite;
            break;
        }

        // 描画していない方の背景を切り替える
        SecondarySprite.sortingOrder         = 0;
        SecondarySprite.sprite               = newSprite;
        SecondarySprite.transform.localScale = defaultScale;
        // アルファ値を1.0に
        SecondarySprite.color = ConvertAlpha(SecondarySprite.color, 1.0f);
    }
Ejemplo n.º 3
0
 public DeleteBlockInfo(int deleted = 0, int connected = 0, KIND kind = KIND.NONE)
 {
     Deleted       = deleted;
     WallConnected = connected;
     Kind          = kind;
 }
Ejemplo n.º 4
0
    private DeleteBlockInfo?checkField(KIND target, int posX, int posY, int startX, int startY)
    {
        var block = blocks.PositionAt(posX, posY, FieldWidth);

        // 消去中ブロックなら0
        if (block.Deleting)
        {
            return(null);
        }

        // 現在位置が壁かどうかを調べる
        if (startX == posX || startY == posY)
        {
            // 始点の壁だった場合は0
            return(null);
        }

        // チェック済みなら0
        if (checkedList.PositionAt(posX, posY, FieldWidth))
        {
            return(null);
        }

        // チェック済みとする
        checkedList.SetValuePosition(posX, posY, FieldWidth, true);

        // 元のブロックと種類が違うブロックなら0
        if (block.Kind != target)
        {
            return(null);
        }

        // 現在位置が壁かどうか
        if (posX == 0 || posY == 0 || posX == FieldWidth - 1 || posY == FieldWidth - 1)
        {
            // その位置のブロックが、始点と同じ種類かどうかを判定
            if (block.Kind == target)
            {
                block.Deleting = true;
                return(new DeleteBlockInfo(1, 1));
            }
            else
            {
                return(null);
            }
        }

        // 各方向のブロックを調べるために再帰する
        var up    = checkField(target, posX, posY + 1, startX, startY);
        var down  = checkField(target, posX, posY - 1, startX, startY);
        var left  = checkField(target, posX - 1, posY, startX, startY);
        var right = checkField(target, posX + 1, posY, startX, startY);

        var r = up + down + left + right;

        // 判定結果を代入
        block.Deleting = r.Deleted > 0 ? true : false;

        if (r.Deleted > 0)
        {
            r.Deleted += 1;
            return(r);
        }
        else
        {
            return(null);
        }
    }