00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #include "pent_include.h"
00020
00021 #include "ShapeInfo.h"
00022 #include "CoreApp.h"
00023
00024 bool ShapeInfo::getTypeFlag(int typeflag)
00025 {
00026 if (GAME_IS_U8)
00027 return getTypeFlagU8(typeflag);
00028 else if (GAME_IS_CRUSADER)
00029 return getTypeFlagCrusader(typeflag);
00030 CANT_HAPPEN_MSG("Invalid game type");
00031 return false;
00032 }
00033
00034 bool ShapeInfo::getTypeFlagU8(int typeflag)
00035 {
00036
00037
00038
00039
00040
00041
00042
00043 if (typeflag <= 11)
00044 {
00045 return (flags >> typeflag) & 1;
00046 }
00047 else if (typeflag <= 15)
00048 {
00049 return (family >> (typeflag-12)) & 1;
00050 }
00051 else if (typeflag <= 19)
00052 {
00053 return (equiptype >> (typeflag-16)) & 1;
00054 }
00055 else if (typeflag <= 23)
00056 {
00057 return (x >> (typeflag-20)) & 1;
00058 }
00059 else if (typeflag <= 27)
00060 {
00061 return (y >> (typeflag-24)) & 1;
00062 }
00063 else if (typeflag <= 31)
00064 {
00065 return (z >> (typeflag-28)) & 1;
00066 }
00067 else if (typeflag <= 35)
00068 {
00069 return (animtype >> (typeflag-32)) & 1;
00070 }
00071 else if (typeflag <= 39)
00072 {
00073 return (animdata >> (typeflag-36)) & 1;
00074 }
00075 else if (typeflag <= 43)
00076 {
00077 return (unknown >> (typeflag-40)) & 1;
00078 }
00079 else if (typeflag <= 47)
00080 {
00081 return (flags >> (12+typeflag-44)) & 1;
00082 }
00083 else if (typeflag <= 55)
00084 {
00085 return (weight >> (typeflag-48)) & 1;
00086 }
00087 else if (typeflag <= 63)
00088 {
00089 return (volume >> (typeflag-56)) & 1;
00090 }
00091
00092 return false;
00093 }
00094
00095 bool ShapeInfo::getTypeFlagCrusader(int typeflag)
00096 {
00097 if (typeflag <= 11)
00098 {
00099 return (flags >> typeflag) & 1;
00100 }
00101 else if (typeflag <= 16)
00102 {
00103 return (family >> (typeflag-12)) & 1;
00104 }
00105 else if (typeflag <= 20)
00106 {
00107 perr << "Warning: unknown typeflag requested." << std::endl;
00108 }
00109 else if (typeflag <= 26)
00110 {
00111 return (x >> (typeflag-21)) & 1;
00112 }
00113 else if (typeflag <= 31)
00114 {
00115 return (y >> (typeflag-27)) & 1;
00116 }
00117 else if (typeflag <= 36)
00118 {
00119 return (z >> (typeflag-32)) & 1;
00120 }
00121 else if (typeflag <= 47)
00122 {
00123 perr << "Warning: unknown typeflag requested." << std::endl;
00124 }
00125 else if (typeflag <= 55)
00126 {
00127 return (flags >> (12+typeflag-55)) & 1;
00128 }
00129 else if (typeflag <= 71)
00130 {
00131 perr << "Warning: unknown typeflag requested." << std::endl;
00132 }
00133
00134 return false;
00135 }
00136