public bool TryMovePassenge(Passenge passenge, Block block, Seat seat, out Vector2 outputPos) { PassengeInTrain passengeInTrain = passenges[passenge]; RemovePassenge(passenge, true); if (IsSeatEmpty(passenge, block, seat, out outputPos)) { AddPassenge(passenge, block, seat); return(true); } else { AddPassenge(passenge, passengeInTrain.mBlock, passengeInTrain.mSeat); } return(false); }
public void RemovePassenge(Passenge passenge, bool useCache = false) { PassengeInTrain passengeInTrain = passenges[passenge]; var tempBlocks = useCache ? passenge.BlocksCache : passenge.Blocks; Debug.Log("tempBlocks:" + tempBlocks.Count); for (int i = 0; i < tempBlocks.Count; i++) { int offsetX = tempBlocks[i].x - passengeInTrain.mBlock.x; int offsetY = tempBlocks[i].y - passengeInTrain.mBlock.y; int trainX = passengeInTrain.mSeat.x + offsetX; int trainY = passengeInTrain.mSeat.y + offsetY; Seats[trainX, trainY].State = Seat.SeatState.Empty; Seats[trainX, trainY].GetComponentInChildren <SpriteRenderer>().color = Color.blue; } passenge.State = Passenge.PassengeState.Standing; passenges.Remove(passenge); }