summaryrefslogtreecommitdiffhomepage
path: root/StarsEx/Skin.h
diff options
context:
space:
mode:
authorAki <please@ignore.pl>2022-04-01 21:23:39 +0200
committerAki <please@ignore.pl>2022-04-01 21:23:39 +0200
commit3c487c5cd69c53d6fea948643c0a76df03516605 (patch)
tree72730c7b8b26a5ef8fc9a987ec4c16129efd5aac /StarsEx/Skin.h
parent8f353abd0bfe18baddd8a8250ab7c4f2d1c83a6e (diff)
downloadstarshatter-3c487c5cd69c53d6fea948643c0a76df03516605.zip
starshatter-3c487c5cd69c53d6fea948643c0a76df03516605.tar.gz
starshatter-3c487c5cd69c53d6fea948643c0a76df03516605.tar.bz2
Moved Stars45 to StarsEx
Diffstat (limited to 'StarsEx/Skin.h')
-rw-r--r--StarsEx/Skin.h91
1 files changed, 91 insertions, 0 deletions
diff --git a/StarsEx/Skin.h b/StarsEx/Skin.h
new file mode 100644
index 0000000..25c5a75
--- /dev/null
+++ b/StarsEx/Skin.h
@@ -0,0 +1,91 @@
+/* Starshatter: The Open Source Project
+ Copyright (c) 2021-2022, Starshatter: The Open Source Project Contributors
+ Copyright (c) 2011-2012, Starshatter OpenSource Distribution Contributors
+ Copyright (c) 1997-2006, Destroyer Studios LLC.
+
+ AUTHOR: John DiCamillo
+
+
+ OVERVIEW
+ ========
+ Classes for managing run-time selectable skins on solid objects
+*/
+
+#ifndef Skin_h
+#define Skin_h
+
+#include "Polygon.h"
+#include "Graphic.h"
+#include "Video.h"
+#include "List.h"
+
+// +--------------------------------------------------------------------+
+
+class Solid;
+class Model;
+class Surface;
+class Segment;
+
+class Skin;
+class SkinCell;
+
+// +--------------------------------------------------------------------+
+
+class Skin
+{
+public:
+ static const char* TYPENAME() { return "Skin"; }
+ enum { NAMELEN=64 };
+
+ Skin(const char* name = 0);
+ virtual ~Skin();
+
+ // operations
+ void ApplyTo(Model* model) const;
+ void Restore(Model* model) const;
+
+ // accessors / mutators
+ const char* Name() const { return name; }
+ const char* Path() const { return path; }
+ int NumCells() const { return cells.size(); }
+
+ void SetName(const char* n);
+ void SetPath(const char* n);
+ void AddMaterial(const Material* mtl);
+
+protected:
+ char name[NAMELEN];
+ char path[256];
+ List<SkinCell> cells;
+};
+
+// +--------------------------------------------------------------------+
+
+class SkinCell
+{
+ friend class Skin;
+
+public:
+ static const char* TYPENAME() { return "SkinCell"; }
+
+ SkinCell(const Material* mtl=0);
+ ~SkinCell();
+
+ int operator == (const SkinCell& other) const;
+
+ const char* Name() const;
+ const Material* Skin() const { return skin; }
+ const Material* Orig() const { return orig; }
+
+ void SetSkin(const Material* mtl);
+ void SetOrig(const Material* mtl);
+
+private:
+ const Material* skin;
+ const Material* orig;
+};
+
+// +--------------------------------------------------------------------+
+
+#endif // Skin_h
+