diff options
Diffstat (limited to 'Source/Game/component.h')
-rw-r--r-- | Source/Game/component.h | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/Source/Game/component.h b/Source/Game/component.h new file mode 100644 index 00000000..aba69a90 --- /dev/null +++ b/Source/Game/component.h @@ -0,0 +1,55 @@ +//----------------------------------------------------------------------------- +// Name: component.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 <Objects/object_msg.h> + +#include <cstdarg> + +struct EntityDescription; +class TiXmlElement; + +namespace Phoenix { + +class Component { +public: + enum ComponentType { + COLOR_TINT + }; + ComponentType type() {return type_;} + virtual void SetFromDescription(const EntityDescription& desc)=0; + virtual void SaveToXML(TiXmlElement* el)=0; + virtual void ReceiveObjectMessage(OBJECT_MSG::Type msg_type, ...) { + va_list args; + va_start(args, msg_type); + ReceiveObjectMessageVAList(msg_type, args); + va_end(args); + } + virtual void ReceiveObjectMessageVAList(OBJECT_MSG::Type msg_type, va_list args) = 0; + virtual ~Component() {} +private: + ComponentType type_; +}; + +} |