示例#1
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);
    }
示例#2
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);
    }