X-Git-Url: https://plomlompom.com/repos/?a=blobdiff_plain;f=src%2Fserver%2Ffield_of_view.h;h=54ffe289d676eba9360c79950d36f94889710dfa;hb=bf396f111317663bba3950e57968af19f2f56a44;hp=d7d7d00795297c7be561968ac5e0c290b5f8d9dc;hpb=d92f16d5959fc846d3eaf669517eecb3969cda08;p=plomrogue diff --git a/src/server/field_of_view.h b/src/server/field_of_view.h index d7d7d00..54ffe28 100644 --- a/src/server/field_of_view.h +++ b/src/server/field_of_view.h @@ -1,45 +1,27 @@ /* src/server/field_of_view.h + * + * This file is part of PlomRogue. PlomRogue is licensed under the GPL version 3 + * or any later version. For details on its copyright, license, and warranties, + * see the file NOTICE in the root directory of the PlomRogue source package. * * Generate field of view maps. */ - - #ifndef FIELD_OF_VIEW_H #define FIELD_OF_VIEW_H -#include /* uint8_t */ +#include /* uint8_t, uint32_t */ struct Thing; -/* States that cells in the fov map may be in. */ -enum fov_cell_states { - VISIBLE = 0x01, - HIDDEN = 0x02, - SHADOW_LEFT = 0x04, - SHADOW_RIGHT = 0x08, - LIMIT = 0x10, - HIDE_LATER = 0x20 -}; - -/* Return overlay of world map wherein all cell positions visible from player's - * positions have flag VISIBLE set. - * - * This is achieved by spiraling out clock-wise from the player position, - * flagging cells as VISIBLE unless they're already marked as HIDDEN, and, on - * running into obstacles for view that are not HIDDEN, casting shadows from - * these, i.e. drawing cells as HIDDEN that would be hidden by said obstacle, - * before continuing the original spiraling path. - * - * Shadowcasting during spiraling is initially lazy, flagging only the shadows' - * interior cells as HIDDEN and their border cells as HIDE_LATER. Only at the - * end are all cells flagged HIDE_LATER flagged as HIDDEN. This is to handle - * cases where obstacles to view sit right at the border of pre-estabilshed - * shadows, therefore might be ignored if HIDDEN and not cast shadows on their - * own that may slightly extend beyond the pre-established shadows they border. +/* Update "t_eye"'s .mem_map memory with what's in its current FOV, and update + * and age the .mem_depth_map. */ -extern uint8_t * build_fov_map(struct Thing * eye); +extern void update_map_memory(struct Thing * t_eye); + +/* Build "t"'s field of view. */ +extern void build_fov_map(struct Thing * t);