Пример #1
0
    bool SwapPusher(PuzzlePusher p)
    {
        List <PuzzlePusher> bar = pusherBars[1];

        switch (p.dir)
        {
        case Dir.left:
            bar = pusherBars[1];
            break;

        case Dir.right:
            bar = pusherBars[0];
            break;
        }

        int posrow = Mathf.RoundToInt(p.transform.position.y - pusherOffsetLeft.y);

        if (posrow >= bar.Count)
        {
            posrow = bar.Count - 1;
        }
        if (posrow < 0)
        {
            posrow = 0;
        }
        if (posrow != p.row)
        {
            bar[p.row]  = bar[posrow];
            bar[posrow] = p;
        }
        pusherDirty = true;
        return(true);
    }
Пример #2
0
    public void RemovePusher(Dir dir, int row)
    {
        int bar = 0;

        switch (dir)
        {
        case Dir.left:
            bar = 1;
            break;

        case Dir.right:
            bar = 0;
            break;
        }

        if (pusherBars[bar].Count > row)
        {
            PuzzlePusher p = pusherBars[bar][row];
            pusherBars[bar][row] = null;
            if (p != null)
            {
                p.Kill();
            }
            pusherDirty = true;
        }
    }
Пример #3
0
    public void OnClick(CommonTouchContral.TouchCursor t)
    {
        PuzzlePusher p = Instantiate(samplePusher, container.transform);

        p.SetPuzzleType((PuzzleTile.PType)randomPuzzleTypeTable.Get());
        container.AddPusher(dir);
    }
Пример #4
0
 public void AddPusherToQuery(PuzzlePusher p)
 {
     if (!pusherQuery.Contains(p))
     {
         if (SwapPusher(p))
         {
             pusherQuery.Add(p);
         }
     }
 }
Пример #5
0
    bool CheckGoToPushPhase()
    {
        if (pusherQuery.Count > 0)
        {
            PuzzlePusher p = pusherQuery[0];
            PushPuzzleRow(p.dir, p.row, p.puzzleType);
            pusherQuery.RemoveAt(0);
            RemovePusher(p.dir, p.row);
            AddPusher(p.dir);

            //MovePuzzle();
            phase     = Phase.push;
            phaseWait = phaseDelay;
            return(true);
        }

        return(false);
    }
Пример #6
0
    public void AddPusher(Dir dir)
    {
        PuzzlePusher p = Instantiate(samplePusher, pusherOffsetLeft, Quaternion.identity, transform);

        p.SetPuzzleType((PuzzleTile.PType)randomTable.Get());
        p.SetDirection(dir);
        p.SetContainer(this);
        switch (dir)
        {
        case Dir.left:
            pusherBars[1].Add(p);
            p.dir = Dir.left;
            break;

        case Dir.right:
            pusherBars[0].Add(p);
            p.dir = Dir.right;
            break;
        }
        pusherDirty = true;
    }