Wrath of Zeus
Made by Torchlight Games for CSE 125 SP24
Loading...
Searching...
No Matches
Public Member Functions | Static Public Attributes
ArrowTrap Class Reference

#include <arrowtrap.hpp>

Inheritance diagram for ArrowTrap:
Trap Object

Public Member Functions

 ArrowTrap (glm::vec3 corner, Direction dir)
 
bool shouldTrigger (ServerGameState &state) override
 
void trigger (ServerGameState &state) override
 
bool shouldReset (ServerGameState &state) override
 
void reset (ServerGameState &state) override
 
- Public Member Functions inherited from Trap
 Trap (ObjectType type, bool movable, glm::vec3 corner, Collider collider, ModelType model, glm::vec3 dimensions=glm::vec3(1.0f))
 
virtual bool shouldTrigger (ServerGameState &state)=0
 
virtual void trigger (ServerGameState &state)
 
virtual bool shouldReset (ServerGameState &state)=0
 
virtual void reset (ServerGameState &state)
 
SharedObject toShared () override
 Generates a SharedObject representation of this object. More...
 
void setIsDMTrap (bool is_dm_trap)
 
void setIsDMTrapHover (bool is_dm_trap_hover)
 
void setExpiration (std::chrono::time_point< std::chrono::system_clock > expiration)
 
bool getIsDMTrap ()
 
std::chrono::time_point< std::chrono::system_clock > getExpiration ()
 
- Public Member Functions inherited from Object
 Object (ObjectType type, Physics physics, ModelType modelType)
 
virtual ~Object ()
 
void setModel (ModelType type)
 Sets this Object's model and initializes its dimensions to the given model's default dimensions. More...
 
virtual SharedObject toShared ()
 Generates a SharedObject representation of this object. More...
 
virtual void doCollision (Object *other, ServerGameState &state)
 Code to run when this object collides with another. More...
 
std::string to_string (unsigned int tab_offset)
 
std::string to_string ()
 

Static Public Attributes

static const std::chrono::seconds TIME_UNTIL_RESET = 4s
 how long from initial activation until it can activate again More...
 
static const float SIGHTLINE_M = 15
 
- Static Public Attributes inherited from Object
static std::unordered_map< ModelType, glm::vec3 > models
 Maps from ModelType to a model's dimensions as read from the model files. (At present, these values are hard-coded in object.cpp) More...
 

Additional Inherited Members

- Data Fields inherited from Object
EntityID globalID {}
 Unique object ID (used to index into the ServerGameState::objects vector) More...
 
SpecificID typeID {}
 Type-specific Object ID (used to index into the type-specific objects vector in ServerGameState) More...
 
MovableID movableID {}
 Movable ID (used to index into the movable objects vector in ServerGameState) More...
 
ObjectType type
 Identifies this object's type (derived class) More...
 
Physics physics
 Object's Physics-related properties. More...
 
ModelType modelType
 Object's render model type (specifies this Object's render model to the client) More...
 
AnimState animState
 Object's animation state and current action. For non-animated objects, this defaults as AnimState::IdleAnim. More...
 
bool is_sprinting
 used to determine if the player is sprinting for animation purposes More...
 
std::vector< glm::ivec2 > gridCellPositions
 Vector of (x, y) positions of GridCells currently occupied by this object. More...
 
float distance_moved
 Distance moved, for use in deciding when to play footsteps IMPORTANT: reset every time a footstep sound is performed for objects that play foosteps. More...
 
- Protected Attributes inherited from Trap
bool is_dm_trap
 
std::chrono::time_point< std::chrono::system_clock > expiration
 
SharedTrapInfo info
 

Detailed Description

Trap which shoots arrows on a timer in a specified direction

The arrows fly until they collide with something, at which point they disappear.

Originally I wanted arrows to "stick" into walls, but this would lead to a large amount of arrows stuck to the wall, causing the game state to be larger and larger.

We can probably re-implement this after optimizing the newtorking code to only send info about objects that have updated.

Constructor & Destructor Documentation

◆ ArrowTrap()

ArrowTrap::ArrowTrap ( glm::vec3  corner,
Direction  dir 
)
Parameters
cornerCorner position of the spike trap
dirWhat direction it should shoot in

Member Function Documentation

◆ reset()

void ArrowTrap::reset ( ServerGameState state)
overridevirtual

Logic to reset the trap

At the highest level, this version just sets the triggered flag to false. Derivations of this should do additional resetting logic, and potentially call this Base class version as well to reset the common logic for all traps (currently just the triggered variable)

Parameters
stateGameState in case the trap needs to use the state for that

Reimplemented from Trap.

◆ shouldReset()

bool ArrowTrap::shouldReset ( ServerGameState state)
overridevirtual

Resets the trap

Parameters
stateGameState, in case you need that to determine if the trap should reset
Returns
True if the trap should reset, false otherwise

Implements Trap.

◆ shouldTrigger()

bool ArrowTrap::shouldTrigger ( ServerGameState state)
overridevirtual

Determines if the trap should be triggered

Parameters
stateGameState, in case you need that to determine if the trap should trigger
Returns
True if the trap should trigger, false otherwise

Implements Trap.

◆ trigger()

void ArrowTrap::trigger ( ServerGameState state)
overridevirtual

Activates the trap

At the highest level, this just sets the triggered variable to true. Subclass versions of this will also probably want to call this function to set the triggered variable, in addition to any other common flags we add in later.

Parameters
stateState in case triggering the trap needs to affect the gamestate

Reimplemented from Trap.

Field Documentation

◆ SIGHTLINE_M

const float ArrowTrap::SIGHTLINE_M = 15
inlinestatic

◆ TIME_UNTIL_RESET

const std::chrono::seconds ArrowTrap::TIME_UNTIL_RESET = 4s
inlinestatic

how long from initial activation until it can activate again


The documentation for this class was generated from the following files: