Load.cpp 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. #include "Load.h"
  2. #include <Array.h>
  3. #include <AsynchronCall.h>
  4. #include <FileSystem.h>
  5. #include <Text.h>
  6. #include "FactoryClient.h"
  7. #include "Globals.h"
  8. #include "Initialization.h"
  9. #include "ItemType.h"
  10. LoadMenu::LoadMenu(Screen* zScreen)
  11. : Menu(zScreen)
  12. {
  13. Point center = zScreen->getBackBufferSize() / 2;
  14. all = initProgressBar(
  15. center.x - 100, center.y - 65, 200, 30, ProgressBar::Style::normal);
  16. stageTitle = initTextField(center.x - 100,
  17. center.y - 30,
  18. zScreen->getBackBufferSize().x - center.x + 100,
  19. 15,
  20. TextField::Style::Text,
  21. "");
  22. stage = initProgressBar(
  23. center.x - 100, center.y - 15, 200, 30, ProgressBar::Style::normal);
  24. stage->removeStyle(ProgressBar::Style::Visible);
  25. stepTitle = initTextField(center.x - 100,
  26. center.y + 20,
  27. zScreen->getBackBufferSize().x - center.x + 100,
  28. 15,
  29. TextField::Style::Text,
  30. "");
  31. step = initProgressBar(
  32. center.x - 100, center.y + 35, 200, 30, ProgressBar::Style::normal);
  33. step->removeStyle(ProgressBar::Style::Visible);
  34. elements.add(step);
  35. elements.add(stepTitle);
  36. elements.add(stage);
  37. elements.add(stageTitle);
  38. elements.add(all);
  39. }
  40. void LoadMenu::stepProgress(int stepSize)
  41. {
  42. step->actionPlus(stepSize);
  43. }
  44. void LoadMenu::beginNextStep(const char* title, int nextStepSize)
  45. {
  46. stepTitle->setText(title);
  47. step->setActionCount(nextStepSize);
  48. step->reset();
  49. step->addStyle(ProgressBar::Style::Visible);
  50. }
  51. void LoadMenu::stageProgress(int stepSize)
  52. {
  53. stage->actionPlus(stepSize);
  54. step->removeStyle(ProgressBar::Style::Visible);
  55. }
  56. void LoadMenu::beginNextStage(const char* title, int nextStageSize)
  57. {
  58. stageTitle->setText(title);
  59. stage->setActionCount(nextStageSize);
  60. stage->reset();
  61. stage->addStyle(ProgressBar::Style::Visible);
  62. step->removeStyle(ProgressBar::Style::Visible);
  63. }
  64. void LoadMenu::allProgress(int stepSize)
  65. {
  66. all->actionPlus(stepSize);
  67. stage->removeStyle(ProgressBar::Style::Visible);
  68. step->removeStyle(ProgressBar::Style::Visible);
  69. }
  70. void LoadMenu::load(FactoryClient* client,
  71. Text name,
  72. Text secret,
  73. unsigned short port,
  74. std::function<void(int, Text)> onFinish)
  75. {
  76. all->setActionCount(9);
  77. all->reset();
  78. stageTitle->setText("");
  79. stepTitle->setText("");
  80. step->removeStyle(ProgressBar::Style::Visible);
  81. stage->removeStyle(ProgressBar::Style::Visible);
  82. new AsynchronCall(
  83. "Load Menu", [this, client, name, secret, port, onFinish]() {
  84. Text tmp = secret;
  85. int result = client->join(name, tmp, port);
  86. onFinish(result, tmp);
  87. });
  88. }
  89. Image* loadImage(Framework::Text path)
  90. {
  91. if (path.beginnsWith("itemType:"))
  92. {
  93. Text* typeIdName = path.getTeilText(9);
  94. for (int i = 0; i < itemTypeCount; i++)
  95. {
  96. if (itemTypes[i]->getName().isEqual(*typeIdName))
  97. {
  98. Image* img
  99. = dynamic_cast<Image*>(itemTypes[i]->zIcon()->getThis());
  100. typeIdName->release();
  101. return img;
  102. }
  103. }
  104. typeIdName->release();
  105. return 0;
  106. }
  107. else
  108. {
  109. LTDBFile file;
  110. file.setFile(
  111. path.getTeilText(0, path.positionOf("/", path.countOf("/") - 1)));
  112. file.readData(0);
  113. return file.load(0,
  114. path.getTeilText(path.positionOf("/", path.countOf("/") - 1) + 1));
  115. }
  116. }