diff --git a/README.md b/README.md index d95d6f48..01cae2c2 100644 --- a/README.md +++ b/README.md @@ -4,4 +4,23 @@ # 说明 -- [DialogueManager 使用与维护说明](https://docs.qq.com/doc/DWG5vaEZ1Qk9EdVVw) \ No newline at end of file +- animation frames:res://config/animation/entity_sprite_frames.tres + +## 插件 + +- [DialogueManager 使用与维护说明](https://docs.qq.com/doc/DWG5vaEZ1Qk9EdVVw) +- [GIF 插件](https://godotengine.org/asset-library/asset/2255) + +## Ground 与 GroundLoader + +- 正常游戏:Main -> GroundLoader -> Ground +- 开发阶段:直接编辑 Ground + +## 存档结构 + +- 开发阶段存档:save0 +- 正常继续游戏存档:save1 + +每个场景都有一份 GroundArchive 存档,通过 ArchiveManager.archive.ground_archive() 可以获得。 + +current_scene 是通过 GroundLoader 加载的,在 ground loader 加载 ground 时,会先更新 archive 的 current scene,然后加载 ground。 diff --git a/addons/godotgif/LICENSE.txt b/addons/godotgif/LICENSE.txt new file mode 100644 index 00000000..f8a23348 --- /dev/null +++ b/addons/godotgif/LICENSE.txt @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 B0TLANNER Games + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/addons/godotgif/README.md b/addons/godotgif/README.md new file mode 100644 index 00000000..019419b4 --- /dev/null +++ b/addons/godotgif/README.md @@ -0,0 +1,139 @@ +# Godot GIF +
+ +

+ Logo +

+ +

+ GitHub Build + MIT License +

