diff options
Diffstat (limited to 'Source/Asset/Asset/attacks.h')
-rw-r--r-- | Source/Asset/Asset/attacks.h | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/Source/Asset/Asset/attacks.h b/Source/Asset/Asset/attacks.h new file mode 100644 index 00000000..04ab2871 --- /dev/null +++ b/Source/Asset/Asset/attacks.h @@ -0,0 +1,102 @@ +//----------------------------------------------------------------------------- +// Name: attacks.h +// Developer: Wolfire Games LLC +// Description: +// License: Read below +//----------------------------------------------------------------------------- +// +// +// Copyright 2022 Wolfire Games LLC +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. +// +//----------------------------------------------------------------------------- +#pragma once + +#include <Asset/assetbase.h> +#include <Asset/assetinfobase.h> + +#include <Math/vec3.h> + +#include <string> + +using std::string; + +enum AttackHeight { + _high = 0, + _medium = 1, + _low = 2 +}; + +enum AttackDirection { + _right = 0, + _front = 1, + _left = 2 +}; + +enum CutPlaneType { + _heavy = 0, + _light = 1 +}; + +class AssetManager; + +class Attack : public AssetInfo { +public: + string special; + string unblocked_anim_path; + string blocked_anim_path; + string throw_anim_path; + string thrown_anim_path; + string thrown_counter_anim_path; + AttackHeight height; + AttackDirection direction; + bool swap_stance; + bool swap_stance_blocked; + bool unblockable; + bool flesh_unblockable; + bool mobile; + bool as_layer; + string alternate; + string reaction; + vec3 impact_dir; + float sharp_damage[2]; + float block_damage[2]; + float damage[2]; + float force[2]; + string materialevent; + vec3 cut_plane; + bool has_cut_plane; + CutPlaneType cut_plane_type; + bool has_stab_dir; + vec3 stab_dir; + CutPlaneType stab_type; + + Attack(AssetManager* owner, uint32_t asset_id); + void ReturnPaths(PathSet &path_set); + int Load(const string &path, uint32_t load_flags); + const char* GetLoadErrorString(); + const char* GetLoadErrorStringExtended() { return ""; } + + void Unload(); + void Reload(); + virtual void ReportLoad(); + void clear(); + static AssetType GetType() { return ATTACK_ASSET; } + static const char* GetTypeName() { return "ATTACK_ASSET"; } + static bool AssetWarning() { return true; } + + virtual AssetLoaderBase* NewLoader(); +}; + +typedef AssetRef<Attack> AttackRef; |