Esempio n. 1
0
 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++;
 }
Esempio n. 2
0
    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--;
    }
Esempio n. 3
0
    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);
    }
Esempio n. 4
0
    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);
    }
Esempio n. 5
0
 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
     });
 }
Esempio n. 6
0
 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);
 }