From 50042127675256c1f81058e5e283b27d72ced521 Mon Sep 17 00:00:00 2001 From: TsXor Date: Tue, 14 May 2024 15:38:48 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E8=B5=B6=E5=B7=A5=E7=9A=84Ge?= =?UTF-8?q?nshin=20Pursuit=E5=9C=BA=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- res/genshin_pursuit_author.map2d.yaml | 5 ++ res/genshin_pursuit_author.png | Bin 0 -> 2354 bytes res/genshin_pursuit_author.pxo | Bin 0 -> 3356 bytes res/genshin_pursuit_entry.map2d.yaml | 2 +- res/genshin_pursuit_entry.png | Bin 3344 -> 1493 bytes res/genshin_pursuit_entry.pxo | Bin 5402 -> 2826 bytes res/genshin_pursuit_main.map2d.yaml | 5 ++ src/main/activities/avg_scene.cpp | 3 ++ src/main/activities/avg_scripts.hpp | 13 ++++++ src/main/activities/avg_scripts/dorm_room.cpp | 3 ++ .../avg_scripts/genshin_pursuit_author.cpp | 41 ++++++++++++++++ .../avg_scripts/genshin_pursuit_entry.cpp | 44 ++++++++++++++++++ .../avg_scripts/genshin_pursuit_main.cpp | 37 +++++++++++++++ src/main/static_maps.cpp | 18 ++++++- src/main/static_maps.hpp | 2 + 15 files changed, 171 insertions(+), 2 deletions(-) create mode 100644 res/genshin_pursuit_author.map2d.yaml create mode 100644 res/genshin_pursuit_author.png create mode 100644 res/genshin_pursuit_author.pxo create mode 100644 res/genshin_pursuit_main.map2d.yaml create mode 100644 src/main/activities/avg_scripts/genshin_pursuit_author.cpp create mode 100644 src/main/activities/avg_scripts/genshin_pursuit_entry.cpp create mode 100644 src/main/activities/avg_scripts/genshin_pursuit_main.cpp diff --git a/res/genshin_pursuit_author.map2d.yaml b/res/genshin_pursuit_author.map2d.yaml new file mode 100644 index 0000000..2827b37 --- /dev/null +++ b/res/genshin_pursuit_author.map2d.yaml @@ -0,0 +1,5 @@ +file: "genshin_pursuit_author.png" +name: "genshin_pursuit_author" +blocks: + - uv: [0, 128, 0, 128] + at: [0, 0] diff --git a/res/genshin_pursuit_author.png b/res/genshin_pursuit_author.png new file mode 100644 index 0000000000000000000000000000000000000000..37f4f4ef5bcf7026c5f450636c7cdea4e9ddaffa GIT binary patch literal 2354 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 literal 3344 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 W$F5a3Rpx(j02>Q?0^^Kt!hZqC2mts1 diff --git a/res/genshin_pursuit_entry.pxo b/res/genshin_pursuit_entry.pxo index 8626d59ecedb9365200621453ff72b7dd55eab28..ec16483897a1c24f48cb1ef6e2a2818df00a8dca 100644 GIT binary patch literal 2826 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 diff --git a/res/genshin_pursuit_main.map2d.yaml b/res/genshin_pursuit_main.map2d.yaml new file mode 100644 index 0000000..25e17a9 --- /dev/null +++ b/res/genshin_pursuit_main.map2d.yaml @@ -0,0 +1,5 @@ +file: "genshin_pursuit_main.png" +name: "genshin_pursuit_main" +blocks: + - uv: [0, 512, 0, 384] + at: [0, 0] diff --git a/src/main/activities/avg_scene.cpp b/src/main/activities/avg_scene.cpp index 0e47d9d..6bc52de 100644 --- a/src/main/activities/avg_scene.cpp +++ b/src/main/activities/avg_scene.cpp @@ -20,6 +20,9 @@ avg_scene::string_map avg_scene::scene_scripts = { {"dorm_stairs_middle", avg_scripts::dorm_stairs_middle}, {"dorm_stairs_bottom", avg_scripts::dorm_stairs_bottom}, {"black_jack_entry", avg_scripts::black_jack_entry}, + {"genshin_pursuit_entry", avg_scripts::genshin_pursuit_entry}, + {"genshin_pursuit_author", avg_scripts::genshin_pursuit_author}, + {"genshin_pursuit_main", avg_scripts::genshin_pursuit_main}, }; avg_scene::entity_comp_t avg_scene::default_sprites_sorter() { diff --git a/src/main/activities/avg_scripts.hpp b/src/main/activities/avg_scripts.hpp index 811f563..66aa179 100644 --- a/src/main/activities/avg_scripts.hpp +++ b/src/main/activities/avg_scripts.hpp @@ -58,6 +58,16 @@ static inline constexpr struct { eng::basics::vec2 black_jack_entry_default = {512, 352}; eng::basics::vec2 black_jack_entry_left = {36, 352}; eng::basics::vec2 black_jack_entry_right = {988, 352}; + + eng::basics::vec2 genshin_pursuit_entry_default = {256, 432}; + eng::basics::vec2 genshin_pursuit_entry_top = {256, 228}; + eng::basics::vec2 genshin_pursuit_entry_bottom = {256, 604}; + + eng::basics::vec2 genshin_pursuit_author_default = {384, 256}; + eng::basics::vec2 genshin_pursuit_author_right = {476, 256}; + + eng::basics::vec2 genshin_pursuit_main_default = {1024, 1152}; + eng::basics::vec2 genshin_pursuit_main_bottom = {1024, 1388}; } points; #define AVG_SCRIPT_ARGS avg_scene& self, const std::optional& spawn, const std::string& arg @@ -71,6 +81,9 @@ void dorm_stairs(AVG_SCRIPT_ARGS); void dorm_stairs_middle(AVG_SCRIPT_ARGS); void dorm_stairs_bottom(AVG_SCRIPT_ARGS); void black_jack_entry(AVG_SCRIPT_ARGS); +void genshin_pursuit_entry(AVG_SCRIPT_ARGS); +void genshin_pursuit_author(AVG_SCRIPT_ARGS); +void genshin_pursuit_main(AVG_SCRIPT_ARGS); #undef AVG_SCRIPT_ARGS diff --git a/src/main/activities/avg_scripts/dorm_room.cpp b/src/main/activities/avg_scripts/dorm_room.cpp index 2a3edfd..8adb75a 100644 --- a/src/main/activities/avg_scripts/dorm_room.cpp +++ b/src/main/activities/avg_scripts/dorm_room.cpp @@ -77,6 +77,9 @@ void acts::avg_scripts::dorm_room(avg_scene& self, const std::optional("dorm_balcony", points.dorm_balcony_door, std::to_string(room_number)); } } }; + if (room_number == 605) { + colls[{person.ptr(), table_1.ptr()}] = [&](){ self.next("genshin_pursuit_entry", points.genshin_pursuit_entry_bottom); }; + } if (room_number == 311) { colls[{person.ptr(), table_2.ptr()}] = [&](){ self.next("black_jack_entry", points.black_jack_entry_left); }; colls[{person.ptr(), table_3.ptr()}] = [&](){ self.next("dorm_room", std::nullopt, "508"); }; diff --git a/src/main/activities/avg_scripts/genshin_pursuit_author.cpp b/src/main/activities/avg_scripts/genshin_pursuit_author.cpp new file mode 100644 index 0000000..7c5215c --- /dev/null +++ b/src/main/activities/avg_scripts/genshin_pursuit_author.cpp @@ -0,0 +1,41 @@ +#include "../avg_scripts.hpp" +#include "./utils.hpp" +#include "static_sprites.hpp" +#include "static_maps.hpp" + +using namespace acts::avg_scripts; +using namespace naive_engine; +using namespace silly_framework; + +void acts::avg_scripts::genshin_pursuit_author(avg_scene& self, const std::optional& spawn, const std::string& arg) { + coutils::sync::unleash_lambda([&]() -> coutils::async_fn { + // 出生点 + basics::vec2 spawn_pos = spawn.value_or(points.genshin_pursuit_author_default); + simulator::entity_node_t person(basics::aabb(-16, 16, -12, 12), spawn_pos); + self.simu.emplace(512, 512); + utils::add_main_char(self, person); + + self.bound_map.emplace(&maps::genshin_pursuit_author(), 4.0); + self.bound_sprites[person.ptr()] = {&sprites::container_small(), 4.0, {0, -36}}; + + // 地图边界固定阻挡物 + simulator::entity_node_t obstacles[] = { + {basics::aabb{0, 512, 0, 192}}, + {basics::aabb{0, 512, 320, 512}}, + {basics::aabb{0, 288, 192, 320}}, + }; + utils::add_map_obstacles(self, obstacles); + + simulator::entity_node_t + leave = {basics::aabb{496, 512, 192, 320}}; + utils::add_trigger_boxes(self, leave); + utils::coll_event_table colls { + { {person.ptr(), leave.ptr()}, [&](){ self.next("genshin_pursuit_entry", points.genshin_pursuit_entry_bottom); } }, + }; + + while (true) { + auto [_, evt_data] = co_await self.cohost.wait_event({simu_coro_host::EVT_COLLISION}); + utils::check_coll_events(self, colls, evt_data); + } + }); +} diff --git a/src/main/activities/avg_scripts/genshin_pursuit_entry.cpp b/src/main/activities/avg_scripts/genshin_pursuit_entry.cpp new file mode 100644 index 0000000..519a9d8 --- /dev/null +++ b/src/main/activities/avg_scripts/genshin_pursuit_entry.cpp @@ -0,0 +1,44 @@ +#include "../avg_scripts.hpp" +#include "./utils.hpp" +#include "static_sprites.hpp" +#include "static_maps.hpp" + +using namespace acts::avg_scripts; +using namespace naive_engine; +using namespace silly_framework; + +void acts::avg_scripts::genshin_pursuit_entry(avg_scene& self, const std::optional& spawn, const std::string& arg) { + coutils::sync::unleash_lambda([&]() -> coutils::async_fn { + // 出生点 + basics::vec2 spawn_pos = spawn.value_or(points.genshin_pursuit_entry_default); + simulator::entity_node_t person(basics::aabb(-16, 16, -12, 12), spawn_pos); + self.simu.emplace(512, 640); + utils::add_main_char(self, person); + + self.bound_map.emplace(&maps::genshin_pursuit_entry(), 4.0); + self.bound_sprites[person.ptr()] = {&sprites::container_small(), 4.0, {0, -36}}; + + // 地图边界固定阻挡物 + simulator::entity_node_t obstacles[] = { + {basics::aabb{0, 192, 0, 576}}, + {basics::aabb{320, 512, 0, 640}}, + }; + utils::add_map_obstacles(self, obstacles); + + simulator::entity_node_t + hidden = {basics::aabb{0, 16, 576, 640}}, + launch = {basics::aabb{192, 320, 0, 208}}, + leave = {basics::aabb{192, 320, 624, 640}}; + utils::add_trigger_boxes(self, hidden, launch, leave); + utils::coll_event_table colls { + { {person.ptr(), hidden.ptr()}, [&](){ self.next("genshin_pursuit_author", points.genshin_pursuit_author_right); } }, + { {person.ptr(), launch.ptr()}, [&](){ self.next("genshin_pursuit_main", points.genshin_pursuit_main_bottom); } }, + { {person.ptr(), leave.ptr()}, [&](){ self.next("dorm_room", std::nullopt, "605"); } }, + }; + + while (true) { + auto [_, evt_data] = co_await self.cohost.wait_event({simu_coro_host::EVT_COLLISION}); + utils::check_coll_events(self, colls, evt_data); + } + }); +} diff --git a/src/main/activities/avg_scripts/genshin_pursuit_main.cpp b/src/main/activities/avg_scripts/genshin_pursuit_main.cpp new file mode 100644 index 0000000..0fedf58 --- /dev/null +++ b/src/main/activities/avg_scripts/genshin_pursuit_main.cpp @@ -0,0 +1,37 @@ +#include "../avg_scripts.hpp" +#include "./utils.hpp" +#include "static_sprites.hpp" +#include "static_maps.hpp" + +using namespace acts::avg_scripts; +using namespace naive_engine; +using namespace silly_framework; + +void acts::avg_scripts::genshin_pursuit_main(avg_scene& self, const std::optional& spawn, const std::string& arg) { + coutils::sync::unleash_lambda([&]() -> coutils::async_fn { + // 出生点 + basics::vec2 spawn_pos = spawn.value_or(points.genshin_pursuit_entry_default); + simulator::entity_node_t person(basics::aabb(-16, 16, -12, 12), spawn_pos); + self.simu.emplace(2048, 1536); + utils::add_main_char(self, person); + + self.bound_map.emplace(&maps::genshin_pursuit_main(), 4.0); + self.bound_sprites[person.ptr()] = {&sprites::container_small(), 4.0, {0, -36}}; + + // 地图边界固定阻挡物 + //simulator::entity_node_t obstacles[] = {}; + //utils::add_map_obstacles(self, obstacles); + + simulator::entity_node_t + leave = {basics::aabb{896, 1152, 1408, 1536}}; + utils::add_trigger_boxes(self, leave); + utils::coll_event_table colls { + { {person.ptr(), leave.ptr()}, [&](){ self.next("genshin_pursuit_entry", points.genshin_pursuit_entry_top); } }, + }; + + while (true) { + auto [_, evt_data] = co_await self.cohost.wait_event({simu_coro_host::EVT_COLLISION}); + utils::check_coll_events(self, colls, evt_data); + } + }); +} diff --git a/src/main/static_maps.cpp b/src/main/static_maps.cpp index 639ac73..119dbe4 100644 --- a/src/main/static_maps.cpp +++ b/src/main/static_maps.cpp @@ -86,10 +86,26 @@ const map2d& maps::dorm_stairs_top() { ); return map; } +const map2d& maps::genshin_pursuit_author() { + static const map2d map("genshin_pursuit_author.png", + map_blocks{ + {{0, 128, 0, 128}, {0, 0}} + } + ); + return map; +} const map2d& maps::genshin_pursuit_entry() { static const map2d map("genshin_pursuit_entry.png", map_blocks{ - {{0, 128, 0, 256}, {0, 0}} + {{0, 128, 0, 160}, {0, 0}} + } + ); + return map; +} +const map2d& maps::genshin_pursuit_main() { + static const map2d map("genshin_pursuit_main.png", + map_blocks{ + {{0, 512, 0, 384}, {0, 0}} } ); return map; diff --git a/src/main/static_maps.hpp b/src/main/static_maps.hpp index 3d07275..f24c334 100644 --- a/src/main/static_maps.hpp +++ b/src/main/static_maps.hpp @@ -13,5 +13,7 @@ const silly_framework::map2d& dorm_stairs(); const silly_framework::map2d& dorm_stairs_bottom(); const silly_framework::map2d& dorm_stairs_middle(); const silly_framework::map2d& dorm_stairs_top(); +const silly_framework::map2d& genshin_pursuit_author(); const silly_framework::map2d& genshin_pursuit_entry(); +const silly_framework::map2d& genshin_pursuit_main(); } // namespace maps