00001
00002
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00031
00032 #ifndef RCSC_PARAM_PLAYER_PARAM_H
00033 #define RCSC_PARAM_PLAYER_PARAM_H
00034
00035 #include <rcsc/rcg/types.h>
00036
00037 #include <boost/scoped_ptr.hpp>
00038
00039 namespace rcsc {
00040
00041 namespace rcg {
00042 struct player_params_t;
00043 }
00044 class ParamMap;
00045
00050 class PlayerParam {
00051 private:
00052
00054 boost::scoped_ptr< ParamMap > M_param_map;
00055
00056 static const int DEFAULT_PLAYER_TYPES;
00057 static const int DEFAULT_SUBS_MAX;
00058 static const int DEFAULT_PT_MAX;
00059
00060 static const bool DEFAULT_ALLOW_MULT_DEFAULT_TYPE;
00061
00062 static const double DEFAULT_PLAYER_SPEED_MAX_DELTA_MIN;
00063 static const double DEFAULT_PLAYER_SPEED_MAX_DELTA_MAX;
00064 static const double DEFAULT_STAMINA_INC_MAX_DELTA_FACTOR;
00065
00066 static const double DEFAULT_PLAYER_DECAY_DELTA_MIN;
00067 static const double DEFAULT_PLAYER_DECAY_DELTA_MAX;
00068 static const double DEFAULT_INERTIA_MOMENT_DELTA_FACTOR;
00069
00070 static const double DEFAULT_DASH_POWER_RATE_DELTA_MIN;
00071 static const double DEFAULT_DASH_POWER_RATE_DELTA_MAX;
00072 static const double DEFAULT_PLAYER_SIZE_DELTA_FACTOR;
00073
00074 static const double DEFAULT_KICKABLE_MARGIN_DELTA_MIN;
00075 static const double DEFAULT_KICKABLE_MARGIN_DELTA_MAX;
00076 static const double DEFAULT_KICK_RAND_DELTA_FACTOR;
00077
00078 static const double DEFAULT_EXTRA_STAMINA_DELTA_MIN;
00079 static const double DEFAULT_EXTRA_STAMINA_DELTA_MAX;
00080 static const double DEFAULT_EFFORT_MAX_DELTA_FACTOR;
00081 static const double DEFAULT_EFFORT_MIN_DELTA_FACTOR;
00082
00083 static const int DEFAULT_RANDOM_SEED;
00084
00085 static const double DEFAULT_NEW_DASH_POWER_RATE_DELTA_MIN;
00086 static const double DEFAULT_NEW_DASH_POWER_RATE_DELTA_MAX;
00087 static const double DEFAULT_NEW_STAMINA_INC_MAX_DELTA_FACTOR;
00088
00089 int M_player_types;
00090 int M_subs_max;
00091 int M_pt_max;
00092
00093 bool M_allow_mult_default_type;
00094
00095 double M_player_speed_max_delta_min;
00096 double M_player_speed_max_delta_max;
00097 double M_stamina_inc_max_delta_factor;
00098
00099 double M_player_decay_delta_min;
00100 double M_player_decay_delta_max;
00101 double M_inertia_moment_delta_factor;
00102
00103 double M_dash_power_rate_delta_min;
00104 double M_dash_power_rate_delta_max;
00105 double M_player_size_delta_factor;
00106
00107 double M_kickable_margin_delta_min;
00108 double M_kickable_margin_delta_max;
00109 double M_kick_rand_delta_factor;
00110
00111 double M_extra_stamina_delta_min;
00112 double M_extra_stamina_delta_max;
00113 double M_effort_max_delta_factor;
00114 double M_effort_min_delta_factor;
00115
00116 int M_random_seed;
00117
00118 double M_new_dash_power_rate_delta_min;
00119 double M_new_dash_power_rate_delta_max;
00120 double M_new_stamina_inc_max_delta_factor;
00121
00128 PlayerParam();
00129
00130 public:
00134 ~PlayerParam();
00135
00137 static
00138 PlayerParam & instance();
00139
00141 inline
00142 static const
00143 PlayerParam & i()
00144 {
00145 return instance();
00146 }
00147
00148 private:
00152 void setDefaultParam();
00153
00157 void createMap();
00158
00159 public:
00166 bool parse( const char * msg,
00167 const double & version );
00168
00169 private:
00175 bool parseV7( const char * msg );
00176
00177
00178 public:
00183 void convertFrom( const rcg::player_params_t & from );
00184
00189 void convertTo( rcg::player_params_t & to ) const;
00190
00195 std::string toStr() const;
00196
00197
00202 int playerTypes() const
00203 {
00204 return M_player_types;
00205 }
00206
00211 int subsMax() const
00212 {
00213 return M_subs_max;
00214 }
00215
00220 int ptMax() const
00221 {
00222 return M_pt_max;
00223 }
00224
00225 bool allowMultDefaultType() const
00226 {
00227 return M_allow_mult_default_type;
00228 }
00229
00230 const
00231 double & playerSpeedMaxDeltaMin() const
00232 {
00233 return M_player_speed_max_delta_min;
00234 }
00235 const
00236 double & playerSpeedMaxDeltaMax() const
00237 {
00238 return M_player_speed_max_delta_max;
00239 }
00240 const
00241 double & staminaIncMaxDeltaFactor() const
00242 {
00243 return M_stamina_inc_max_delta_factor;
00244 }
00245
00246 const
00247 double & playerDecayDeltaMin() const
00248 {
00249 return M_player_decay_delta_min;
00250 }
00251 const
00252 double & playerDecayDeltaMax() const
00253 {
00254 return M_player_decay_delta_max;
00255 }
00256 const
00257 double & inertiaMomentDeltaFactor() const
00258 {
00259 return M_inertia_moment_delta_factor;
00260 }
00261
00262 const
00263 double & dashPowerRateDeltaMin() const
00264 {
00265 return M_dash_power_rate_delta_min;
00266 }
00267 const
00268 double & dashPowerRateDeltaMax() const
00269 {
00270 return M_dash_power_rate_delta_max;
00271 }
00272 const
00273 double & playerSizeDeltaFactor() const
00274 {
00275 return M_player_size_delta_factor;
00276 }
00277
00278 const
00279 double & kickableMarginDeltaMin() const
00280 {
00281 return M_kickable_margin_delta_min;
00282 }
00283 const
00284 double & kickableMarginDeltaMax() const
00285 {
00286 return M_kickable_margin_delta_max;
00287 }
00288 const
00289 double & kickRandDeltaFactor() const
00290 {
00291 return M_kick_rand_delta_factor;
00292 }
00293
00294 const
00295 double & extraStaminaDeltaMin() const
00296 {
00297 return M_extra_stamina_delta_min;
00298 }
00299 const
00300 double & extraStaminaDeltaMax() const
00301 {
00302 return M_extra_stamina_delta_max;
00303 }
00304 const
00305 double & effortMaxDeltaFactor() const
00306 {
00307 return M_effort_max_delta_factor;
00308 }
00309 const
00310 double & effortMinDeltaFactor() const
00311 {
00312 return M_effort_min_delta_factor;
00313 }
00314
00315 int randomSeed() const
00316 {
00317 return M_random_seed;
00318 }
00319
00320 const
00321 double & newDashPowerRateDeltaMin() const
00322 {
00323 return M_new_dash_power_rate_delta_min;
00324 }
00325 const
00326 double & newDashPowerRateDeltaMax() const
00327 {
00328 return M_new_dash_power_rate_delta_max;
00329 }
00330 const
00331 double & newStaminaIncMaxDeltaFactor() const
00332 {
00333 return M_new_stamina_inc_max_delta_factor;
00334 }
00335 };
00336
00337 }
00338
00339 #endif