im currently trying to implement a leader board using multimap which lets the player input their name.
it works when i give it a normal string but for some reason wont accept the player inputted string, i know the player inputted string is correct as im printing it in console and it is correct but the printScore function isn’t printing it
LeaderBoard.h
#pragma once
#include <iostream>
#include <map>
#include <string>
class LeaderBoard
{
private:
std::multimap<std::string, int> scores;
public:
LeaderBoard() : scores()
{
}
void newScore(std::string playerName, int playerScore);
void printScores();
};
LeaderBoard.cpp
#include "LeaderBoard.h"
#include <iostream>
void LeaderBoard::newScore(std::string playerName, int playerScore)
{
std::cout << "score added" << std::endl;
scores.insert(std::make_pair(playerName, playerScore));
}
void LeaderBoard::printScores()
{
std::cout << "Player Scores:" << std::endl;
for (auto it = scores.rbegin(); it != scores.rend(); ++it)
{
std::cout << it->first << ": " << it->second <<std::endl;
}
}
Main.cpp
LeaderBoard leaderBoard;
bool newScoreAdded = false;
bool nameFinished = false;
std::string playerName;
std::string EnteredPlayerName;
std::string testname = "tester";
leaderBoard.newScore(testname, 10);
while (window.isOpen())
{
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed) {
window.close();
}
else if (event.type == sf::Event::TextEntered && player.playerDead == true) {
if (event.text.unicode < 128) {
if (event.text.unicode == 'b' && EnteredPlayerName.size() > 0) {
EnteredPlayerName.pop_back();
}
else if (event.text.unicode != 'b' && event.text.unicode != 'n') {
EnteredPlayerName += static_cast<char>(event.text.unicode);
}
}
}
}
if (nameFinished == true && newScoreAdded == false)
{
playerName = EnteredPlayerName;
cout << "player name: " << playerName << endl;
leaderBoard.newScore(playerName, EnemiesKilled);
leaderBoard.printScores();
newScoreAdded = true;
}
if (player.playerDead == true && nameFinished == false)
{
window.draw(EnterNameHere);
playerNameText.setString(EnteredPlayerName);
playerNameText.setPosition(EnterNameHere.getPosition().x + 80, EnterNameHere.getPosition().y + 25);
window.draw(playerNameText);
if (sf::Keyboard::isKeyPressed(sf::Keyboard::Enter))
{
nameFinished = true;
}
}
}