51 lines
1.1 KiB
C
51 lines
1.1 KiB
C
/**
|
|
* Copyright (c) 2025 Dominic Masters
|
|
*
|
|
* This software is released under the MIT License.
|
|
* https://opensource.org/licenses/MIT
|
|
*/
|
|
|
|
#include "entitydir.h"
|
|
#include "assert/assert.h"
|
|
|
|
entitydir_t entityDirGetOpposite(const entitydir_t dir) {
|
|
switch(dir) {
|
|
case ENTITY_DIR_NORTH: return ENTITY_DIR_SOUTH;
|
|
case ENTITY_DIR_SOUTH: return ENTITY_DIR_NORTH;
|
|
case ENTITY_DIR_EAST: return ENTITY_DIR_WEST;
|
|
case ENTITY_DIR_WEST: return ENTITY_DIR_EAST;
|
|
default: return dir;
|
|
}
|
|
}
|
|
|
|
void entityDirGetRelative(
|
|
const entitydir_t from,
|
|
worldunits_t *outX,
|
|
worldunits_t *outY
|
|
) {
|
|
assertValidEntityDir(from, "Invalid direction provided");
|
|
assertNotNull(outX, "Output X pointer cannot be NULL");
|
|
assertNotNull(outY, "Output Y pointer cannot be NULL");
|
|
|
|
switch(from) {
|
|
case ENTITY_DIR_NORTH:
|
|
*outX = 0;
|
|
*outY = -1;
|
|
break;
|
|
|
|
case ENTITY_DIR_EAST:
|
|
*outX = 1;
|
|
*outY = 0;
|
|
break;
|
|
|
|
case ENTITY_DIR_SOUTH:
|
|
*outX = 0;
|
|
*outY = 1;
|
|
break;
|
|
|
|
case ENTITY_DIR_WEST:
|
|
*outX = -1;
|
|
*outY = 0;
|
|
break;
|
|
}
|
|
} |