Allegro.cc - Online Community

Allegro.cc Forums » Programming Questions » Need ./ when loading images with PhysFS?

This thread is locked; no one can reply to it. rss feed Print
Need ./ when loading images with PhysFS?
jmasterx
Member #11,410
October 2009

I'm using PhysFS like this:

    if (!PHYSFS_init(m_args[0].c_str()))
    {
      throw Exception("Allegro PHYSFS failed to initialize");
    }

    if (!PHYSFS_addToSearchPath("resource.dat", 1))
    {
      throw Exception("Allegro PHYSFS failed to open resource file");
    }

     al_set_physfs_file_interface();

I basically do this:
I read a file that has all my bitmap paths, ex:
toad = "toad.png"

Right now, the problem seems to be that my images are only getting loaded if I append ./ to their path. I'm on Windows.

The paths are normally resources/sprites/toad.png
But I have found that I need to make it ./resources/sprites/toad.png

I load them in like this:

  Sprite::Sprite( const std::string& fileName )
    : m_bitmap(NULL),m_width(0),m_height(0)
  {
    m_bitmap = al_load_bitmap(fileName.c_str());
    if(!m_bitmap)
    {
      throw Exception("CGE Allegro 5 failed to load image " + fileName);
    }
    m_width = al_get_bitmap_width(m_bitmap);
    m_height = al_get_bitmap_height(m_bitmap);
  }

Is it normal that I have to add ./ to images but not files that I open with al_fopen?

Thanks

torhu
Member #2,727
September 2002
avatar

jmasterx said:

Right now, the problem seems to be that my images are only getting loaded if I append ./ to their path. I'm on Windows.

The paths are normally resources/sprites/toad.png
But I have found that I need to make it resources/sprites/toad.png

I probably can't help you anyway, but I think you need to proof read your problem description :P

jmasterx
Member #11,410
October 2009

Fixed.

Arthur Kalliokoski
Second in Command
February 2005
avatar

IIRC, certain file extensions get added to the PATH or something so you can type in "toad.png" into the command line and windows will fire up a paint program or something. In that case, you might need the ./ to specify THIS file RIGHT HERE!

“Throughout history, poverty is the normal condition of man. Advances which permit this norm to be exceeded — here and there, now and then — are the work of an extremely small minority, frequently despised, often condemned, and almost always opposed by all right-thinking people. Whenever this tiny minority is kept from creating, or (as sometimes happens) is driven out of a society, the people then slip back into abject poverty. This is known as "bad luck.”

― Robert A. Heinlein

Trent Gamblin
Member #261
April 2000
avatar

No. It should work without ./ . Are you sure you don't have the images in the wrong place in the archive and the old images still there under that path in the real filesystem?

jmasterx
Member #11,410
October 2009

Well it seems ascii 13 was being appended to my filenames. All is fixed now. Thanks

Neil Roy
Member #2,229
April 2002
avatar

This is what I have... I have a quality flag where the game selects one of two files with low and high quality versions of the same graphics and sound.

I have my graphics, sound etc... all stored in their own folders inside the zip file and access with "gfx/Pacman01.png" etc. Works fine.

   PHYSFS_init(NULL);
   if(quality) {
      if(!PHYSFS_mount("Deluxe_Pacman_2_High.pak", "/", 1)) {
         a5_error(AT, display.screen, "PHSYFS_init() failed.");
         exit(1);
      }
   }
   else {
      if(!PHYSFS_mount("Deluxe_Pacman_2_Low.pak", "/", 1)) {
         a5_error(AT, display.screen, "PHSYFS_init() failed.");
         exit(1);
      }
   }
   al_set_physfs_file_interface();

Go to: