diff options
author | Juan J. Martinez <jjm@usebox.net> | 2023-11-05 11:22:55 +0000 |
---|---|---|
committer | Juan J. Martinez <jjm@usebox.net> | 2023-11-05 11:31:28 +0000 |
commit | 2fbdf974338bde8576efdae40a819a76b2391033 (patch) | |
tree | 64d41a37470143f142344f9a439d96de3e7918c2 /src/et_door.c | |
download | kitsunes-curse-2fbdf974338bde8576efdae40a819a76b2391033.tar.gz kitsunes-curse-2fbdf974338bde8576efdae40a819a76b2391033.zip |
Initial import of the open source release
Diffstat (limited to 'src/et_door.c')
-rw-r--r-- | src/et_door.c | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/src/et_door.c b/src/et_door.c new file mode 100644 index 0000000..e764715 --- /dev/null +++ b/src/et_door.c @@ -0,0 +1,56 @@ +/* + Kitsune's Curse + Copyright (C) 2020-2023 Juan J. Martinez <jjm@usebox.net> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + */ +#include "splib.h" +#include "plw.h" +#include "sound.h" +#include "main.h" + +#include "maps.h" + +// generated +#include "doors.h" + +#include "entities.h" +#include "et_player.h" +#include "et_door.h" + +void draw_door() { + if (is_invalid_tile2(get_tile_xy(*it_x >> 3, *it_y >> 3))) + for (it_k = 0; it_k < 16; it_k += 8) + put_sprite4(doors[*it_frame], *it_x, it_k + *it_y, 1, 0); + + if (is_invalid_tile2(get_tile_xy(*it_x >> 3, 2 + (*it_y >> 3)))) + for (it_k = 16; it_k < 32; it_k += 8) + put_sprite4(doors[*it_frame], *it_x, it_k + *it_y, 1, 0); +} + +void update_door() { + // is_map_blocked prevents this if no keys + if (!check_for_player(32)) + return; + + erase_sprite(*it_x, *it_y, 4); + destroy_entity(); + + update_persistence(sp_it->id); + --keys; + + draw_hud(); + + PLW_PlaySoundEffectP(EFX_DOOR); +} |