Jump to content

  • Log In with Google      Sign In   
  • Create Account

SFML 2.0 Game Config file


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
6 replies to this topic

#1 thefollower   Members   -  Reputation: 177

Like
0Likes
Like

Posted 06 November 2012 - 08:09 PM

Hey,

Does any one have any tutorials or example scripts which uses SFML 2.0 where you can load data from a text file to use in a script?

Can't seem to find any examples out there for it.

Sponsor:

#2 Servant of the Lord   Crossbones+   -  Reputation: 19520

Like
2Likes
Like

Posted 06 November 2012 - 11:06 PM

SFML is a sound, graphics, and networking API. You wouldn't use SFML for loading files, you'd use either the C++ standard library (see fstream), or a third party library.
(I'm assuming you're using C++, since you didn't mention what language you are using)

Also, you say, "use in a script", but your thread's title says, "game config file". A script and a config file are two different things. A scripting language is a type of programming language, and it'd be "ran"/"executed" and do things like call functions. A config file is usually static data that is "read" into the program and then used to initialize some variables in the program's code. A script file can be a config file (though it's unusual), but not vice-versa.

Could you give a more specific example of how you'd like this config file or script to look like, and what it'd do? Posted Image
It's perfectly fine to abbreviate my username to 'Servant' rather than copy+pasting it all the time.
All glory be to the Man at the right hand... On David's throne the King will reign, and the Government will rest upon His shoulders. All the earth will see the salvation of God.
Of Stranger Flames - [indie turn-based rpg set in a para-historical French colony] | Indie RPG development journal

[Fly with me on Twitter] [Google+] [My broken website]

[Need web hosting? I personally like A Small Orange]


#3 thefollower   Members   -  Reputation: 177

Like
0Likes
Like

Posted 06 November 2012 - 11:15 PM

The idea was :

I would make a class which loaded a file called Settings.txt

Example data of this file:

Name = Dave
MaxFPS = 60


So then in my main function i call load setting class then i have all the information available to use so for example:

Config["Name"] would equal Dave
Config["MaxFPS"] would equal 60


I started an attempt at it here, this is in my settings.h, i found this on the internet but its quite ugly and not totally easy to understand how it works. (Granted its not working yet).

[source lang="cpp"]#include <fstream>#include <cctype>using namespace std;// trim from startstatic inline std::string &ltrim(std::string &s) { s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1(std::ptr_fun<int, int>(std::isspace)))); return s;}// trim from endstatic inline std::string &rtrim(std::string &s) { s.erase(std::find_if(s.rbegin(), s.rend(), std::not1(std::ptr_fun<int, int>(std::isspace))).base(), s.end()); return s;}// trim from both endsstatic inline std::string &trim(std::string &s) { return ltrim(rtrim(s));}std::map<string,string> loadSettings(){ifstream file("settings.txt"); string line; std::map<string, string> config; while(std::getline(file, line)) { int pos = line.find('='); if(pos != string::npos) { string key = line.substr(0, pos); string value = line.substr(pos + 1); config[trim(key)] = trim(value); } } return (config);}[/source]

In my main.cpp i have yet to work out how i retrieve back the information - im not sure i have the correct data type for the function for a start. Also its not in a class.

#4 ColinDuquesnoy   Members   -  Reputation: 1127

Like
0Likes
Like

Posted 07 November 2012 - 06:33 AM

If you're on windows, you can use the GetPrivateProfileString function from the Win32 api to read ini files.

#5 BitMaster   Crossbones+   -  Reputation: 4077

Like
2Likes
Like

Posted 07 November 2012 - 07:06 AM

That is rather simple usage of the C++ standard library, thefollower. If you do not have a good idea what it is doing then I would advise you to take a few steps back.

That said, the function simply returns an std::map<std::string, std::string> (see documentation). A simple usage would be:
typedef std::map<std::string, std::string> SettingsType;
SettingsType settings = loadSettings();
SettingsType::const_iterator it     = settings.begin();
SettingsType::const_iterator it_end = settings.end();
for (; it != it_end; ++it)
   std::cout << "Key '" << it->first << "' maps to value '" << it->second << "'\n";

// alternatively:
std::cout << "Value for key 'Name': '" << settings["Name"] << "'\n";
The first code fragment will output all key/value pairs which were read from the config file. The alternative version will print the value corresponding to the key 'Name' (or an empty string if there is no such key in the map).

#6 BeerNutts   Crossbones+   -  Reputation: 2942

Like
0Likes
Like

Posted 07 November 2012 - 11:30 AM

FWIW, I do this via xml files, and read the data using tinyxml. If you are interested, you can check my old blog (link is in my signature) for some examples.
My Gamedev Journal: 2D Game Making, the Easy Way

---(Old Blog, still has good info): 2dGameMaking
-----
"No one ever posts on that message board; it's too crowded." - Yoga Berra (sorta)

#7 thefollower   Members   -  Reputation: 177

Like
0Likes
Like

Posted 07 November 2012 - 02:35 PM

I have read the documentation just found maps confusing - i understand code better when i have a working script i can fiddle with usually :P




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS