X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2Fengineer%2Fengineer.cpp;h=ea87df659d7e3a7b33ccff8ed519a866295cd993;hb=ae0600f7c3df5b6ef46992b1423888dd0e9a5026;hp=ec5610396f45f3c7530be5bd5f143fbbfafdfc3c;hpb=bc955b09faf8365a72d07bb5ee1253c9b958c897;p=r2c2.git diff --git a/source/engineer/engineer.cpp b/source/engineer/engineer.cpp index ec56103..ea87df6 100644 --- a/source/engineer/engineer.cpp +++ b/source/engineer/engineer.cpp @@ -1,3 +1,10 @@ +/* $Id$ + +This file is part of the MSP Märklin suite +Copyright © 2006-2008 Mikkosoft Productions, Mikko Rasa +Distributed under the GPL +*/ + #include #include #include @@ -71,6 +78,7 @@ Engineer::Engineer(int argc, char **argv): layout_3d.set_quality(quality); catalogue.load("tracks.dat"); + catalogue.load("locos.dat"); const vector &args=getopt.get_args(); if(args.empty()) @@ -92,37 +100,33 @@ Engineer::~Engineer() delete trfc_mgr; } -Train *Engineer::add_train(unsigned addr) +void Engineer::add_train() { - if(addr==0) - { - train_prop=new TrainProperties(*this, ui_res, 0); - root->add(*train_prop); - train_prop->signal_ok.connect(sigc::mem_fun(this, &Engineer::dismiss_train_prop)); - train_prop_stale=false; - train_prop->set_visible(true); + train_prop=new TrainProperties(*this, ui_res, 0); + root->add(*train_prop); + train_prop->signal_ok.connect(sigc::mem_fun(this, &Engineer::dismiss_train_prop)); + train_prop_stale=false; + train_prop->set_visible(true); +} - return 0; - } - else - { - Locomotive *loco=new Locomotive(control, addr); - Train *train=new Train(*trfc_mgr, *loco); - train->set_name(format("Train %d", trfc_mgr->get_trains().size())); - - TrainPanel *tpanel=new TrainPanel(*this, ui_res, *train); - root->add(*tpanel); - int y=main_panel->get_geometry().y; - for(list::iterator i=train_panels.begin(); i!=train_panels.end(); ++i) - y-=(*i)->get_geometry().h; - tpanel->set_position(0, y-tpanel->get_geometry().h); - train_panels.push_back(tpanel); - tpanel->set_visible(true); - - place_train(*train); - - return train; - } +Train *Engineer::add_train(const LocoType &type, unsigned addr) +{ + Locomotive *loco=new Locomotive(type, control, addr); + Train *train=new Train(*trfc_mgr, *loco); + train->set_name(format("Train %d", trfc_mgr->get_trains().size())); + + TrainPanel *tpanel=new TrainPanel(*this, ui_res, *train); + root->add(*tpanel); + int y=main_panel->get_geometry().y; + for(list::iterator i=train_panels.begin(); i!=train_panels.end(); ++i) + y-=(*i)->get_geometry().h; + tpanel->set_position(0, y-tpanel->get_geometry().h); + train_panels.push_back(tpanel); + tpanel->set_visible(true); + + place_train(*train); + + return train; } void Engineer::place_train(Train &train) @@ -158,7 +162,7 @@ int Engineer::main() glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - DataFile::load(ui_res, "engineer.res"); + DataFile::load(ui_res, "marklin.res"); root=new GLtk::Root(ui_res, *wnd); root->set_visible(true);