[ Cola @ 17.11.2006. 19:33 ] @
Pravim jednu poteznu strategiju.Napravio sam vizuelizaciju igrice u klasi TInterface. Imam klasu TEngine u kojoj su definisane osnovne funkcije koje su potrebne za komunikaciju sa TInterface. Svi logiku za engine koju budem budem pravio, pravit cu u naslednicima klase TEngine. Zelim da poredim engine medjusobno da vidim koji je bolji. Sada me interesuje sledece:
- kada nepravim novi engine kako da ga ucitam iz interfejsa a da ne moram da kompajliram iznova sve?
znam da moze sa ShellExecute ali onda moram preko nekoga porta da komuniciram sa interfejsom. Ok nije ni to lose ali mi se u start liniji otvore 3 programa ako igraju dva engina (interfejs, engine1 i engine2)
Postoji li drugi nacin za to tj. kao se to stvarno radi u igricama?
Unapred zahvalan

[ vlaiv @ 28.11.2006. 14:41 ] @
Probaj ovako:

Spakujes lepo sve TEngine naslednike koje budes pravio u neki dll ...

Pa iz dll-a exportujes neke fine funkcije tipa:

1. GetEngineName - vraca naziv engine-a
2. GetEngineVersion - vraca recimo verziju engine-a
3. GetEngineItself - vraca pointer na instanciranu klasu naslednika TEngine-a ...

Pa onda ides LoadLibrary ...

GetProcAdress ili kako vec ide za te funkcije

Pa pozoves GetEngineItself u fazonu

TEngine* myEngine = (TEngine*) GetEngineItself();

i posle raspalis sa myEngine sve ostalo kako si i planirao ...