Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Oct 12, 2011, 7:50:43 PM (13 years ago)
Author:
jo
Message:

Ai and tutorial improvements merged back to the trunk. AI features: all weapons are used, the ai-firestrength is configurable, bots are able to collect pickups . I've set the tutorial level as default level.

Location:
code/trunk
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • code/trunk

  • code/trunk/src/modules/overlays/hud/HUDNavigation.cc

    r8858 r8891  
    6363{
    6464  SetConfigValue(markerLimit_, 3);
     65
    6566}
    6667
     
    7778    setTextSize ( 0.05f );
    7879    setNavMarkerSize ( 0.05f );
     80    setDetectionLimit( 10000.0f );
    7981}
    8082
     
    9597    SUPER ( HUDNavigation, XMLPort, xmlelement, mode );
    9698
    97     XMLPortParam ( HUDNavigation, "font",          setFont,          getFont,          xmlelement, mode );
    98     XMLPortParam ( HUDNavigation, "textSize",      setTextSize,      getTextSize,      xmlelement, mode );
    99     XMLPortParam ( HUDNavigation, "navMarkerSize", setNavMarkerSize, getNavMarkerSize, xmlelement, mode );
     99    XMLPortParam ( HUDNavigation, "font",           setFont,           getFont,           xmlelement, mode );
     100    XMLPortParam ( HUDNavigation, "textSize",       setTextSize,       getTextSize,       xmlelement, mode );
     101    XMLPortParam ( HUDNavigation, "navMarkerSize",  setNavMarkerSize,  getNavMarkerSize,  xmlelement, mode );
     102    XMLPortParam ( HUDNavigation, "detectionLimit", setDetectionLimit, getDetectionLimit, xmlelement, mode );
    100103}
    101104
     
    161164
    162165    unsigned int markerCount_ = 0;
    163 
     166    bool closeEnough_ = false; //only display objects that are close enough to be relevant for the player
    164167//         for (ObjectMap::iterator it = activeObjectList_.begin(); it != activeObjectList_.end(); ++it)
    165168    for ( sortedList::iterator listIt = sortedObjectList_.begin(); listIt != sortedObjectList_.end(); ++markerCount_, ++listIt )
    166169    {
    167170        ObjectMap::iterator it = activeObjectList_.find ( listIt->first );
    168 
    169         if ( markerCount_ < markerLimit_ )
     171        closeEnough_ = listIt->second < detectionLimit_ ;
     172        if ( markerCount_ < markerLimit_ && (closeEnough_ ||  detectionLimit_ < 0) ) // display on HUD if the statement is true
    170173        {
    171174
     
    277280            it->second.text_->show();
    278281        }
    279         else
     282        else // do not display on HUD
    280283        {
    281284            it->second.panel_->hide();
     
    309312void HUDNavigation::addObject ( RadarViewable* object )
    310313{
    311     if( showObject(object)==false )
     314    if( showObject(object) == false )
    312315        return;
    313316
     
    396399        return false;
    397400    assert( rv->getWorldEntity() );
    398     if ( rv->getWorldEntity()->isVisible()==false || rv->getRadarVisibility()==false )
     401    if ( rv->getWorldEntity()->isVisible() == false || rv->getRadarVisibility() == false )
    399402        return false;
    400403    return true;
  • code/trunk/src/modules/overlays/hud/HUDNavigation.h

    r7401 r8891  
    8585    { return navMarkerSize_; }
    8686
     87    void setDetectionLimit( float limit )
     88    { this->detectionLimit_ = limit; }
     89    float getDetectionLimit() const
     90    { return this->detectionLimit_; }
     91
    8792    void setTextSize ( float size );
    8893    float getTextSize() const;
     
    102107    float textSize_;
    103108
    104     unsigned int markerLimit_;; //TODO: is it possible to set this over the console and/or the IG-Setting
    105 
    106 
     109    unsigned int markerLimit_; //TODO: is it possible to set this over the console and/or the IG-Setting
     110    float detectionLimit_; //!< Objects that are more far away than detectionLimit_ are not displayed on the HUD. 10000.0f is the default value.
     111                           //!< In order to bypass this behaviour, set a negative detectionLimit_. Then the detection range is "infinite".
    107112};
    108113}
  • code/trunk/src/modules/overlays/hud/HUDRadar.cc

    r8858 r8891  
    6464        this->shapeMaterials_[RadarViewable::Triangle] = "RadarTriangle.png";
    6565        this->shapeMaterials_[RadarViewable::Square]   = "RadarSquare.png";
    66 
     66        this->setDetectionLimit( 10000.0f );
    6767        this->owner_ = 0;
    6868    }
     
    9393    {
    9494        if (object == dynamic_cast<RadarViewable*>(this->owner_))
     95            return;
     96        if( showObject(object) == false ) //do not show objects that are "invisible" or "radar invisible"
    9597            return;
    9698
     
    123125
    124126    void HUDRadar::objectChanged( RadarViewable* rv )
    125     {
    126         if (rv == dynamic_cast<RadarViewable*>(this->owner_))
    127             return;
    128         assert( this->radarObjects_.find(rv) != this->radarObjects_.end() );
    129         Ogre::PanelOverlayElement* panel = this->radarObjects_[rv];
    130         panel->setMaterialName(TextureGenerator::getMaterialName(
    131             shapeMaterials_[rv->getRadarObjectShape()], rv->getRadarObjectColour()));
     127    {// The new implementation behaves more precisely, since inactive RadarViewables are not displayed anymore.
     128        this->removeObject(rv);
     129        this->addObject(rv);
    132130    }
    133131
     
    174172            coord *= math::pi / 3.5f; // small adjustment to make it fit the texture
    175173            it->second->setPosition((1.0f + coord.x - size) * 0.5f, (1.0f - coord.y - size) * 0.5f);
    176             it->second->show();
     174            if( distance < detectionLimit_ || detectionLimit_ < 0 )
     175                it->second->show();
     176            else
     177                it->second->hide();
    177178
    178179            // if this object is in focus, then set the focus marker
     
    186187    }
    187188
     189    bool HUDRadar::showObject(RadarViewable* rv)
     190    {
     191        if ( rv == dynamic_cast<RadarViewable*> ( this->getOwner() ) )
     192            return false;
     193        assert( rv->getWorldEntity() );
     194        if ( rv->getWorldEntity()->isVisible()==false || rv->getRadarVisibility()==false )
     195            return false;
     196        return true;
     197    }
     198
     199
    188200    void HUDRadar::changedOwner()
    189201    {
  • code/trunk/src/modules/overlays/hud/HUDRadar.h

    r7880 r8891  
    5757        void setHalfDotSizeDistance(float distance) { this->halfDotSizeDistance_ = distance; }
    5858
     59        void setDetectionLimit( float limit )
     60        { this->detectionLimit_ = limit; }
     61        float getDetectionLimit() const
     62        { return this->detectionLimit_; }
     63
    5964        float getMaximumDotSize() const { return this->maximumDotSize_; }
    6065        void setMaximumDotSize(float size) { this->maximumDotSize_ = size; }
     
    6974        virtual void objectChanged( RadarViewable* rv );
    7075        void radarTick(float dt);
     76        bool showObject( RadarViewable* rv ); //!< Do not display an object on radar, if showObject(.) is false.
    7177
    7278        void gatherObjects();
     
    8389
    8490        float sensitivity_;
    85 
     91        float detectionLimit_;
    8692        ControllableEntity* owner_;
    8793    };
Note: See TracChangeset for help on using the changeset viewer.