예제 #1
0
void Fl_Overlay_Window::redraw_overlay()
{
    if (!fl_display) return;     // this prevents fluid -c from opening display
    if (!overlay_)
    {
        if (can_do_overlay())
        {
            overlay_ = new _Fl_Overlay(0,0,w(),h());
            add_resizable(*overlay_);
            overlay_->show();
        }
        else
        {
            overlay_ = this;     // fake the overlay
        }
    }
    if (shown())
    {
        if (overlay_ == this)
        {
            set_damage(damage()|FL_DAMAGE_OVERLAY);
            Fl::damage(FL_DAMAGE_CHILD);
        }
        else
        {
            overlay_->redraw();
        }
    }
}
예제 #2
0
void Character::attack(Character *enemy) {
    set_damage(random.gen_rand_int(min_damage, max_damage));
    enemy->set_health(enemy->get_health() - damage);
    std::cout << this->get_name() << " attacks " << enemy->get_name()
        << " by " << damage << " points.\n"
        << enemy->get_name() << " health is " << enemy->get_health() << std::endl;
}
예제 #3
0
//initialize is called by each constructor 
void ascii_man::initialize(float _gravity)
{
	set_temp_mv(NULL);
	set_gravity(_gravity);
	set_render(""," 0 "," 8="," /\\","");
	set_pt(20,2);
	set_xt(1.2,1.5);
	set_mv(0,0);
	set_mass(3);
	set_frict((float)0.55);
	dir = 1;
	set_damage(10);
	set_health(50);
}
예제 #4
0
void Fl_Overlay_Window::flush()
{
    #if BOXX_OVERLAY_BUGS
    if (overlay_ && overlay_ != this && overlay_->shown())
    {
        // all drawing to windows hidden by overlay windows is ignored, fix this
        XUnmapWindow(fl_display, fl_xid(overlay_));
        Fl_Double_Window::flush(0);
        XMapWindow(fl_display, fl_xid(overlay_));
        return;
    }
    #endif
    bool erase_overlay = (damage()&FL_DAMAGE_OVERLAY) != 0;
    set_damage(damage()&~FL_DAMAGE_OVERLAY);
    Fl_Double_Window::flush(erase_overlay);
    if (overlay_ == this) draw_overlay();
    fl_clip_region(0);           // turn off any clip it left on
}
예제 #5
0
void Fl_Overlay_Window::redraw_overlay()
{
    overlay_ = this;
    set_damage(damage()|FL_DAMAGE_OVERLAY);
    Fl::damage(FL_DAMAGE_CHILD);
}
예제 #6
0
void item::load_info( const std::string &data )
{
    std::istringstream dump(data);
    char check=dump.peek();
    if ( check == ' ' ) {
        // sigh..
        check=data[1];
    }
    if ( check == '{' ) {
        JsonIn jsin(dump);
        try {
            deserialize(jsin);
        } catch( const JsonError &jsonerr ) {
            debugmsg("Bad item json\n%s", jsonerr.c_str() );
        }
        return;
    }

    unset_flags();
    clear_vars();
    std::string idtmp, ammotmp, item_tag, mode;
    int lettmp, damtmp, acttmp, corp, tag_count;
    int owned; // Ignoring an obsolete member.
    dump >> lettmp >> idtmp >> charges >> damtmp >> tag_count;
    for( int i = 0; i < tag_count; ++i )
    {
        dump >> item_tag;
        if( itag2ivar(item_tag, item_vars ) == false ) {
            item_tags.insert( item_tag );
        }
    }

    dump >> burnt >> poison >> ammotmp >> owned >> bday >>
         mode >> acttmp >> corp >> mission_id >> player_id;
    corpse = NULL;
    getline(dump, corpse_name);
    if( corpse_name == " ''" ) {
        corpse_name = "";
    } else {
        size_t pos = corpse_name.find_first_of( "@@" );
        while (pos != std::string::npos)  {
            corpse_name.replace( pos, 2, "\n" );
            pos = corpse_name.find_first_of( "@@" );
        }
        corpse_name = corpse_name.substr( 2, corpse_name.size() - 3 ); // s/^ '(.*)'$/\1/
    }
    gun_set_mode( mode );

    if( idtmp == "UPS_on" ) {
        idtmp = "UPS_off";
    } else if( idtmp == "adv_UPS_on" ) {
        idtmp = "adv_UPS_off" ;
    }
    convert( idtmp );

    invlet = char(lettmp);
    set_damage( damtmp );
    active = false;
    if (acttmp == 1) {
        active = true;
    }
}