Expeditions: Samurai veut révolutionner le RPG tactique avec une aventure entièrement jouable en coop
bah, avec un chemin du type: "Dossier/fichier" pour ouvrir un fichier avec mon programme au lieu de mettre le chemin absolu "C:/........./Dossier/fichier"
mmm je suis pas sur de comprendre, mais peut etre tu fait références au fichiers ressources de ton programme?
Sous osx, un programme est "packé" dans un bundle (un repertoire en fait), dans lequel se trouve ton executable (equivalent .exe sous windows), les lib annexes, et les ressouces.
Tu peux pas faire un truc du genre FILE *f = fopen("blabla.png", "r");
il faut récupéré le chemin vers les resources de ton prog (je regarderai demain le bout de code qu'il faut en C++, et je le posterai ici).
Ensuite pour que soit copié une ressource (image, son, enfin ce que tu veux) dans le bundle de ton appli quand tu compile, il suffit de l'ajouter à ton projet dans xcode.
et pour recuperer un fichier non inclu dans le bundle (pour pas le compiler avec) que j'ai mit dans le dossier test_SFML (le projet que tu m'as donné) , c'est possible également ? ![]()
(genre par exemple pour enregistrer les données une partie
)
(ah et comment changer le nom de l'application ?
)
pour enregistrer une partie, il faut que tu le mette dans le repertoire Document associé a ton appli. La aussi c'est un chemin imposé par OSX. Je te file le code pour récupéré ces 2 chemins en C++ :
il faut inclure
et ensuite:
CFBundleRef mainBundle;
// Get the main bundle for the app
mainBundle = CFBundleGetMainBundle();
CFURLRef dataURL;
// Look for a resource in the main bundle by name and type.
dataURL = CFBundleCopyBundleURL(mainBundle);
CFStringRef path;
path = CFURLCopyPath(dataURL);
char pathString[1024];
CFStringGetCString(path, pathString, 1023, kCFStringEncodingUTF8);
string bundlePath = string(pathString);
dataURL = CFBundleCopyResourcesDirectoryURL(mainBundle);
path = CFURLCopyPath(dataURL);
CFStringGetCString(path, pathString, 1023, kCFStringEncodingUTF8);
pathString[strlen(pathString) - 1] = 0;
string resourcePath = bundlePath + string(pathString);
et resourcePath contient le chemin vers le repertoire contenant les ressources de ton appli (donc tu accède a un fichier via le chemin resourcePath + "/" + nomdufichier)
pour les documents, heeu je cherche pour le faire en c++ direct
(en Objective C c'est facile, c'est peut etre meme une solution plus interessante).
Pour changer le nom de l'app, quand tu as la liste des fichiers du projet affiché, tout en haut, tu as la racine du projet qui s'appelle test_SFML, tu double clique sur ce nom, et tu le change
ca va te demander de changer d'autre chose, tu accepte, et voila ![]()
pardon pas double clique! mais un "clique long", a la "mac".
ok, merci, je regarde ca,
aussi, j'ai un autre probleme (oui encore
)
ce code là:
sf::Font Arrial;
if (!Arrial.LoadFromFile("arial.ttf")){
}
m'affiche dans la console:
Failed to load font "arial.ttf" (cannot open resource)
essaye "helvetica.ttf", pour rire? ![]()
Aprés avoir changer le nom, il compile plus et me donne cette erreur:
could not read data from '/Users/bourquard/Documents/programmes/SpaceShift/
test_SFML/test_SFML-Info.plist':
The file “test_SFML-Info.plist” couldn’t be opened because there is no such file.
bon, j'ai rerenomé mon dossier test_SFML, avant de renommer uniquement l'application avec le nom que je voulais et ca remarche
par contre "helvetica.ttf", ca marche pas non plus ![]()
au pire, t'as un annuaire des polices installées sur le système quelque part dans les accessoires, go le consulter, il serait étonnant qu'arial y soit. ![]()
bah, c'est pas des polices intégrés à SFML ? ![]()
klieur: pour charger un fichier ttf comme ca, il faut que tu donne le chemin complet à SFML, c'est a dire le resourcePath qui proviens du code que je t'ais collé au dessus + le nom du fichier ;)
sûrement pas, à cause des histoires de license, ils vont chercher celles que t'as sur ton pc. ![]()
Bon, j'ai eu un peu de temps pour coder et je n'arrive toujours pas à ouvrir mon fichier:
J'ai mit un fichier map que j'ai mit dans Resources/Levels
Juste avant la tentative d'ouverture, voici le chemin que j'ai fait afficher:
/Users/bourquard/Library/Developer/Xcode/DerivedDa
ta/Spaceshift-czjqpjszqenzwuhaqqvsgdkrdcuz/Build/P
roducts/Debug/Spaceshift.app/Contents/Resources/Le
vels/Map.lvl
(ah et aussi, dans quel dossier sont contenus les polices pour les charger ?
)
klieur, sans message d'erreur et plus de contexte, c'est difficile de devinner ce qui peut se passer.
klieurs: le chemin semble correcte pour le fichier resources, mais es tu biensur de le copier à cette endroit?
dans le code, essais d'y acceder par "Map.lvl" au lieu de "Levels/Map.lvl"
pour les polices, tu peux aussi en télécharger sur le net, et les mettres dans tes ressources.
Pilo1488
Posté le 23 octobre 2012 à 15:36:08
klieurs: le chemin semble correcte pour le fichier resources, mais es tu biensur de le copier à cette endroit?
dans le code, essais d'y acceder par "Map.lvl" au lieu de "Levels/Map.lvl"
Ah bah ca marche
mais il gere pas les sous dossiers dans le dossier ressources ? ![]()
"mais il gere pas les sous dossiers dans le dossier ressources ?"
Si
mais ca c'est un peu la galère (sur nos projets, on s'embete pas et 90% des ressources on les place directement dans le repertoire resources).
Pour faire ca, il faut que tu aille dans les propriétés de ton projets (tu clique sur l'élément tout en haut dans l'arboréscence des sources, la ou il y a le nom de ton projet, et tu clique ensuite sur ton target). La dans l'onglet Build Phases, il faut que tu rajoute une phases "copy" (tu clique sur "Add build phase" et tu choisis "Add copy Files". Et tu configure cette nouvelle phase pour copier dans Resources et dans un sous repertoire de celle ci (tu verra tu as un champ pour spécifier).
Cette notion de resouces, propre a OSX, c'est un peu chiant parfois. Par contre l'avantage c'est que ensuite ton programme c'est un bundle (un repertoire en fait), et c'est ce que tu distribue (et pour l'installer, il suffit de le copier dans le dossier application).
Pour configurer le sous reperoire, c'est dans le Subpath ?
Parcque j'ai mit destination : Resources et j'ai essayé de mettre un subpath vers mon sous repertoire Levels mais ca marche pas ![]()
oui c'est ca, c'est subpath.
essais de faire un clean de ton projet (des fois xcode ne met pas a jour correctement la copie des resources).
Tu peux aussi vérifier que les ficheirs sont au bon endroit, en regardant a l'interieur du bundle.