Project

General

Profile

Revision 594c3bb9

ID594c3bb9eb72bd9cd1a22685345ea66612634e78

Added by Alex Zirbel over 11 years ago

Loads specific images for each scout if they exist

Otherwise, looks in the images folder for scout.png.
Added a few default scouts with numbers, and the xcf files they were created from.

View differences:

scout/scoutsim/src/sim_frame.cpp
75 75
        Connect(wxEVT_PAINT, wxPaintEventHandler(SimFrame::onPaint),
76 76
                NULL, this);
77 77

  
78
        std::string scouts[SCOUTSIM_NUM_SCOUTS] = 
79
        {
80
            "scout.png"
81
        };
82

  
83
        std::string images_path = ros::package::getPath("scoutsim")+"/images/";
84
        for (size_t i = 0; i < SCOUTSIM_NUM_SCOUTS; ++i)
85
        {
86
            scout_images[i].LoadFile(
87
                wxString::FromAscii((images_path + scouts[i]).c_str()));
88
            scout_images[i].SetMask(true);
89
            scout_images[i].SetMaskColour(255, 255, 255);
90
        }
78
        images_path = ros::package::getPath("scoutsim") + "/images/";
91 79

  
92
        /// @todo This should change.
93
        meter = scout_images[0].GetHeight();
80
        // 200 pixels per meter. @todo make this a constant elsewhere.
81
        meter = 200;
94 82

  
95 83
        map_base_name =  ros::package::getPath("scoutsim") + "/maps/" +
96 84
                           map_name + ".bmp";
......
239 227
            }
240 228
        }
241 229

  
230
        wxImage scout_image;
231

  
232
        // Try to load a name-specific image; if not, load the default scout
233
        string specific_name = images_path + name + ".png";
234
        if (fileExists(specific_name))
235
        {
236
            scout_image.LoadFile(wxString::FromAscii(specific_name.c_str()));
237
            scout_image.SetMask(true);
238
            scout_image.SetMaskColour(255, 255, 255);
239
        }
240
        else
241
        {
242
            scout_image.LoadFile(
243
                wxString::FromAscii((images_path + "scout.png").c_str()));
244
            scout_image.SetMask(true);
245
            scout_image.SetMaskColour(255, 255, 255);
246
        }
247

  
242 248
        ScoutPtr t(new Scout(ros::NodeHandle(real_name),
243
                   scout_images[rand() % SCOUTSIM_NUM_SCOUTS],
244
                   Vector2(x, y), &path_bitmap,angle));
249
                   scout_image, Vector2(x, y), &path_bitmap, angle));
245 250
        scouts[real_name] = t;
246 251

  
247 252
        ROS_INFO("Spawning scout [%s] at x=[%f], y=[%f], theta=[%f]",
......
338 343
        }
339 344
    }
340 345

  
346
    bool SimFrame::fileExists(const std::string& filename)
347
    {
348
        struct stat buf;
349
        if (stat(filename.c_str(), &buf) != -1)
350
        {
351
            return true;
352
        }
353
        return false;
354
    }
355

  
341 356
    void SimFrame::stopTeleop(wxCommandEvent& event)
342 357
    {
343 358
        teleop_type = TELEOP_OFF;

Also available in: Unified diff