Beispiel #1
0
        //currentblock function for position and variables to calculate speed
        public void currentBlock()
        {
            p = currSpeedms;
            if (block_distance >= p)
            {
                block_distance -= p;
            }
            else
            {
                double p = currSpeedms;
                p = p - block_distance;

                next_block = TrainSimulation.trackModelWindow.getNextBlock(prev_block, current_block);
                if (next_block == null)
                {
                    next_block = current_block;
                }
                prev_block    = current_block;
                current_block = next_block;


                int number = 0;
                if (current_block.switchBeacon != null)
                {
                    number = current_block.switchBeacon.blockId;
                }
                TC.sendSwitchBeaconInfo(number);
                block_distance = current_block.length - p;
                if (lineId == 2)
                {
                    if (TrackModelUI.redLineStationBeacons[current_block.blockNum] != null)
                    {
                        TC.getStationBeaconInfo(TrackModelUI.redLineStationBeacons[current_block.blockNum].isPreviousToNext, TrackModelUI.redLineStationBeacons[current_block.blockNum].distanceTo, TrackModelUI.redLineStationBeacons[current_block.blockNum].name, TrackModelUI.redLineStationBeacons[current_block.blockNum].isLeft);
                    }
                }

                if (lineId == 1)
                {
                    if (TrackModelUI.greenLineStationBeacons[current_block.blockNum] != null)
                    {
                        TC.getStationBeaconInfo(TrackModelUI.greenLineStationBeacons[current_block.blockNum].isPreviousToNext, TrackModelUI.greenLineStationBeacons[current_block.blockNum].distanceTo, TrackModelUI.greenLineStationBeacons[current_block.blockNum].name, TrackModelUI.greenLineStationBeacons[current_block.blockNum].isLeft);
                    }
                }
                TrainSimulation.trackModelWindow.updateBlockStatus(prev_block.blockId, false);
                TrainSimulation.trackModelWindow.updateBlockStatus(current_block.blockId, true);
                // Train_Height_L.Text = current_block.blockNum.ToString() + " ..";
            }

            //If train door is open, move passengers between the track and train
            if (Train_Door != 0)
            {
                // Enter Passenger Code
                stationPassengers(current_block.station);
                train_width = 6;
            }

            //Check for train failures
            if (TC == null)
            {
                return;
            }
            if (TC.failureStatus == 0)
            {
                label26.ForeColor = Color.Green;
                label26.Text      = "Train Engine - Good";
                label27.ForeColor = Color.Green;
                label27.Text      = "Signal Pickup - Good";
                label28.ForeColor = Color.Green;
                label28.Text      = "Brakes - Good";
            }
            else if (TC.failureStatus == 1)
            {
                label26.ForeColor = Color.Red;
                label26.Text      = "Train Engine Failure";
                label27.ForeColor = Color.Green;
                label27.Text      = "Signal Pickup - Good";
                label28.ForeColor = Color.Green;
                label28.Text      = "Brakes - Good";
            }
            else if (TC.failureStatus == 2)
            {
                label26.ForeColor = Color.Green;
                label26.Text      = "Train Engine - Good";
                label27.ForeColor = Color.Red;
                label27.Text      = "Signal Pickup Failure";
                label28.ForeColor = Color.Green;
                label28.Text      = "Brakes - Good";
            }
            else if (TC.failureStatus == 3)
            {
                label26.ForeColor = Color.Green;
                label26.Text      = "Train Engine - Good";
                label27.ForeColor = Color.Green;
                label27.Text      = "Signal Pickup - Good";
                label28.ForeColor = Color.Red;
                label28.Text      = "Brakes Failure";
            }
        }