public void RemovePassenge(Passenge passenge) { Passenges.Remove(passenge); if (Passenges.Count < SlotSize && SpawnedPassengeCount < PassengeCount) { SpawnPassenge(); } for (int i = 0; i < Passenges.Count; i++) { Vector3 pos = StartPos + MoveDis * i; pos.z = -1; Passenges[i].transform.position = pos; } PassengeLeftCount++; }
public void AddPassenge(Passenge passenge) { var tempPassenges = Passenges; Passenges = new List <Passenge>(); Passenges.Add(passenge); Passenges.AddRange(tempPassenges); for (int i = 0; i < Passenges.Count; i++) { Vector3 pos = StartPos + MoveDis * i; pos.z = -1; Passenges[i].transform.position = pos; } PassengeLeftCount--; }
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); }
public void AddPassenge(Passenge passenge, Block block, Seat seat) { for (int i = 0; i < passenge.Blocks.Count; i++) { int offsetX = passenge.Blocks[i].x - block.x; int offsetY = passenge.Blocks[i].y - block.y; int trainX = seat.x + offsetX; int trainY = seat.y + offsetY; Seats[trainX, trainY].State = Seat.SeatState.Passenge; Seats[trainX, trainY].GetComponentInChildren <SpriteRenderer>().color = Color.red; } passenge.State = Passenge.PassengeState.Sitting; passenges.Add(passenge, new PassengeInTrain { mBlock = new Block { x = block.x, y = block.y }, mSeat = seat }); }
public bool IsSeatEmpty(Passenge passenge, Block block, Seat seat, out Vector2 outputPos) { //List<Vector2> temp = new List<Vector2>(passenge.Blocks.Count); for (int i = 0; i < passenge.Blocks.Count; i++) { int offsetX = passenge.Blocks[i].x - block.x; int offsetY = passenge.Blocks[i].y - block.y; int trainX = seat.x + offsetX; int trainY = seat.y + offsetY; if (trainX < 0 || trainX >= SeatColumn || trainY < 0 || trainY >= SeatRow) { outputPos = Vector2.zero; return(false); } if (Seats[trainX, trainY].State != Seat.SeatState.Empty) { outputPos = Vector2.zero; return(false); } } outputPos = new Vector2(seat.transform.position.x + passenge.transform.position.x - block.transform.position.x, seat.transform.position.y + passenge.transform.position.y - block.transform.position.y); return(true); }