Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Ignore:
Timestamp:
Apr 4, 2019, 5:13:42 PM (5 years ago)
Author:
cwaupoti
Message:

added working HoverGun

File:
1 edited

Legend:

Unmodified
Added
Removed
  • code/branches/Boxhead_FS19/src/modules/weapons/weaponmodes/HoverGun.cc

    r12273 r12284  
    2121 *
    2222 *   Author:
    23  *      Joel Smely
     23 *      Hagen Seifert
    2424 *   Co-authors:
    2525 *      simonmie
     
    3535
    3636#include "core/CoreIncludes.h"
     37#include "core/XMLPort.h"
     38#include "core/command/Executor.h"
     39
     40#include "graphics/Model.h"
    3741#include "weaponsystem/Weapon.h"
    3842#include "weaponsystem/WeaponPack.h"
    3943#include "weaponsystem/WeaponSystem.h"
     44#include "worldentities/WorldEntity.h"
    4045#include "worldentities/pawns/Pawn.h"
    4146
    4247#include "weapons/projectiles/HoverGunProjectile.h"
     48#include "weapons/MuzzleFlash.h"
    4349
    4450namespace orxonox
     
    5056        RegisterObject(HoverGun);
    5157
    52         this->reloadTime_ = 1.0f;
    53         this->damage_ = 0.0f;
     58        this->reloadTime_ = 0.25f;
     59        this->damage_ = 0.0f; //default 15
    5460        this->speed_ = 750.0f;
     61        this->delay_ = 0.0f;
     62        this->setMunitionName("LaserMunition");
     63        this->mesh_ = "laserbeam.mesh";
    5564
    56         this->setMunitionName("HoverMunition");
    57         this->setFireSound("sounds/Weapon_HoverGun.ogg");
    5865
    59         hudImageString_ = "Orxonox/WSHUD_WM_HoverGun";
     66        this->delayTimer_.setTimer(this->delay_, false, createExecutor(createFunctor(&HoverGun::shot, this)));
     67        this->delayTimer_.stopTimer();
     68
     69        this->setFireSound("sounds/Weapon_HsW01.ogg");
     70        this->setReloadSound("sounds/Reload_HsW01.ogg", 0.5);
     71
     72        hudImageString_ = "Orxonox/WSHUD_WM_HsW01";
    6073    }
    6174
     
    6477    }
    6578
     79    void HoverGun::XMLPort(Element& xmlelement, XMLPort::Mode mode)
     80    {
     81        SUPER(HoverGun, XMLPort, xmlelement, mode);
     82
     83        XMLPortParam(HoverGun, "delay", setDelay, getDelay, xmlelement, mode);
     84        XMLPortParam(HoverGun, "material", setMaterial, getMaterial, xmlelement, mode);
     85        XMLPortParam(HoverGun, "projectileMesh", setMesh, getMesh, xmlelement, mode);
     86        XMLPortParam(HoverGun, "sound", setSound, getSound, xmlelement, mode);
     87    }
     88
     89    /**
     90    @brief
     91        Set the firing delay.
     92    @param delay
     93        The firing delay in seconds.
     94    */
     95    void HoverGun::setDelay(float delay)
     96    {
     97        this->delay_ = delay;
     98        this->delayTimer_.setInterval(this->delay_);
     99    }
     100
     101    void HoverGun::fire()
     102    {
     103        this->delayTimer_.startTimer();
     104    }
     105
    66106    /**
    67107    @brief
    68108        Fires the weapon. Creates a projectile and fires it.
    69109    */
    70     void HoverGun::fire()
     110    void HoverGun::shot()
    71111    {
     112        assert( this->getWeapon() && this->getWeapon()->getWeaponPack() && this->getWeapon()->getWeaponPack()->getWeaponSystem() && this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn() );
     113
     114        // Create the projectile.
    72115        HoverGunProjectile* projectile = new HoverGunProjectile(this->getContext());
    73         projectile->setMaterial("Flares/HoverBall_");
     116        Model* model = new Model(projectile->getContext());
     117        model->setMeshSource(mesh_);
     118        model->setCastShadows(false);
     119        projectile->attach(model);
     120        model->setScale(5);
    74121
    75122        this->computeMuzzleParameters(this->getWeapon()->getWeaponPack()->getWeaponSystem()->getPawn()->getAimPosition());
     
    82129        projectile->setShieldDamage(this->getShieldDamage());
    83130        projectile->setHealthDamage(this->getHealthDamage());
     131
     132        // Display the muzzle flash.
     133        this->HoverGun::muzzleflash();
     134    }
     135
     136    /**
     137    @brief
     138        Displays the muzzle flash.
     139    */
     140    void HoverGun::muzzleflash()
     141    {
     142        MuzzleFlash *muzzleFlash = new MuzzleFlash(this->getContext());
     143        this->getWeapon()->attach(muzzleFlash);
     144        muzzleFlash->setPosition(this->getMuzzleOffset());
     145        muzzleFlash->setMaterial(this->material_);
    84146    }
    85147}
Note: See TracChangeset for help on using the changeset viewer.