#pragma once // MassBuilderSaveTool // Copyright (C) 2021 Guillaume Jacquemin // // 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 . #include #include #include using namespace Corrade; using namespace Magnum; struct Joints { Float neck = 0.0f; Float body = 0.0f; Float shoulders = 0.0f; Float hips = 0.0f; Float upperArms = 0.0f; Float lowerArms = 0.0f; Float upperLegs = 0.0f; Float lowerLegs = 0.0f; }; class Mass { public: enum class State : UnsignedByte { Empty, Invalid, Valid }; explicit Mass(const std::string& path); Mass(const Mass&) = delete; Mass& operator=(const Mass&) = delete; Mass(Mass&&) = default; Mass& operator=(Mass&&) = default; static auto lastError() -> std::string const&; static auto getNameFromFile(const std::string& path) -> std::string; void refreshValues(); auto filename() -> std::string const&; auto name() -> std::string const&; auto state() -> State; auto jointSliders() -> Joints const&; auto frameStyles() -> Containers::StaticArrayView<4, Int>; auto setFrameStyle(Int index, Int style_id) -> bool; auto updateSteamId(const std::string& steam_id) -> bool; private: void getName(); void getJointSliders(); void getFrameStyles(); static std::string _lastError; std::string _folder; std::string _filename; std::string _name; State _state = State::Empty; Joints _sliders; Containers::StaticArray<4, Int> _frameStyles; };