/
Mr.Stalin
/
FOnline-Engine
Обзор
Документация
Войти
/
Mr.Stalin
/
FOnline-Engine
Код
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Source/Client/ResourceManager.h
90 строк
4 KB
cvet
3d subsystem refactoring (#186)
19 июл 2026, 16:50
Не верифицирован
19 июл 2026, 16:50
7b0fada
Код
Авторство
О чём код?
// __________ ___ ______ _ // / ____/ __ \____ / (_)___ ___ / ____/___ ____ _(_)___ ___ // / /_ / / / / __ \/ / / __ \/ _ \ / __/ / __ \/ __ `/ / __ \/ _ ` // / __/ / /_/ / / / / / / / / / __/ / /___/ / / / /_/ / / / / / __/ // /_/ \____/_/ /_/_/_/_/ /_/\___/ /_____/_/ /_/\__, /_/_/ /_/\___/ // /____/ // FOnline Engine // https://fonline.ru // https://github.com/cvet/fonline // // MIT License // // Copyright (c) 2006 - 2026, Anton Tsvetinskiy aka cvet <cvet@tut.by> // // 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. // #pragma once #include "Common.h" #include "DefaultSprites.h" #include "SpriteManager.h" FO_BEGIN_NAMESPACE #if FO_ENABLE_3D class ModelSprite; #endif class ResourceManager final { public: ResourceManager() = delete; ResourceManager(ptr<RenderSettings> settings, ptr<FileSystem> resources, ptr<SpriteManager> spr_mngr, ptr<AnimationResolver> anim_name_resolver); ResourceManager(const ResourceManager&) = delete; ResourceManager(ResourceManager&&) noexcept = delete; auto operator=(const ResourceManager&) = delete; auto operator=(ResourceManager&&) noexcept = delete; ~ResourceManager() = default; [[nodiscard]] auto GetItemDefaultSpr() -> shared_ptr<Sprite>; [[nodiscard]] auto GetCritterAnimFrames(hstring model_name, CritterStateAnim state_anim, CritterActionAnim action_anim, mdir dir) -> nptr<const SpriteSheet>; [[nodiscard]] auto GetCritterDummyFrames() -> ptr<const SpriteSheet>; [[nodiscard]] auto GetCritterPreviewSpr(hstring model_name, CritterStateAnim state_anim, CritterActionAnim action_anim, mdir dir, nptr<const int32_t> layers3d) -> ptr<const Sprite>; [[nodiscard]] auto GetSoundNames() const -> const map<string, string>&; void IndexFiles(); void CleanupCritterFrames(); private: [[nodiscard]] auto LoadFalloutAnimFrames(hstring model_name, CritterStateAnim state_anim, CritterActionAnim action_anim) -> shared_ptr<SpriteSheet>; [[nodiscard]] auto LoadFalloutAnimSubFrames(hstring model_name, uint32_t state_anim, uint32_t action_anim) -> nptr<const SpriteSheet>; #if FO_ENABLE_3D [[nodiscard]] auto GetCritterPreviewModelSpr(hstring model_name, CritterStateAnim state_anim, CritterActionAnim action_anim, mdir dir, nptr<const int32_t> layers3d) -> nptr<const ModelSprite>; #endif void FixAnimFramesOffs(ptr<SpriteSheet> frames_base, nptr<const SpriteSheet> stay_frm_base); void FixAnimFramesOffsNext(ptr<SpriteSheet> frames_base, nptr<const SpriteSheet> stay_frm_base); ptr<RenderSettings> _settings; ptr<FileSystem> _resources; ptr<SpriteManager> _sprMngr; ptr<AnimationResolver> _animNameResolver; unordered_map<hstring::hash_t, shared_ptr<SpriteSheet>> _critterFrames {}; shared_ptr<SpriteSheet> _critterDummyAnimFrames {}; shared_ptr<Sprite> _itemHexDummyAnim {}; map<string, string> _soundNames {}; #if FO_ENABLE_3D unordered_map<hstring, shared_ptr<ModelSprite>> _critterModels {}; #endif }; FO_END_NAMESPACE