+ + +## Description +GDExtension for Godot 4+ to load GIF files as [AnimatedTexture](https://docs.godotengine.org/en/stable/classes/class_animatedtexture.html) and/or [SpriteFrames](https://docs.godotengine.org/en/stable/classes/class_spriteframes.html). + +NOTE: ~~**AnimatedTexture**~~ has been marked as deprecated according to development docs and could be removed in a future version of Godot. + + +## Usage + +### Editor + +Gif files can be imported at edit time as one of the supported types via Import options. + +
+ Editor Imports Options + +![Editor Imports Options](./docs-images/EditorImportSettings.gif) +
+ +See the [Editor Imports](./demo/editor_imports_example.tscn) example scene. +
+ Editor Imports Example + +![Editor Imports](./docs-images/EditorImports.gif) +
+ +
+ +### Runtime + +Gif files can be loaded at runtime as one of the supported types via the `GifManager` singleton. + +`GifManager` exposes the following methods for loading gifs either from file or from bytes directly: +![GifManager Methods](./docs-images/methods.png) + +e.g. to load from file +```py +get_node("AnimFromRuntimeFile").texture = GifManager.animated_texture_from_file("res://examples/file/optic.gif") + +get_node("AnimatedSprite2RuntimeFile").sprite_frames = GifManager.sprite_frames_from_file("res://examples/file/optic.gif") +``` + +See the [Runtime Imports](./demo/main.tscn) example scene. +
+ Runtime Imports Example + +![Runtime Imports](./docs-images/RuntimeImports.gif) +
+ + +## Installation + +Download the `gdextension` artifact from the [latest successful build](https://github.com/BOTLANNER/godot-gif/actions/workflows/build_releases.yml). (It should be right at the bottom of the **Summary**) +![image](https://github.com/BOTLANNER/godot-gif/assets/16349308/f28867c6-f669-45f2-9309-dbb17cec2031) + +Extract the contents to your Godot project directory. + +You should have an `addons` directory at the root with the following structure: +```bash +└───addons + └───godotgif + │ godotgif.gdextension + │ LICENSE.txt + │ README.md + │ + └───bin + │ godotgif.windows.template_debug.x86_32.dll + │ godotgif.windows.template_debug.x86_64.dll + │ godotgif.windows.template_release.x86_32.dll + │ godotgif.windows.template_release.x86_64.dll + │ libgodotgif.android.template_debug.arm64.so + │ libgodotgif.android.template_release.arm64.so + │ libgodotgif.linux.template_debug.x86_32.so + │ libgodotgif.linux.template_debug.x86_64.so + │ libgodotgif.linux.template_release.x86_32.so + │ libgodotgif.linux.template_release.x86_64.so + │ + ├───godotgif.macos.template_debug.framework + │ libgodotgif.macos.template_debug + │ + └───godotgif.macos.template_release.framework + libgodotgif.macos.template_release +``` + +Open your project. Any exisitng gifs should auto-import. New gifs in the project directory will automatically import as `SpriteFrames`. To convert them into `AnimatedTexture`, update the [import settings](#editor). + +The `GifManager` class should also now be available for access within GDScript. + +## Contributing + +### Setup + +Ensure **SCons** is setup. Refer to [Introduction to the buildsystem](https://docs.godotengine.org/en/stable/contributing/development/compiling/introduction_to_the_buildsystem.html) + +* If using a different version of Godot, be sure to dump the bindings e.g. + ```sh + godot --dump-extension-api extension_api.json + ``` +* Compile with + ```sh + scons platform= custom_api_file=extension_api.json + ``` + +### Debugging + +This repository is configured for use with [VSCode](https://code.visualstudio.com/) + +[Launch configurations](./.vscode/launch.json) have been setup for both debugging in editor and in runtime provided certain **VSCode** extensions are present and environment variables are defined. + +The following environment variables are required: + +1. `GODOT_PATH` - The directory in which Godot is installed +1. `GODOT_EXECUTABLE` - The executable name of the Godot installation + +### More Details +Refer to [GDExtension C++ example](https://docs.godotengine.org/en/stable/tutorials/scripting/gdextension/gdextension_cpp_example.html) + + +## License + +Unless otherwise specified, the extension is released under the +[MIT license](LICENSE.txt). + +See the full list of third-party libraries with their licenses used by this +extension at [src/thirdparty/README.md](src/thirdparty/README.md). + +This implementation heavily borrowed inspiration from the [gif module](https://github.com/goostengine/goost/tree/gd3/modules/gif) for [Goost](https://github.com/goostengine/goost) that is currently only based on Godot 3 diff --git a/addons/godotgif/bin/godotgif.macos.template_debug.framework/libgodotgif.macos.template_debug b/addons/godotgif/bin/godotgif.macos.template_debug.framework/libgodotgif.macos.template_debug new file mode 100644 index 00000000..1c6c7739 Binary files /dev/null and b/addons/godotgif/bin/godotgif.macos.template_debug.framework/libgodotgif.macos.template_debug differ diff --git a/addons/godotgif/bin/godotgif.macos.template_release.framework/libgodotgif.macos.template_release b/addons/godotgif/bin/godotgif.macos.template_release.framework/libgodotgif.macos.template_release new file mode 100644 index 00000000..dcbb2eaf Binary files /dev/null and b/addons/godotgif/bin/godotgif.macos.template_release.framework/libgodotgif.macos.template_release differ diff --git a/addons/godotgif/bin/godotgif.windows.template_debug.x86_32.dll b/addons/godotgif/bin/godotgif.windows.template_debug.x86_32.dll new file mode 100644 index 00000000..84b492d4 Binary files /dev/null and b/addons/godotgif/bin/godotgif.windows.template_debug.x86_32.dll differ diff --git a/addons/godotgif/bin/godotgif.windows.template_debug.x86_64.dll b/addons/godotgif/bin/godotgif.windows.template_debug.x86_64.dll new file mode 100644 index 00000000..503c2d67 Binary files /dev/null and b/addons/godotgif/bin/godotgif.windows.template_debug.x86_64.dll differ diff --git a/addons/godotgif/bin/godotgif.windows.template_release.x86_32.dll b/addons/godotgif/bin/godotgif.windows.template_release.x86_32.dll new file mode 100644 index 00000000..021e7bdb Binary files /dev/null and b/addons/godotgif/bin/godotgif.windows.template_release.x86_32.dll differ diff --git a/addons/godotgif/bin/godotgif.windows.template_release.x86_64.dll b/addons/godotgif/bin/godotgif.windows.template_release.x86_64.dll new file mode 100644 index 00000000..4ffd517f Binary files /dev/null and b/addons/godotgif/bin/godotgif.windows.template_release.x86_64.dll differ diff --git a/addons/godotgif/bin/libgodotgif.android.template_debug.arm64.so b/addons/godotgif/bin/libgodotgif.android.template_debug.arm64.so new file mode 100644 index 00000000..a5d8f535 Binary files /dev/null and b/addons/godotgif/bin/libgodotgif.android.template_debug.arm64.so differ diff --git a/addons/godotgif/bin/libgodotgif.android.template_release.arm64.so b/addons/godotgif/bin/libgodotgif.android.template_release.arm64.so new file mode 100644 index 00000000..6f349587 Binary files /dev/null and b/addons/godotgif/bin/libgodotgif.android.template_release.arm64.so differ diff --git a/addons/godotgif/bin/libgodotgif.linux.template_debug.x86_32.so b/addons/godotgif/bin/libgodotgif.linux.template_debug.x86_32.so new file mode 100644 index 00000000..ed99762c Binary files /dev/null and b/addons/godotgif/bin/libgodotgif.linux.template_debug.x86_32.so differ diff --git a/addons/godotgif/bin/libgodotgif.linux.template_debug.x86_64.so b/addons/godotgif/bin/libgodotgif.linux.template_debug.x86_64.so new file mode 100644 index 00000000..1368208f Binary files /dev/null and b/addons/godotgif/bin/libgodotgif.linux.template_debug.x86_64.so differ diff --git a/addons/godotgif/bin/libgodotgif.linux.template_release.x86_32.so b/addons/godotgif/bin/libgodotgif.linux.template_release.x86_32.so new file mode 100644 index 00000000..eb9dc8d3 Binary files /dev/null and b/addons/godotgif/bin/libgodotgif.linux.template_release.x86_32.so differ diff --git a/addons/godotgif/bin/libgodotgif.linux.template_release.x86_64.so b/addons/godotgif/bin/libgodotgif.linux.template_release.x86_64.so new file mode 100644 index 00000000..d53992d3 Binary files /dev/null and b/addons/godotgif/bin/libgodotgif.linux.template_release.x86_64.so differ diff --git a/addons/godotgif/godotgif.gdextension b/addons/godotgif/godotgif.gdextension new file mode 100644 index 00000000..fb241a26 --- /dev/null +++ b/addons/godotgif/godotgif.gdextension @@ -0,0 +1,23 @@ +[configuration] + +entry_symbol = "godot_gif_library_init" +compatibility_minimum = "4.1" + +[libraries] + +macos.debug = "bin/godotgif.macos.template_debug.framework/libgodotgif.macos.template_debug" +macos.release = "bin/godotgif.macos.template_release.framework/libgodotgif.macos.template_release" +windows.debug.x86_32 = "bin/godotgif.windows.template_debug.x86_32.dll" +windows.release.x86_32 = "bin/godotgif.windows.template_release.x86_32.dll" +windows.debug.x86_64 = "bin/godotgif.windows.template_debug.x86_64.dll" +windows.release.x86_64 = "bin/godotgif.windows.template_release.x86_64.dll" +linux.debug.x86_64 = "bin/libgodotgif.linux.template_debug.x86_64.so" +linux.release.x86_64 = "bin/libgodotgif.linux.template_release.x86_64.so" +linux.debug.arm64 = "bin/libgodotgif.linux.template_debug.arm64.so" +linux.release.arm64 = "bin/libgodotgif.linux.template_release.arm64.so" +linux.debug.rv64 = "bin/libgodotgif.linux.template_debug.rv64.so" +linux.release.rv64 = "bin/libgodotgif.linux.template_release.rv64.so" +android.debug.x86_64 = "bin/libgodotgif.android.template_debug.x86_64.so" +android.release.x86_64 = "bin/libgodotgif.android.template_release.x86_64.so" +android.debug.arm64 = "bin/libgodotgif.android.template_debug.arm64.so" +android.release.arm64 = "bin/libgodotgif.android.template_release.arm64.so" diff --git a/asset/art/右1跑动男孩ceshi.gif b/asset/art/右1跑动男孩ceshi.gif new file mode 100644 index 00000000..ea3e9388 Binary files /dev/null and b/asset/art/右1跑动男孩ceshi.gif differ