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); }
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; } }
public void OnClick(CommonTouchContral.TouchCursor t) { PuzzlePusher p = Instantiate(samplePusher, container.transform); p.SetPuzzleType((PuzzleTile.PType)randomPuzzleTypeTable.Get()); container.AddPusher(dir); }
public void AddPusherToQuery(PuzzlePusher p) { if (!pusherQuery.Contains(p)) { if (SwapPusher(p)) { pusherQuery.Add(p); } } }
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); }
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; }