SFML community forums

Help => Graphics => Topic started by: lestroso on April 06, 2020, 07:53:47 pm

Title: Problem Loading Images on App Bundle on Mac os x
Post by: lestroso on April 06, 2020, 07:53:47 pm
Hi,
i try to play with this code, to make an Arkanoid...in Macosx With Netbeans 13...

#include <SFML/Graphics.hpp>
#include <time.h>
using namespace sf;

int main()
{
    srand(time(0));

    RenderWindow app(VideoMode(520, 450), "Arkanoid!");
    app.setFramerateLimit(60);

    Texture t1,t2,t3,t4;
    t1.loadFromFile("images/block01.png");
    t2.loadFromFile("images/background.jpg");
    t3.loadFromFile("images/ball.png");
    t4.loadFromFile("images/paddle.png");

    Sprite sBackground(t2), sBall(t3), sPaddle(t4);
    sPaddle.setPosition(300,440);

    Sprite block[1000];

    int n=0;
    for (int i=1;i<=10;i++)
    for (int j=1;j<=10;j++)
      {
         block[n].setTexture(t1);
         block[n].setPosition(i*43,j*20);
         n++;
      }

    float dx=6, dy=5;
    float x=300, y=300;

    while (app.isOpen())
    {
       Event e;
       while (app.pollEvent(e))
       {
         if (e.type == Event::Closed)
             app.close();
       }

    x+=dx;
    for (int i=0;i<n;i++)
        if ( FloatRect(x+3,y+3,6,6).intersects(block[i].getGlobalBounds()) )
             {block[i].setPosition(-100,0); dx=-dx;}

    y+=dy;
    for (int i=0;i<n;i++)
        if ( FloatRect(x+3,y+3,6,6).intersects(block[i].getGlobalBounds()) )
             {block[i].setPosition(-100,0); dy=-dy;}

    if (x<0 || x>520)  dx=-dx;
    if (y<0 || y>450)  dy=-dy;

    if (Keyboard::isKeyPressed(Keyboard::Right)) sPaddle.move(6,0);
    if (Keyboard::isKeyPressed(Keyboard::Left)) sPaddle.move(-6,0);

    if ( FloatRect(x,y,12,12).intersects(sPaddle.getGlobalBounds()) ) dy=-(rand()%5+2);

    sBall.setPosition(x,y);

    app.clear();
    app.draw(sBackground);
    app.draw(sBall);
    app.draw(sPaddle);

    for (int i=0;i<n;i++)
     app.draw(block[i]);

    app.display();
    }

  return 0;
}
 

Ok , this code is very good..but when i make the final app bundle...the app starts, the window ok.. but i don't see any images!!!but inside Netbeans this code works fine..

I have tryed anything like this::
Texture t1,t2,t3,t4;
    t1.loadFromFile("./images/block01.png"); <---------
    t2.loadFromFile("../images/background.jpg"); <--------
    t3.loadFromFile("Resource/images/ball.png"); <----------
    t4.loadFromFile("images/paddle.png");
 
it seems dont see where the link is....
Nothing works here???...Can somebody help me please??? Best regards, Lestroso  :) :) :)
Title: Re: Problem Loading Images on App Bundle on Mac os x
Post by: eXpl0it3r on April 07, 2020, 10:21:36 am
As far as I understand macOS, you'll have to retrieve the resource path to the bundle, see the obj-c call: https://developer.apple.com/documentation/foundation/nsbundle/1417723-resourcepath?language=objc
Title: Re: Problem Loading Images on App Bundle on Mac os x
Post by: lestroso on April 07, 2020, 02:29:26 pm
Dear eXpl0it3r,

i thank you so much for your answer....but i don't see any solution....there....

i tryed this to link to my bundle...:
 t3.loadFromFile("Resource/images/ball.png"); <----------but nothing works...
 
I have tryed to link to my bundle Resources...but nothing...
Do you have any other idea???

Best regards, Lestroso :)
Title: Re: Problem Loading Images on App Bundle on Mac os x
Post by: eXpl0it3r on April 07, 2020, 03:00:38 pm
No idea how you came to the conclusion that adding "Resource" in front of the path will do anything? :D

You need to get the path to the bundle. I've provided the link to the API call that does it. You can also google ResourcePath macOS to get more information on the topic.
Title: Re: Problem Loading Images on App Bundle on Mac os x
Post by: fallahn on April 08, 2020, 10:48:51 am
The SFML xcode templates folder contains source for doing this in ResourcePath.hpp and ResourcePath.mm https://github.com/SFML/SFML/tree/master/tools/xcode/templates/SFML/SFML%20App.xctemplate

This will return a string containing path that you can prepend to the paths of your images and other resources.
Title: Re: Problem Loading Images on App Bundle on Mac os x
Post by: lestroso on April 08, 2020, 06:59:33 pm
hi...
thank you for your support....but i need in truth an easy way to do that....i tryed to load the a template with xcode...without success.. i dont' use xcode too difficult...i'm working with netbeans to be crossplatform...so...i wonder me if in the bundle do i must customize theplist.file to load that resources.. to tell to the bundle where to fish theresources...

Any other ideas??? Or Help?? best regards, lestroso :)