Rafpast

MainFunction

Jul 11th, 2023
668
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.11 KB | None | 0 0
  1. int main()
  2. {
  3.     const std::vector<sf::VideoMode> videoMode = sf::VideoMode::getFullscreenModes();
  4.  
  5.     sf::RenderWindow window(videoMode.at(0), "Proste metro");
  6.  
  7.     setIcon(window);
  8.  
  9.     sf::View view = window.getDefaultView();
  10.  
  11.     sf::Event event;
  12.  
  13.     sf::Font myfont;
  14.  
  15.     if (!myfont.loadFromFile("arial.ttf"))
  16.     {
  17.         std::cerr << "Could not find contb.ttf font." << std::endl;
  18.     }
  19.  
  20.     bool newScreen = false, pressedButton = false, isGameSaved = false, resultsShown;
  21.  
  22.     int programState = 0;// 0 - Głowne menu, 1 - Nowa gra, 2 - Zapisana gra, 3 - wyniki
  23.  
  24.     float screenCenterX = (float)window.getSize().x / 2, deltaTime = 0.0f;
  25.  
  26.     setttings set((float)window.getSize().x, (float)window.getSize().y);
  27.  
  28.     std::vector<gui::button> menu = menuCreation(myfont, screenCenterX, 400.f, programState, set);
  29.  
  30.     sf::Text gameTitle = setGameTitle(myfont, screenCenterX);
  31.  
  32.     game myGame(myfont, window.getSize());
  33.  
  34.     std::vector<sf::Text> textResults;
  35.  
  36.     std::vector<result> results;
  37.  
  38.     sf::Text newSeed, newName;
  39.  
  40.     usefulFunctions funct;
  41.  
  42.     sf::Text savedGame;
  43.  
  44.     sf::Clock clock;
  45.  
  46.     savedGame.setFont(myfont);
  47.     savedGame.setCharacterSize(20);
  48.     savedGame.setString("Zapisana gra");
  49.     savedGame.setOrigin(gameTitle.getGlobalBounds().width / 2, gameTitle.getGlobalBounds().height / 2);
  50.     savedGame.setPosition(sf::Vector2f(screenCenterX / 4, 200.f));//screenCenterX, 400.f
  51.    
  52.  
  53.     set.setKeybordShortcut('s');
  54.  
  55.     string s;
  56.  
  57.     textBox boxWithText;
  58.  
  59.     sf::Text textboxName;
  60.  
  61.     boxWithText.setLimit(10);
  62.     boxWithText.setFont(myfont);
  63.     boxWithText.setName(textboxName);
  64.     boxWithText.setPosition(300.f, 300.f);
  65.    
  66.  
  67.     while (window.isOpen())
  68.     {
  69.         deltaTime = clock.restart().asSeconds();
  70.  
  71.         while (window.pollEvent(event))
  72.         {
  73.             switch (event.type)
  74.             {
  75.  
  76.             case sf::Event::Closed:
  77.                 window.close();
  78.                 break;
  79.  
  80.             case sf::Event::TextEntered:
  81.                 if (pressedButton)
  82.                 {
  83.                     std::regex reg("!~");
  84.                     s += static_cast<char>(event.text.unicode);
  85.  
  86.                     if (std::regex_match(s, reg))
  87.                     {
  88.                         myGame.setMapName(myGame.getMapName() + s);
  89.                     }
  90.  
  91.                     s = "";
  92.                 }
  93.  
  94.                 if (static_cast<char>(event.text.unicode) == set.getKeybordShortcuts(0))
  95.                 {
  96.                     myGame.startStopGame();
  97.                 }
  98.  
  99.                 break;
  100.             case sf::Event::MouseButtonPressed:
  101.  
  102.                 for (gui::button& button : menu)
  103.                 {
  104.                     if (button.getState() == gui::state::clicked)
  105.                     {
  106.                         switch (programState)
  107.                         {
  108.  
  109.                         case 0://Start gry
  110.  
  111.                             if (button.getText() == "Wyjscie")
  112.                             {
  113.                                 window.close();
  114.                             }
  115.  
  116.                             break;
  117.                         case 1://Nowa gra
  118.                             if (button.getText() == "Podaj nazwe")
  119.                             {
  120.                                 pressedButton = !pressedButton;
  121.  
  122.                                 newName.setFont(myfont);
  123.                                 newName.setCharacterSize(20);
  124.                                 newName.setString(myGame.getMapName());
  125.                                 newName.setOrigin(newName.getGlobalBounds().width / 2, newName.getGlobalBounds().height / 2);
  126.                                 newName.setPosition(sf::Vector2f(button.getPosition().x, button.getPosition().y - 50));
  127.  
  128.                             }
  129.                             else if (button.getText() == "Wygenerowanie losowego ziarna")
  130.                             {
  131.                                 int randomSeed = funct.generateRandomInt(0, 10000);
  132.  
  133.                                 newSeed.setFont(myfont);
  134.                                 newSeed.setCharacterSize(20);
  135.                                 newSeed.setString(std::to_string(randomSeed));
  136.                                 newSeed.setOrigin(newSeed.getGlobalBounds().width / 2, newSeed.getGlobalBounds().height / 2);
  137.                                 newSeed.setPosition(sf::Vector2f(button.getPosition().x, button.getPosition().y - 50));
  138.                                 myGame.setMapSeed(randomSeed);
  139.                             }
  140.  
  141.                             break;
  142.                         case 2://zapisana gra
  143.  
  144.  
  145.                             break;
  146.                         case 3://Wyniki
  147.  
  148.  
  149.                             break;
  150.                         case 4://Ustawienia
  151.  
  152.  
  153.                             break;
  154.                         case 5://Gra
  155.  
  156.  
  157.                             break;
  158.                         case 6://Zmiena skrotow klawiszowych
  159.  
  160.  
  161.                             break;
  162.                         case 7://Zapisz gre
  163.  
  164.  
  165.                             break;
  166.                         default:
  167.  
  168.                             break;
  169.                         }
  170.                     }
  171.                 }
  172.  
  173.                 break;
  174.             case sf::Event::Resized:
  175.                 window.setSize({ (event.size.width), (event.size.height) });
  176.                 window.setView(view);
  177.  
  178.                 myGame.setScreenSize(window.getSize());
  179.  
  180.                 break;
  181.             default:
  182.                 break;
  183.             }
  184.  
  185.         }
  186.  
  187.         myGame.update(event, window);
  188.  
  189.         boxWithText.update(event, window);
  190.  
  191.         for (gui::button& button : menu)
  192.         {
  193.             std::cout << "2. TimeToNextInteraction: " << button.getTimeToNextInteraction() << "\n";
  194.            
  195.             button.update(event, window);
  196.  
  197.             if (button.getState() == gui::state::clicked)
  198.             {
  199.                 button.setTimeToNextInteraction(button.getTimeToNextInteraction() - deltaTime);
  200.  
  201.                 std::cout << "3. TimeToNextInteraction: " << button.getTimeToNextInteraction() << "\n";
  202.  
  203.                 switch (programState)
  204.                 {
  205.  
  206.                 case 0://Start gry
  207.  
  208.                     if (button.getText() == "Nowa gra")
  209.                     {
  210.                         programState = 1;
  211.  
  212.                         button.setState(1);
  213.  
  214.                         newScreen = true;
  215.                     }
  216.                     else if (button.getText() == "Zaladuj zapisana gre")
  217.                     {
  218.                         programState = 2;
  219.  
  220.                         button.setState(1);
  221.  
  222.                         newScreen = true;
  223.                     }
  224.                     else if (button.getText() == "Wyniki")
  225.                     {
  226.                         programState = 3;
  227.  
  228.                         button.setState(1);
  229.  
  230.                         newScreen = true;
  231.  
  232.                     }
  233.                     else if (button.getText() == "Ustawienia")
  234.                     {
  235.                         programState = 4;
  236.  
  237.                         button.setState(1);
  238.  
  239.                         newScreen = true;
  240.                     }
  241.                     else if (button.getText() == "Wyjscie")
  242.                     {
  243.                         window.close();
  244.                     }
  245.                     break;
  246.                 case 1://Nowa gra
  247.  
  248.                     if (button.getText() == "Podaj nazwe")
  249.                     {
  250.                         button.setState(1);
  251.                     }
  252.                     else if (button.getText() == "Wygenerowanie losowego ziarna")
  253.                     {
  254.                         button.setState(1);
  255.                     }
  256.                     else if (button.getText() == "Wybranie wielkosci mapy")
  257.                     {
  258.                         button.setState(1);
  259.                     }
  260.                     else if (button.getText() == "Rozpoczecie gry")
  261.                     {
  262.                         programState = 5;
  263.  
  264.                         button.setState(1);
  265.  
  266.                         newScreen = true;
  267.                     }
  268.                     else if (button.getText() == "Powrot")
  269.                     {
  270.                         programState = 0;
  271.  
  272.                         button.setState(1);
  273.  
  274.                         newScreen = true;
  275.                     }
  276.                     break;
  277.                 case 2://zapisana gra
  278.  
  279.                     if (button.getText() == "Wybor zapisu")
  280.                     {
  281.                         button.setState(1);
  282.                     }
  283.                     else if (button.getText() == "Dalsze granie")
  284.                     {
  285.                         button.setState(1);
  286.  
  287.                         programState = 5;
  288.  
  289.                         newScreen = true;
  290.                     }
  291.                     else if (button.getText() == "Powrot")
  292.                     {
  293.                         programState = 0;
  294.  
  295.                         button.setState(1);
  296.  
  297.                         newScreen = true;
  298.                     }
  299.  
  300.                     break;
  301.                 case 3://Wyniki
  302.  
  303.                     if (button.getText() == "Wyświetl wyniki")
  304.                     {
  305.                         programState = 3;
  306.  
  307.                         button.setState(1);
  308.  
  309.                         newScreen = true;
  310.  
  311.                     }
  312.                     else if (button.getText() == "Schowaj wyniki")
  313.                     {
  314.                         programState = 3;
  315.  
  316.                         button.setState(1);
  317.  
  318.                         newScreen = true;
  319.                     }
  320.                     else if (button.getText() == "Powrot")
  321.                     {
  322.                         programState = 0;
  323.  
  324.                         button.setState(1);
  325.  
  326.                         newScreen = true;
  327.                     }
  328.  
  329.                     break;
  330.                 case 4://Ustawienia
  331.                     if (button.getText() == "Zmien skroty klawiszowe")
  332.                     {
  333.                         programState = 6;
  334.  
  335.                         button.setState(1);
  336.  
  337.                         newScreen = true;
  338.                     }else if (button.getText() == "Powrot")
  339.                     {
  340.                         programState = 0;
  341.  
  342.                         button.setState(1);
  343.  
  344.                         newScreen = true;
  345.                     }
  346.  
  347.                     break;
  348.                 case 5://Gra
  349.                      if (button.getText() == "Zapisz gre")
  350.                     {
  351.                         programState = 5;
  352.  
  353.                         button.setState(1);
  354.  
  355.                         myGame.saveGame();
  356.  
  357.                         isGameSaved = true;
  358.  
  359.                         newScreen = true;
  360.                     }
  361.                     else if (button.getText() == "Powrot")
  362.                     {
  363.                         myGame.reset();
  364.  
  365.                         programState = 0;
  366.  
  367.                         button.setState(1);
  368.  
  369.                         isGameSaved = false;
  370.  
  371.                         newScreen = true;
  372.                     }
  373.                     else if (button.getText() == "Dodaj stacje")//Add one station Dodaj stacje
  374.                      {
  375.                          programState = 5;
  376.  
  377.                          button.setState(1);
  378.  
  379.                          isGameSaved = false;
  380.  
  381.                          newScreen = true;
  382.  
  383.                          myGame.addStation();
  384.                      }
  385.                     break;
  386.                 case 6://Ustawienia klawiszy
  387.                     if (button.getText() == "0: " + set.getKeybordShortcuts(0))
  388.                     {
  389.                         programState = 6;
  390.  
  391.                         button.setState(1);
  392.  
  393.                         newScreen = true;
  394.                     } else if (button.getText() == "Powrot")
  395.                     {
  396.                         programState = 4;
  397.  
  398.                         button.setState(1);
  399.  
  400.                         newScreen = true;
  401.                     }
  402.                     break;
  403.                 case 7://Ustawienia klawiszy
  404.                     if (button.getText() == "0: " + set.getKeybordShortcuts(0))
  405.                     {
  406.                         programState = 6;
  407.  
  408.                         button.setState(1);
  409.  
  410.                         newScreen = true;
  411.                     }
  412.                     else if (button.getText() == "Powrot")
  413.                     {
  414.                         programState = 4;
  415.  
  416.                         button.setState(1);
  417.  
  418.                         newScreen = true;
  419.                     }
  420.                     break;
  421.                 default:
  422.  
  423.                     break;
  424.                 }
  425.             }
  426.         }
  427.  
  428.         if (window.isOpen())
  429.         {
  430.             window.clear();
  431.  
  432.             if (programState == 0)
  433.             {
  434.                 window.draw(gameTitle);
  435.             }
  436.             else if (programState == 1)
  437.             {
  438.                 window.draw(newSeed);
  439.  
  440.                 window.draw(newName);
  441.             }
  442.             else if (programState == 3)
  443.             {
  444.  
  445.             }
  446.             else if (programState == 5)
  447.             {
  448.                 window.draw(myGame);
  449.                
  450.                
  451.                 if (isGameSaved)
  452.                 {
  453.                     window.draw(savedGame);
  454.                 }
  455.             }
  456.  
  457.             for (gui::button& button : menu)
  458.             {
  459.                 window.draw(button);
  460.             }
  461.  
  462.             window.display();
  463.         }
  464.         else
  465.         {
  466.             break;
  467.         }
  468.  
  469.  
  470.         if (newScreen)
  471.         {
  472.             menu = menuCreation(myfont, screenCenterX, 400.f, programState, set);
  473.         }
  474.  
  475.     }
  476.  
  477.     return 0;
  478.  
  479. }
Advertisement
Add Comment
Please, Sign In to add comment