Micropolis
position.h File Reference

Defines position handling and direction enumeration for the Micropolis game engine. More...

Go to the source code of this file.

Classes

class  Position
 

Enumerations

enum  Direction2 {
  DIR2_INVALID , DIR2_NORTH , DIR2_NORTH_EAST , DIR2_EAST ,
  DIR2_SOUTH_EAST , DIR2_SOUTH , DIR2_SOUTH_WEST , DIR2_WEST ,
  DIR2_NORTH_WEST , DIR2_BEGIN = DIR2_NORTH , DIR2_END = DIR2_NORTH_WEST + 1
}
 

Functions

static Direction2 increment45 (Direction2 dir, int count=1)
 
static Direction2 increment90 (Direction2 dir)
 
static Direction2 rotate45 (Direction2 dir, int count=1)
 
static Direction2 rotate90 (Direction2 dir)
 
static Direction2 rotate180 (Direction2 dir)
 
bool operator< (const Position &pos1, const Position &pos2)
 

Detailed Description

Defines position handling and direction enumeration for the Micropolis game engine.

This header file provides classes and functions for handling positions and directions within the Micropolis game world. It includes the 'Position' class for representing X/Y coordinates and 'Direction2' enumeration for defining 8 cardinal directions. Functions for manipulating and querying these positions and directions are also provided, which are essential for navigating and interacting with the game world's grid.

Definition in file position.h.

Enumeration Type Documentation

◆ Direction2

enum Direction2

Another direction enumeration class, with 8 possible directions.

Todo:

Eliminate #Direction.

After eliminating #Direction, rename this enum to Direction.

Enumerator
DIR2_INVALID 

Invalid direction.

DIR2_NORTH 

Direction pointing north.

DIR2_NORTH_EAST 

Direction pointing north-east.

DIR2_EAST 

Direction pointing east.

DIR2_SOUTH_EAST 

Direction pointing south-east.

DIR2_SOUTH 

Direction pointing south.

DIR2_SOUTH_WEST 

Direction pointing south-west.

DIR2_WEST 

Direction pointing west.

DIR2_NORTH_WEST 

Direction pointing north-west.

DIR2_BEGIN 

First valid direction.

DIR2_END 

End-condition for directions.

Definition at line 86 of file position.h.

Function Documentation

◆ increment45()

static Direction2 increment45 ( Direction2  dir,
int  count = 1 
)
inlinestatic

Increment the direction by 45 degrees.

Parameters
dirDirection to rotate.
Returns
Rotated direction, possibly >= DIR2_END.

Definition at line 106 of file position.h.

Referenced by increment90().

◆ increment90()

static Direction2 increment90 ( Direction2  dir)
inlinestatic

Increment the direction by 90 degrees.

Parameters
dirDirection to rotate.
Returns
Rotated direction, possibly >= DIR2_END.

Definition at line 117 of file position.h.

References increment45().

Referenced by Micropolis::doPowerScan().

◆ operator<()

bool operator< ( const Position pos1,
const Position pos2 
)
inline

Less-than comparison on positions (needed for map since Position is used as key value).

Parameters
pos1First position.
pos2Second position.
Returns
First position is smaller than second position.

Definition at line 190 of file position.h.

References Position::posX, and Position::posY.

◆ rotate180()

static Direction2 rotate180 ( Direction2  dir)
inlinestatic

Rotate the direction by 180 degrees.

Parameters
dirDirection to rotate.
Returns
Rotated direction.

Definition at line 147 of file position.h.

References rotate45().

Referenced by Micropolis::doRivers(), and Micropolis::tryDrive().

◆ rotate45()

static Direction2 rotate45 ( Direction2  dir,
int  count = 1 
)
inlinestatic

Increment the direction by 45 degrees.

Parameters
dirDirection to rotate.
Returns
Rotated direction.

Definition at line 127 of file position.h.

References DIR2_NORTH.

Referenced by Micropolis::doBRiver(), Micropolis::doSRiver(), rotate180(), and rotate90().

◆ rotate90()

static Direction2 rotate90 ( Direction2  dir)
inlinestatic

Rotate the direction by 90 degrees.

Parameters
dirDirection to rotate.
Returns
Rotated direction.

Definition at line 137 of file position.h.

References rotate45().

Referenced by Micropolis::tryGo().