KESSVorschau.cpp 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746
  1. #include "KESSVorschau.h"
  2. #include <DateiSystem.h>
  3. #include <Globals.h>
  4. #include "../../../../Global/Initialisierung.h"
  5. #include "../../../../Global/Variablen.h"
  6. void kESSVorschauKSGSAktion(
  7. void* p, RCArray<KSGSVariable>* parameter, KSGSVariable** retVal)
  8. {
  9. if (!p) return;
  10. ((KESSVorschauKarteScript*)p)->ksgsAktion(parameter, retVal);
  11. }
  12. // Inhalt der KESSVorschauKarteScript Klasse aus KESSVorschau.h
  13. // Konstruktor
  14. KESSVorschauKarteScript::KESSVorschauKarteScript(TextFeld* zLog)
  15. : Thread()
  16. {
  17. ksgs = Framework::getDLLRegister()->ladeDLL(
  18. "KSGScript.dll", "data/bin/KSGScript.dll");
  19. if (ksgs)
  20. {
  21. KSGSGetZeichnung getKSGScript
  22. = (KSGSGetZeichnung)GetProcAddress(ksgs, KSGS_START_FUNKTION);
  23. if (getKSGScript)
  24. {
  25. fenster = getKSGScript();
  26. fenster->setSchriftZ(
  27. dynamic_cast<Schrift*>(uiFactory.initParam.schrift->getThis()));
  28. fenster->setSize(555, 380);
  29. fenster->setCallbackParam(this);
  30. fenster->setCallbackFunktion(kESSVorschauKSGSAktion);
  31. fenster->setLog(dynamic_cast<TextFeld*>(zLog->getThis()));
  32. }
  33. else
  34. {
  35. fenster = 0;
  36. nachLogin->zNachrichtenListe()->addNachricht(new Text("Fehler"),
  37. new Text(
  38. "Der Einstiegspunkt '" KSGS_START_FUNKTION
  39. "' in der DLL-Datei "
  40. "'data/bin/KSGScript.dll' konnte nicht gefunden werden."),
  41. new Text("Ok"),
  42. 0);
  43. }
  44. }
  45. else
  46. {
  47. fenster = 0;
  48. nachLogin->zNachrichtenListe()->addNachricht(new Text("Fehler"),
  49. new Text("Die DLL-Datei 'data/bin/KSGScript.dll' konnte nicht "
  50. "geladen werden."),
  51. new Text("Ok"),
  52. 0);
  53. }
  54. ram = new LRahmen();
  55. ram->setSize(555, 380);
  56. ram->setFarbe(0xFFFFFFFF);
  57. pos = Punkt(220, 10);
  58. sichtbar = 0;
  59. besitztTestVersion = 0;
  60. verbleibend = 0;
  61. vollversionErwerbbar = 1;
  62. testversionErwerbbar = 1;
  63. vvPreis = 0;
  64. tvPreis = 0;
  65. kupfer = 0;
  66. alpha = 0;
  67. aktion = 0;
  68. ak = 0;
  69. }
  70. // Destruktor
  71. KESSVorschauKarteScript::~KESSVorschauKarteScript()
  72. {
  73. if (fenster)
  74. {
  75. fenster->reset();
  76. fenster->release();
  77. }
  78. ram->release();
  79. if (ksgs) Framework::getDLLRegister()->releaseDLL("KSGScript.dll");
  80. }
  81. // nicht constant
  82. void KESSVorschauKarteScript::thread()
  83. {
  84. sichtbar = 0;
  85. while (alpha)
  86. Sleep(100);
  87. if (ak == 1)
  88. {
  89. pfad += "/seite/seite.ksgs";
  90. if (fenster) fenster->setScriptDatei(pfad);
  91. }
  92. fenster->neuLaden();
  93. sichtbar = 1;
  94. ak = 0;
  95. run = 0;
  96. }
  97. void KESSVorschauKarteScript::setScriptParams(
  98. bool hatTV, int tvVerb, bool vvEn, bool tvEn, int vvK, int tvK, int k)
  99. {
  100. besitztTestVersion = hatTV;
  101. verbleibend = tvVerb;
  102. vollversionErwerbbar = vvEn;
  103. testversionErwerbbar = tvEn;
  104. vvPreis = vvK;
  105. tvPreis = tvK;
  106. kupfer = k;
  107. if (sichtbar)
  108. {
  109. ak = 2;
  110. start();
  111. }
  112. }
  113. void KESSVorschauKarteScript::ladeKarteSeite(const char* pfad)
  114. {
  115. if (run) warteAufThread(5000);
  116. if (run) ende();
  117. this->pfad = pfad;
  118. ak = 1;
  119. start();
  120. }
  121. void KESSVorschauKarteScript::ksgsAktion(
  122. RCArray<KSGSVariable>* parameter, KSGSVariable** retVal)
  123. {
  124. KSGSVariable* befehl = parameter->z(0);
  125. if (!befehl) return;
  126. Text* b = befehl->getText();
  127. if (!b) return;
  128. if (b->istGleich("GetBesitzStatus"))
  129. {
  130. int besitz = (int)besitztTestVersion;
  131. KSGSGetVariable getKSGSVariable
  132. = (KSGSGetVariable)GetProcAddress(ksgs, KSGS_VARIABLE_FUNKTION);
  133. if (getKSGSVariable)
  134. {
  135. KSGSVariableDef def
  136. = {KSGS_INT, 0, 3, (Text() += besitz).getText()};
  137. *retVal = getKSGSVariable(fenster, &def);
  138. }
  139. else
  140. {
  141. nachLogin->zNachrichtenListe()->addNachricht(new Text("Fehler"),
  142. new Text(
  143. "Der Einstiegspunkt '" KSGS_VARIABLE_FUNKTION
  144. "' in der DLL-Datei "
  145. "'data/bin/KSGScript.dll' konnte nicht gefunden werden."),
  146. new Text("Ok"),
  147. 0);
  148. }
  149. b->release();
  150. return;
  151. }
  152. if (b->istGleich("GetPreis"))
  153. {
  154. KSGSVariable* version = parameter->z(1);
  155. if (!version)
  156. {
  157. nachLogin->zNachrichtenListe()->addNachricht(new Text("Fehler"),
  158. new Text(
  159. "Auf dieser Seite befindet sich ein Fehler im KSG-Script. "
  160. "Sie könnte eventuell nicht richtig funktionieren."),
  161. new Text("Ok"),
  162. 0);
  163. }
  164. else
  165. {
  166. bool testVersion = !version->getInt();
  167. int k = testVersion ? tvPreis : vvPreis;
  168. KSGSGetVariable getKSGSVariable
  169. = (KSGSGetVariable)GetProcAddress(ksgs, KSGS_VARIABLE_FUNKTION);
  170. if (getKSGSVariable)
  171. {
  172. KSGSVariableDef def = {KSGS_INT, 0, 3, (Text() += k).getText()};
  173. *retVal = getKSGSVariable(fenster, &def);
  174. }
  175. else
  176. {
  177. nachLogin->zNachrichtenListe()->addNachricht(new Text("Fehler"),
  178. new Text("Der Einstiegspunkt '" KSGS_VARIABLE_FUNKTION
  179. "' in der DLL-Datei "
  180. "'data/bin/KSGScript.dll' konnte nicht gefunden "
  181. "werden."),
  182. new Text("Ok"),
  183. 0);
  184. }
  185. }
  186. b->release();
  187. return;
  188. }
  189. if (b->istGleich("GetTestVersionVerbleibend"))
  190. {
  191. KSGSGetVariable getKSGSVariable
  192. = (KSGSGetVariable)GetProcAddress(ksgs, KSGS_VARIABLE_FUNKTION);
  193. if (getKSGSVariable)
  194. {
  195. KSGSVariableDef def
  196. = {KSGS_INT, 0, 3, (Text() += verbleibend).getText()};
  197. *retVal = getKSGSVariable(fenster, &def);
  198. }
  199. else
  200. {
  201. nachLogin->zNachrichtenListe()->addNachricht(new Text("Fehler"),
  202. new Text(
  203. "Der Einstiegspunkt '" KSGS_VARIABLE_FUNKTION
  204. "' in der DLL-Datei "
  205. "'data/bin/KSGScript.dll' konnte nicht gefunden werden."),
  206. new Text("Ok"),
  207. 0);
  208. }
  209. b->release();
  210. return;
  211. }
  212. if (b->istGleich("GetErwerbbarStatus"))
  213. {
  214. int erwerbbar = ((int)testversionErwerbbar & 0x1)
  215. | (((int)vollversionErwerbbar << 1) & 0x2);
  216. KSGSGetVariable getKSGSVariable
  217. = (KSGSGetVariable)GetProcAddress(ksgs, KSGS_VARIABLE_FUNKTION);
  218. if (getKSGSVariable)
  219. {
  220. KSGSVariableDef def
  221. = {KSGS_INT, 0, 3, (Text() += erwerbbar).getText()};
  222. *retVal = getKSGSVariable(fenster, &def);
  223. }
  224. else
  225. {
  226. nachLogin->zNachrichtenListe()->addNachricht(new Text("Fehler"),
  227. new Text(
  228. "Der Einstiegspunkt '" KSGS_VARIABLE_FUNKTION
  229. "' in der DLL-Datei "
  230. "'data/bin/KSGScript.dll' konnte nicht gefunden werden."),
  231. new Text("Ok"),
  232. 0);
  233. }
  234. b->release();
  235. return;
  236. }
  237. if (b->istGleich("GetKupfer"))
  238. {
  239. KSGSGetVariable getKSGSVariable
  240. = (KSGSGetVariable)GetProcAddress(ksgs, KSGS_VARIABLE_FUNKTION);
  241. if (getKSGSVariable)
  242. {
  243. KSGSVariableDef def
  244. = {KSGS_INT, 0, 3, (Text() += kupfer).getText()};
  245. *retVal = getKSGSVariable(fenster, &def);
  246. }
  247. else
  248. {
  249. nachLogin->zNachrichtenListe()->addNachricht(new Text("Fehler"),
  250. new Text(
  251. "Der Einstiegspunkt '" KSGS_VARIABLE_FUNKTION
  252. "' in der DLL-Datei "
  253. "'data/bin/KSGScript.dll' konnte nicht gefunden werden."),
  254. new Text("Ok"),
  255. 0);
  256. }
  257. b->release();
  258. return;
  259. }
  260. if (b->istGleich("Kaufen"))
  261. {
  262. KSGSVariable* version = parameter->z(1);
  263. if (!version)
  264. {
  265. nachLogin->zNachrichtenListe()->addNachricht(new Text("Fehler"),
  266. new Text(
  267. "Auf dieser Seite befindet sich ein Fehler im KSG-Script. "
  268. "Sie könnte eventuell nicht richtig funktionieren."),
  269. new Text("Ok"),
  270. 0);
  271. }
  272. b->release();
  273. return;
  274. }
  275. if (b->istGleich("GetBild"))
  276. {
  277. KSGSVariable* pfad = parameter->z(1);
  278. KSGSVariable* name = parameter->z(2);
  279. if (!pfad || !name)
  280. {
  281. nachLogin->zNachrichtenListe()->addNachricht(new Text("Fehler"),
  282. new Text(
  283. "Auf dieser Seite befindet sich ein Fehler im KSG-Script. "
  284. "Sie könnte eventuell nicht richtig funktionieren."),
  285. new Text("Ok"),
  286. 0);
  287. }
  288. else
  289. {
  290. Text* pf = pfad->getText();
  291. Text* n = name->getText();
  292. if (!pf || !n)
  293. {
  294. nachLogin->zNachrichtenListe()->addNachricht(new Text("Fehler"),
  295. new Text(
  296. "Auf dieser Seite befindet sich ein Fehler im "
  297. "KSG-Script. "
  298. "Sie könnte eventuell nicht richtig funktionieren."),
  299. new Text("Ok"),
  300. 0);
  301. }
  302. else
  303. {
  304. KSGSGetVariable getKSGSVariable
  305. = (KSGSGetVariable)GetProcAddress(
  306. ksgs, KSGS_VARIABLE_FUNKTION);
  307. if (getKSGSVariable)
  308. {
  309. int p = n->positionVon(".ltdb/");
  310. if (p < 0)
  311. p = 0;
  312. else
  313. p += 6;
  314. Text nn = Text(pf->getText()) + "/"
  315. + (const char*)(n->getText() + p);
  316. Bild* b = bilder->get(nn);
  317. if (b)
  318. {
  319. KSGSVariableDef def = {KSGS_BILD, 0, 3, ""};
  320. KSGSVariable* ret = getKSGSVariable(fenster, &def);
  321. KSGSSetBild setKSGSBild = (KSGSSetBild)GetProcAddress(
  322. ksgs, KSGS_SET_BILD_FUNKTION);
  323. if (!setKSGSBild)
  324. {
  325. nachLogin->zNachrichtenListe()->addNachricht(
  326. new Text("Fehler"),
  327. new Text("Der Einstiegspunkt "
  328. "'" KSGS_SET_BILD_FUNKTION
  329. "' in der DLL-Datei "
  330. "'data/bin/KSGScript.dll' konnte "
  331. "nicht gefunden werden."),
  332. new Text("Ok"),
  333. 0);
  334. b->release();
  335. }
  336. else
  337. setKSGSBild(ret, b);
  338. *retVal = ret;
  339. }
  340. }
  341. else
  342. {
  343. nachLogin->zNachrichtenListe()->addNachricht(
  344. new Text("Fehler"),
  345. new Text("Der Einstiegspunkt '" KSGS_VARIABLE_FUNKTION
  346. "' in der DLL-Datei "
  347. "'data/bin/KSGScript.dll' konnte nicht "
  348. "gefunden werden."),
  349. new Text("Ok"),
  350. 0);
  351. }
  352. }
  353. if (pf) pf->release();
  354. if (n) n->release();
  355. }
  356. b->release();
  357. return;
  358. }
  359. }
  360. void KESSVorschauKarteScript::doPublicMausEreignis(MausEreignis& me)
  361. {
  362. me.mx -= pos.x;
  363. me.my -= pos.y;
  364. if (fenster) fenster->doPublicMausEreignis(me);
  365. me.mx += pos.x;
  366. me.my += pos.y;
  367. }
  368. void KESSVorschauKarteScript::doTastaturEreignis(TastaturEreignis& te)
  369. {
  370. if (fenster) fenster->doTastaturEreignis(te);
  371. }
  372. bool KESSVorschauKarteScript::tick(double zeit)
  373. {
  374. bool rend = fenster ? fenster->tick(zeit) : 0;
  375. if (!sichtbar && alpha > 0)
  376. {
  377. if (alpha - zeit * 150 < 0)
  378. alpha = 0;
  379. else
  380. alpha -= (unsigned char)(zeit * 150);
  381. rend = 1;
  382. }
  383. if (sichtbar && alpha < 255)
  384. {
  385. if (alpha + zeit * 150 > 255)
  386. alpha = 255;
  387. else
  388. alpha += (unsigned char)(zeit * 150);
  389. rend = 1;
  390. }
  391. return rend;
  392. }
  393. void KESSVorschauKarteScript::render(Bild& zRObj)
  394. {
  395. if (!zRObj.setDrawOptions(pos.x, pos.y, ram->getBreite(), ram->getHeight()))
  396. return;
  397. zRObj.setAlpha(alpha);
  398. ram->render(zRObj);
  399. if (fenster) fenster->render(zRObj);
  400. zRObj.releaseAlpha();
  401. zRObj.releaseDrawOptions();
  402. }
  403. // Inhalt der KESSVorschauKarte Klasse aus KESSVorschau.h
  404. // Konstruktor
  405. KESSVorschauKarte::KESSVorschauKarte()
  406. : ReferenceCounter()
  407. {
  408. auswählen = initKnopf(173, 73, 22, 22, 0, "");
  409. auswählen->setStyle(Knopf::Style::Sichtbar | Knopf::Style::Erlaubt
  410. | Knopf::Style::Rahmen | Knopf::Style::Hintergrund
  411. | Knopf::Style::HBild | Knopf::Style::KlickBuffer);
  412. auswählen->setHintergrundBildZ(
  413. bilder->get("data/client/bilder/shop.ltdb/weiter.png"));
  414. initToolTip(auswählen, "Karte auswählen.");
  415. auswählen->setRahmenBreite(1);
  416. hintergrund = 0;
  417. ausgewählt = new AlphaFeld();
  418. ausgewählt->setPosition(1, 1);
  419. ausgewählt->setSize(198, 98);
  420. ausgewählt->setFarbe(0x0000FF00);
  421. ausgewählt->setStrength(10);
  422. ram = new LRahmen();
  423. ram->setPosition(10, 10);
  424. ram->setSize(200, 100);
  425. ram->setFarbe(0xFFFFFFFF);
  426. ausw = 0;
  427. rend = 0;
  428. }
  429. // Destruktor
  430. KESSVorschauKarte::~KESSVorschauKarte()
  431. {
  432. auswählen->release();
  433. if (hintergrund) hintergrund->release();
  434. ausgewählt->release();
  435. ram->release();
  436. }
  437. // nicht constant
  438. void KESSVorschauKarte::ladeKarte(const char* pfad)
  439. {
  440. LTDBDatei* datei = new LTDBDatei();
  441. Text* bdpf = new Text(pfad);
  442. bdpf->append("/titelbg.ltdb");
  443. datei->setDatei(bdpf);
  444. hintergrund = datei->laden(0, new Text("auswbg.jpg"));
  445. datei->release();
  446. }
  447. bool KESSVorschauKarte::doPublicMausEreignis(MausEreignis& me)
  448. {
  449. bool vera = me.verarbeitet;
  450. auswählen->doPublicMausEreignis(me);
  451. if (!vera && me.verarbeitet && me.id == ME_RLinks)
  452. {
  453. ausw = 1;
  454. return 1;
  455. }
  456. return 0;
  457. }
  458. bool KESSVorschauKarte::tick(double zeit)
  459. {
  460. rend |= ausgewählt->tick(zeit);
  461. rend |= auswählen->tick(zeit);
  462. int a = (ausgewählt->getFarbe() >> 24) & 0xFF;
  463. if (ausw && a < 255)
  464. {
  465. if (a + 150 * zeit > 255)
  466. a = 255;
  467. else
  468. a += (int)(zeit * 150);
  469. ausgewählt->setFarbe(
  470. ((a << 24) & 0xFF000000) | (ausgewählt->getFarbe() & 0xFFFFFF));
  471. rend = 1;
  472. }
  473. if (!ausw && a > 0)
  474. {
  475. if (a - 150 * zeit < 0)
  476. a = 0;
  477. else
  478. a += (int)(zeit * 150);
  479. ausgewählt->setFarbe(
  480. ((a << 24) & 0xFF000000) | (ausgewählt->getFarbe() & 0xFFFFFF));
  481. rend = 1;
  482. }
  483. bool ret = rend;
  484. rend = 0;
  485. return ret;
  486. }
  487. void KESSVorschauKarte::render(Bild& zRObj)
  488. {
  489. ram->render(zRObj);
  490. if (!zRObj.setDrawOptions(ram->getX(), ram->getY(), 200, 100)) return;
  491. if (hintergrund) zRObj.drawBild(1, 1, 198, 98, *hintergrund);
  492. ausgewählt->render(zRObj);
  493. auswählen->render(zRObj);
  494. zRObj.releaseDrawOptions();
  495. }
  496. // Inhalt der KESSVorschau Klasse aus KESSVorschau.h
  497. // Konstruktor
  498. KESSVorschau::KESSVorschau()
  499. : Zeichnung()
  500. {
  501. tr = new TextRenderer(
  502. dynamic_cast<Schrift*>(uiFactory.initParam.schrift->getThis()));
  503. log = initTextFeld(10,
  504. 400,
  505. 860,
  506. 90,
  507. TextFeld::Style::TextGebiet & ~TextFeld::Style::Erlaubt,
  508. "Log:\n");
  509. script = new KESSVorschauKarteScript(log);
  510. karte = new KESSVorschauKarte();
  511. beenden = initKnopf(10, 500, 100, 20, Knopf::Style::Sichtbar, "Zurück");
  512. besitztTestVersion = initAuswahlBox(10,
  513. 120,
  514. 200,
  515. 20,
  516. ABSTYLE,
  517. {"Besitzt Testversion nicht", "Besitzt Testversion"});
  518. spieleVerbleibend
  519. = initTextFeld(110, 150, 100, 20, TextFeld::Style::TextFeld, "0");
  520. spieleVerbleibend->setTastaturEreignis(_nurNummernTE);
  521. vvErwerbbar = initAuswahlBox(10,
  522. 180,
  523. 200,
  524. 20,
  525. ABSTYLE,
  526. {"Vollversion erwerbbar", "Vollversion nicht erwerbbar"});
  527. tvErwerbbar = initAuswahlBox(10,
  528. 210,
  529. 200,
  530. 20,
  531. ABSTYLE,
  532. {"Testversion erwerbbar", "Testversion nicht erwerbbar"});
  533. vvPreis = initTextFeld(110, 240, 100, 20, TextFeld::Style::TextFeld, "0");
  534. vvPreis->setTastaturEreignis(_nurNummernTE);
  535. tvPreis = initTextFeld(110, 270, 100, 20, TextFeld::Style::TextFeld, "0");
  536. tvPreis->setTastaturEreignis(_nurNummernTE);
  537. kupfer = initTextFeld(110, 300, 100, 20, TextFeld::Style::TextFeld, "0");
  538. pfad = "";
  539. alpha = 0;
  540. sichtbar = 0;
  541. tickVal = 0;
  542. aktion = 0;
  543. rend = 0;
  544. }
  545. // Destruktor
  546. KESSVorschau::~KESSVorschau()
  547. {
  548. tr->release();
  549. script->release();
  550. karte->release();
  551. beenden->release();
  552. besitztTestVersion->release();
  553. spieleVerbleibend->release();
  554. vvErwerbbar->release();
  555. tvErwerbbar->release();
  556. vvPreis->release();
  557. tvPreis->release();
  558. kupfer->release();
  559. log->release();
  560. }
  561. // nicht constant
  562. int KESSVorschau::getAktion()
  563. {
  564. int ret = aktion;
  565. aktion = 0;
  566. return ret;
  567. }
  568. void KESSVorschau::ladeKarte(const char* pfad)
  569. {
  570. karte->ladeKarte(pfad);
  571. this->pfad = pfad;
  572. }
  573. void KESSVorschau::setSichtbar(bool sicht)
  574. {
  575. sichtbar = sicht;
  576. }
  577. void KESSVorschau::doPublicMausEreignis(MausEreignis& me)
  578. {
  579. if (!sichtbar) return;
  580. bool paramUpdate = 0;
  581. int ausw = vvErwerbbar->getAuswahl();
  582. vvErwerbbar->doPublicMausEreignis(me);
  583. if (ausw != vvErwerbbar->getAuswahl() && me.id == ME_RLinks)
  584. {
  585. vvErwerbbar->einklappen();
  586. paramUpdate = 1;
  587. }
  588. ausw = tvErwerbbar->getAuswahl();
  589. tvErwerbbar->doPublicMausEreignis(me);
  590. if (ausw != tvErwerbbar->getAuswahl() && me.id == ME_RLinks)
  591. {
  592. tvErwerbbar->einklappen();
  593. paramUpdate = 1;
  594. }
  595. ausw = besitztTestVersion->getAuswahl();
  596. besitztTestVersion->doPublicMausEreignis(me);
  597. if (ausw != besitztTestVersion->getAuswahl() && me.id == ME_RLinks)
  598. {
  599. besitztTestVersion->einklappen();
  600. paramUpdate = 1;
  601. }
  602. script->doPublicMausEreignis(me);
  603. if (karte->doPublicMausEreignis(me)) script->ladeKarteSeite(pfad);
  604. bool vera = me.verarbeitet;
  605. beenden->doPublicMausEreignis(me);
  606. if (!vera && me.verarbeitet && me.id == ME_RLinks) aktion = 1;
  607. vvPreis->doPublicMausEreignis(me);
  608. tvPreis->doPublicMausEreignis(me);
  609. kupfer->doPublicMausEreignis(me);
  610. spieleVerbleibend->doPublicMausEreignis(me);
  611. log->doPublicMausEreignis(me);
  612. if (paramUpdate)
  613. {
  614. script->setScriptParams(besitztTestVersion->getAuswahl() == 1,
  615. (int)*spieleVerbleibend->zText(),
  616. vvErwerbbar->getAuswahl() == 0,
  617. tvErwerbbar->getAuswahl() == 0,
  618. (int)*vvPreis->zText(),
  619. (int)*tvPreis->zText(),
  620. (int)*kupfer->zText());
  621. }
  622. }
  623. void KESSVorschau::doTastaturEreignis(TastaturEreignis& te)
  624. {
  625. if (!sichtbar) return;
  626. if (!te.verarbeitet && te.id == TE_Release && te.virtualKey == T_Enter)
  627. {
  628. if (spieleVerbleibend->hatStyle(TextFeld::Style::Fokus)
  629. || vvPreis->hatStyle(TextFeld::Style::Fokus)
  630. || tvPreis->hatStyle(TextFeld::Style::Fokus)
  631. || kupfer->hatStyle(TextFeld::Style::Fokus))
  632. {
  633. script->setScriptParams(besitztTestVersion->getAuswahl() == 1,
  634. (int)*spieleVerbleibend->zText(),
  635. vvErwerbbar->getAuswahl() == 0,
  636. tvErwerbbar->getAuswahl() == 0,
  637. (int)*vvPreis->zText(),
  638. (int)*tvPreis->zText(),
  639. (int)*kupfer->zText());
  640. }
  641. }
  642. script->doTastaturEreignis(te);
  643. spieleVerbleibend->doTastaturEreignis(te);
  644. vvPreis->doTastaturEreignis(te);
  645. tvPreis->doTastaturEreignis(te);
  646. kupfer->doTastaturEreignis(te);
  647. }
  648. bool KESSVorschau::tick(double zeit)
  649. {
  650. bool ret = script->tick(zeit);
  651. ret |= karte->tick(zeit);
  652. ret |= beenden->tick(zeit);
  653. ret |= spieleVerbleibend->tick(zeit);
  654. ret |= vvPreis->tick(zeit);
  655. ret |= tvPreis->tick(zeit);
  656. ret |= kupfer->tick(zeit);
  657. ret |= log->tick(zeit);
  658. ret |= tvErwerbbar->tick(zeit);
  659. ret |= vvErwerbbar->tick(zeit);
  660. ret |= besitztTestVersion->tick(zeit);
  661. tickVal += zeit * 150;
  662. int val = 0;
  663. if (tickVal > 1)
  664. val = (int)tickVal;
  665. else
  666. return ret;
  667. if (sichtbar && alpha != 255)
  668. {
  669. if (alpha + val > 255)
  670. alpha = 255;
  671. else
  672. alpha += val;
  673. ret = 1;
  674. }
  675. if (!sichtbar && alpha != 0)
  676. {
  677. if (alpha - val < 0)
  678. alpha = 0;
  679. else
  680. alpha -= val;
  681. ret = 1;
  682. }
  683. return ret;
  684. }
  685. void KESSVorschau::render(Bild& zRObj)
  686. {
  687. zRObj.setAlpha(alpha);
  688. script->render(zRObj);
  689. karte->render(zRObj);
  690. beenden->render(zRObj);
  691. spieleVerbleibend->render(zRObj);
  692. log->render(zRObj);
  693. vvPreis->render(zRObj);
  694. tvPreis->render(zRObj);
  695. kupfer->render(zRObj);
  696. tr->setSchriftSize(12);
  697. Text txt = "Test Spiele:";
  698. tr->renderText(10, 154, txt, zRObj, 0xFFFFFFFF);
  699. txt = "Voll Preis:";
  700. tr->renderText(10, 244, txt, zRObj, 0xFFFFFFFF);
  701. txt = "Test Preis:";
  702. tr->renderText(10, 274, txt, zRObj, 0xFFFFFFFF);
  703. txt = "Kupfer Besitz:";
  704. tr->renderText(10, 304, txt, zRObj, 0xFFFFFFFF);
  705. txt = "Diese Werte sind nur zum\nTesten und haben keinerlei\nEinfluss auf "
  706. "den Shop.";
  707. tr->renderText(10, 334, txt, zRObj, 0xFFFFFFFF);
  708. tvErwerbbar->render(zRObj);
  709. vvErwerbbar->render(zRObj);
  710. besitztTestVersion->render(zRObj);
  711. zRObj.releaseAlpha();
  712. }
  713. // constant
  714. bool KESSVorschau::istSichtbar() const
  715. {
  716. return sichtbar;
  717. }