Subversion Repositories programming

Rev

Rev 339 | Rev 344 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 339 Rev 340
Line 201... Line 201...
201
 
201
 
202
    for (i=0; i<num_elevators; i++)
202
    for (i=0; i<num_elevators; i++)
203
        elevator.at(i) -> thread_unpause ();
203
        elevator.at(i) -> thread_unpause ();
204
}
204
}
205
 
205
 
-
 
206
int Controller::which_elevator_is (Elevator *e)
-
 
207
{
-
 
208
    int i;
-
 
209
 
-
 
210
    for (i=0; i<num_elevators; i++)
-
 
211
        if (elevator.at (i) == e)
-
 
212
            return i;
-
 
213
 
-
 
214
    return -1;
-
 
215
}
-
 
216
 
-
 
217
void Controller::stop_at_floor (Elevator *e, int floor)
-
 
218
{
-
 
219
    int elevator_num = which_elevator_is (e);
-
 
220
 
-
 
221
    assert (elevator_num != -1);
-
 
222
 
-
 
223
    pause_all_elevators ();
-
 
224
 
-
 
225
    /*****************
-
 
226
     * Call the gui
-
 
227
     ****************/
-
 
228
 
-
 
229
    // Open the elevator door
-
 
230
    //gui->open_elevator_at (floor, elevator_num);
-
 
231
    gui->open_elevator_at (num_floors-(floor+1), elevator_num);
-
 
232
 
-
 
233
    // Untoggle all buttons on that floor
-
 
234
    if (floor >= 0 && floor <= 8)
-
 
235
        gui->unset_up_button (floor);
-
 
236
 
-
 
237
    if (floor >= 1 && floor <= 9)
-
 
238
        gui->unset_down_button (floor-1);
-
 
239
 
-
 
240
    // Get the floors from the user
-
 
241
    gui->get_floors_from_user (elevator_num);
-
 
242
 
-
 
243
    sleep (4); // FIXME
-
 
244
 
-
 
245
    gui->close_elevator_at (num_floors-(floor+1), elevator_num);
-
 
246
 
-
 
247
    unpause_all_elevators ();
-
 
248
}
-
 
249
 
-
 
250
void Controller::set_gui (Elevator_Window *gui)
-
 
251
{
-
 
252
    this->gui = gui;
-
 
253
}
-
 
254
 
-
 
255
void Controller::update_elevator_position (Elevator *e)
-
 
256
{
-
 
257
    std::ostringstream strstrm;
-
 
258
    int elevator_num = which_elevator_is (e);
-
 
259
 
-
 
260
    assert (elevator_num != -1);
-
 
261
 
-
 
262
    strstrm << e->get_current_floor ();
-
 
263
 
-
 
264
    gui->set_label (elevator_num, strstrm.str());
-
 
265
}
206
 
266