@@ -133,15 +133,12 @@ void CraftSoldiersState::btnOkClick(Action *)
133133}
134134
135135/* *
136- * Shows the soldiers in a list.
136+ * Shows the soldiers in a list at specified offset/scroll .
137137 */
138- void CraftSoldiersState::init ( )
138+ void CraftSoldiersState::initList (Craft *c, size_t scrl )
139139{
140- State::init ();
141- Craft *c = _base->getCrafts ()->at (_craft);
142- _lstSoldiers->clearList ();
143-
144140 int row = 0 ;
141+ _lstSoldiers->clearList ();
145142 for (std::vector<Soldier*>::iterator i = _base->getSoldiers ()->begin (); i != _base->getSoldiers ()->end (); ++i)
146143 {
147144 _lstSoldiers->addRow (3 , (*i)->getName (true , 19 ).c_str (), tr ((*i)->getRankString ()).c_str (), (*i)->getCraftString (_game->getLanguage ()).c_str ());
@@ -162,10 +159,20 @@ void CraftSoldiersState::init()
162159 _lstSoldiers->setRowColor (row, color);
163160 row++;
164161 }
162+ if (scrl)
163+ _lstSoldiers->scrollTo (scrl);
165164 _lstSoldiers->draw ();
166165
167166 _txtAvailable->setText (tr (" STR_SPACE_AVAILABLE" ).arg (c->getSpaceAvailable ()));
168167 _txtUsed->setText (tr (" STR_SPACE_USED" ).arg (c->getSpaceUsed ()));
168+ }
169+ /* *
170+ * Shows the soldiers in a list.
171+ */
172+ void CraftSoldiersState::init ()
173+ {
174+ State::init ();
175+ initList (_base->getCrafts ()->at (_craft), 0 );
169176
170177}
171178
@@ -202,6 +209,7 @@ void CraftSoldiersState::moveSoldierUp(Action *action, unsigned int row, bool ma
202209 {
203210 _base->getSoldiers ()->erase (_base->getSoldiers ()->begin () + row);
204211 _base->getSoldiers ()->insert (_base->getSoldiers ()->begin (), s);
212+ initList (_base->getCrafts ()->at (_craft), 0 );
205213 }
206214 else
207215 {
@@ -215,8 +223,8 @@ void CraftSoldiersState::moveSoldierUp(Action *action, unsigned int row, bool ma
215223 {
216224 _lstSoldiers->scrollUp (false );
217225 }
226+ initList (_base->getCrafts ()->at (_craft), _lstSoldiers->getScroll ());
218227 }
219- init ();
220228}
221229
222230/* *
@@ -253,6 +261,7 @@ void CraftSoldiersState::moveSoldierDown(Action *action, unsigned int row, bool
253261 {
254262 _base->getSoldiers ()->erase (_base->getSoldiers ()->begin () + row);
255263 _base->getSoldiers ()->insert (_base->getSoldiers ()->end (), s);
264+ initList (_base->getCrafts ()->at (_craft), _lstSoldiers->getRows ());
256265 }
257266 else
258267 {
@@ -266,8 +275,8 @@ void CraftSoldiersState::moveSoldierDown(Action *action, unsigned int row, bool
266275 {
267276 _lstSoldiers->scrollDown (false );
268277 }
278+ initList (_base->getCrafts ()->at (_craft), _lstSoldiers->getScroll ());
269279 }
270- init ();
271280}
272281
273282/* *
0 commit comments