World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
Структура explosion_effect_struct

#include <Arcomage.h>

+ Граф связей класса explosion_effect_struct:

Открытые члены

int Free ()
 
int StartFill (effect_params_struct *params)
 
int Clear (char stop_init, char wipe)
 
int UpdateEffect ()
 
int IsEffectActive ()
 

Открытые статические члены

static explosion_effect_structNew ()
 

Открытые атрибуты

int mem_signature
 
int spark_array_size
 
int remaining_sparks_to_init
 
int start_x_min
 
int start_y_max
 
int start_x_max
 
int start_y_min
 
int unused_param_1
 
int unused_param_2
 
int unused_param_3
 
float gravity_unshift
 
float num_init_per_cycle
 
float prev_init_overflow
 
int unused_acc_1
 
int unused_acc_2
 
int min_lifespan
 
int max_lifespan
 
int unused_param_4
 
int unused_param_5
 
int unused_param_6
 
int unused_param_7
 
spark_point_structspark_array_ptr = nullptr
 
char effect_active
 
char params_filled
 
char unused_param_8
 
char unused_param_9
 

Подробное описание

См. определение в файле Arcomage.h строка 193

Методы

◆ New()

explosion_effect_struct * explosion_effect_struct::New ( )
static

См. определение в файле Arcomage.cpp строка 208

208  {
210  if (v2 == nullptr) {
211  logger->Warning(L"Malloc error");
212  Error("Malloc"); // is this recoverable
213  }
214  v2->mem_signature = SIG_MEMALOC;
215  v2->remaining_sparks_to_init = 0;
216  v2->prev_init_overflow = 0.0;
217  v2->effect_active = 0;
218  v2->params_filled = 0;
219 
220  return v2;
221 }

Перекрестные ссылки logger и Log::Warning().

Используется в ArcomageGame::PrepareArcomage().

+ Граф вызовов:
+ Граф вызова функции:

◆ Free()

int explosion_effect_struct::Free ( )

См. определение в файле Arcomage.cpp строка 223

223  {
224  if (this->mem_signature == SIG_MEMALOC) {
225  this->mem_signature = SIG_MEMFREE;
226  free(this);
227  return 0;
228  }
229 
230  return 2;
231 }

Перекрестные ссылки mem_signature.

Используется в ArcomageGame::Loop().

+ Граф вызова функции:

◆ StartFill()

int explosion_effect_struct::StartFill ( effect_params_struct params)

См. определение в файле Arcomage.cpp строка 233

233  {
234  // fill effect params;
235  if (this->mem_signature == SIG_MEMALOC) {
236  this->spark_array_size = params->spark_array_size;
237  this->start_x_min = params->effect_area.x << 16;
238  this->start_y_max = params->effect_area.y << 16;
239  this->start_x_max = params->effect_area.z << 16;
240  this->start_y_min = params->effect_area.w << 16;
241  this->unused_param_1 = params->unused_param_1;
242  this->unused_param_2 = params->unused_param_2;
243  this->unused_param_3 = params->unused_param_3;
244  this->gravity_unshift = (float)(params->gravity_acc * 65536.0);
245  this->num_init_per_cycle = params->create_per_frame;
246  this->unused_acc_1 = (int)(params->unused_acc_1 * 65536.0);
247  this->unused_acc_1 = (int)(params->unused_acc_1 * 65536.0);
248  this->min_lifespan = params->min_lifespan;
249  this->max_lifespan = params->max_lifespan;
250  this->spark_array_ptr = params->sparks_array;
251  this->params_filled = 1;
252  return 0;
253  }
254 
255  return 2;
256 }

Перекрестные ссылки effect_params_struct::create_per_frame, effect_params_struct::effect_area, gravity_unshift, effect_params_struct::max_lifespan, max_lifespan, mem_signature, effect_params_struct::min_lifespan, min_lifespan, num_init_per_cycle, params_filled, spark_array_ptr, effect_params_struct::spark_array_size, spark_array_size, effect_params_struct::sparks_array, start_x_max, start_x_min, start_y_max, start_y_min, unused_acc_1, effect_params_struct::unused_param_1, unused_param_1, effect_params_struct::unused_param_2, unused_param_2, effect_params_struct::unused_param_3, unused_param_3, Rect::w, Rect::x, Rect::y и Rect::z.

Используется в new_explosion_effect().

+ Граф вызова функции:

◆ Clear()

int explosion_effect_struct::Clear ( char  stop_init,
char  wipe 
)

См. определение в файле Arcomage.cpp строка 258

258  {
259  if (mem_signature == SIG_MEMALOC) {
260  if (stop_init) {
262  prev_init_overflow = 0.0;
263  }
264  if (params_filled && wipe) {
265  for (int i = 0; i < spark_array_size; ++i) spark_array_ptr[i].spark_remaining_life = 0;
266  effect_active = 0;
267  }
268  return 0;
269  }
270 
271  return 2;
272 }

Перекрестные ссылки effect_active, mem_signature, params_filled, prev_init_overflow, remaining_sparks_to_init, spark_array_ptr и spark_array_size.

Используется в ArcomageGame::Loop().

+ Граф вызова функции:

◆ UpdateEffect()

int explosion_effect_struct::UpdateEffect ( )

См. определение в файле Arcomage.cpp строка 274

274  {
275  if (this->mem_signature != SIG_MEMALOC) return 2;
276 
277  // calculate how many sparks to initiate
278  float total_to_init = 0;
279  if (this->remaining_sparks_to_init > 0) {
280  total_to_init = this->prev_init_overflow + this->num_init_per_cycle;
281  if (total_to_init > this->remaining_sparks_to_init) total_to_init = this->remaining_sparks_to_init;
282  }
283 
284  // if sparks left to initiate or effect is still active
285  if (total_to_init >= 1.0 || this->effect_active) {
286  bool active_check = 0;
287  spark_point_struct* spark_ptr = this->spark_array_ptr;
288 
289  // cycle through array
290  for (int v21 = this->spark_array_size; v21; v21--) {
291  // spark alive so update
292  if (spark_ptr->spark_remaining_life > 0) {
293  // reduce spark life
294  --spark_ptr->spark_remaining_life;
295 
296  // update x pos
297  spark_ptr->spark_x_unshift += spark_ptr->spark_x_speed;
298  spark_ptr->spark_position.x = spark_ptr->spark_x_unshift >> 16;
299 
300  // update y pos
301  spark_ptr->spark_y_speed += this->gravity_unshift;
302  spark_ptr->spark_y_unshift += spark_ptr->spark_y_speed;
303  spark_ptr->spark_position.y = spark_ptr->spark_y_unshift >> 16;
304 
305  // set effect still active
306  active_check = 1;
307  } else {
308  if (total_to_init >= 1.0) {
309  // spark dead - initialze new spark
310  spark_ptr->spark_remaining_life = rand_interval(this->min_lifespan, this->max_lifespan);
311  spark_ptr->spark_x_speed = (rand() % 17 - 8) << 16;
312  spark_ptr->spark_y_speed = (rand() % 17 - 8) << 16;
313  spark_ptr->spark_x_unshift = rand_interval(this->start_x_min, (this->start_x_max - 1));
314  spark_ptr->spark_position.x = spark_ptr->spark_x_unshift >> 16;
315  spark_ptr->spark_y_unshift = rand_interval((this->start_y_min - 1), this->start_y_max);;
316  spark_ptr->spark_position.y = spark_ptr->spark_y_unshift >> 16;
317  --this->remaining_sparks_to_init;
318  --total_to_init;
319 
320  // set effect still active
321  active_check = 1;
322  }
323  }
324  ++spark_ptr;
325  }
326 
327  this->effect_active = active_check;
328  this->prev_init_overflow = total_to_init;
329  }
330  return 0;
331 }

Перекрестные ссылки effect_active, gravity_unshift, max_lifespan, mem_signature, min_lifespan, num_init_per_cycle, prev_init_overflow, rand_interval(), remaining_sparks_to_init, spark_array_ptr, spark_array_size, spark_point_struct::spark_position, spark_point_struct::spark_remaining_life, spark_point_struct::spark_x_speed, spark_point_struct::spark_x_unshift, spark_point_struct::spark_y_speed, spark_point_struct::spark_y_unshift, start_x_max, start_x_min, start_y_max, start_y_min, Point::x и Point::y.

Используется в DrawGameUI().

+ Граф вызовов:
+ Граф вызова функции:

◆ IsEffectActive()

int explosion_effect_struct::IsEffectActive ( )

См. определение в файле Arcomage.cpp строка 333

333  {
334  // returns 2 if effect still active - 0/1/3 otherwise
335  if (mem_signature == SIG_MEMALOC) {
336  if (remaining_sparks_to_init <= 0)
337  return effect_active != 0 ? 2 : 0;
338  else
339  return 1;
340  }
341 
342  return 3;
343 }

Перекрестные ссылки effect_active, mem_signature и remaining_sparks_to_init.

Данные класса

◆ mem_signature

int explosion_effect_struct::mem_signature

См. определение в файле Arcomage.h строка 202

Используется в Clear(), Free(), IsEffectActive(), StartFill() и UpdateEffect().

◆ spark_array_size

int explosion_effect_struct::spark_array_size

См. определение в файле Arcomage.h строка 203

Используется в Clear(), new_explosion_effect(), StartFill() и UpdateEffect().

◆ remaining_sparks_to_init

int explosion_effect_struct::remaining_sparks_to_init

См. определение в файле Arcomage.h строка 204

Используется в Clear(), IsEffectActive(), new_explosion_effect() и UpdateEffect().

◆ start_x_min

int explosion_effect_struct::start_x_min

См. определение в файле Arcomage.h строка 205

Используется в StartFill() и UpdateEffect().

◆ start_y_max

int explosion_effect_struct::start_y_max

См. определение в файле Arcomage.h строка 206

Используется в StartFill() и UpdateEffect().

◆ start_x_max

int explosion_effect_struct::start_x_max

См. определение в файле Arcomage.h строка 207

Используется в StartFill() и UpdateEffect().

◆ start_y_min

int explosion_effect_struct::start_y_min

См. определение в файле Arcomage.h строка 208

Используется в StartFill() и UpdateEffect().

◆ unused_param_1

int explosion_effect_struct::unused_param_1

См. определение в файле Arcomage.h строка 209

Используется в StartFill().

◆ unused_param_2

int explosion_effect_struct::unused_param_2

См. определение в файле Arcomage.h строка 210

Используется в StartFill().

◆ unused_param_3

int explosion_effect_struct::unused_param_3

См. определение в файле Arcomage.h строка 211

Используется в StartFill().

◆ gravity_unshift

float explosion_effect_struct::gravity_unshift

См. определение в файле Arcomage.h строка 212

Используется в StartFill() и UpdateEffect().

◆ num_init_per_cycle

float explosion_effect_struct::num_init_per_cycle

См. определение в файле Arcomage.h строка 213

Используется в StartFill() и UpdateEffect().

◆ prev_init_overflow

float explosion_effect_struct::prev_init_overflow

См. определение в файле Arcomage.h строка 214

Используется в Clear(), new_explosion_effect() и UpdateEffect().

◆ unused_acc_1

int explosion_effect_struct::unused_acc_1

См. определение в файле Arcomage.h строка 215

Используется в StartFill().

◆ unused_acc_2

int explosion_effect_struct::unused_acc_2

См. определение в файле Arcomage.h строка 216

◆ min_lifespan

int explosion_effect_struct::min_lifespan

См. определение в файле Arcomage.h строка 217

Используется в StartFill() и UpdateEffect().

◆ max_lifespan

int explosion_effect_struct::max_lifespan

См. определение в файле Arcomage.h строка 218

Используется в StartFill() и UpdateEffect().

◆ unused_param_4

int explosion_effect_struct::unused_param_4

См. определение в файле Arcomage.h строка 219

Используется в new_explosion_effect().

◆ unused_param_5

int explosion_effect_struct::unused_param_5

См. определение в файле Arcomage.h строка 220

Используется в new_explosion_effect().

◆ unused_param_6

int explosion_effect_struct::unused_param_6

См. определение в файле Arcomage.h строка 221

Используется в new_explosion_effect().

◆ unused_param_7

int explosion_effect_struct::unused_param_7

См. определение в файле Arcomage.h строка 222

Используется в new_explosion_effect().

◆ spark_array_ptr

spark_point_struct* explosion_effect_struct::spark_array_ptr = nullptr

См. определение в файле Arcomage.h строка 223

Используется в Clear(), new_explosion_effect(), StartFill() и UpdateEffect().

◆ effect_active

char explosion_effect_struct::effect_active

См. определение в файле Arcomage.h строка 224

Используется в Clear(), IsEffectActive(), new_explosion_effect() и UpdateEffect().

◆ params_filled

char explosion_effect_struct::params_filled

См. определение в файле Arcomage.h строка 225

Используется в Clear(), new_explosion_effect() и StartFill().

◆ unused_param_8

char explosion_effect_struct::unused_param_8

См. определение в файле Arcomage.h строка 226

◆ unused_param_9

char explosion_effect_struct::unused_param_9

См. определение в файле Arcomage.h строка 227


Объявления и описания членов структур находятся в файлах:
explosion_effect_struct::num_init_per_cycle
float num_init_per_cycle
Definition: Arcomage.h:213
effect_params_struct::create_per_frame
float create_per_frame
Definition: Arcomage.h:185
explosion_effect_struct::gravity_unshift
float gravity_unshift
Definition: Arcomage.h:212
Rect::x
int x
Definition: Rect.h:4
effect_params_struct::unused_param_3
int unused_param_3
Definition: Arcomage.h:182
Rect::w
int w
Definition: Rect.h:7
spark_point_struct::spark_position
Point spark_position
Definition: Arcomage.h:171
Rect::z
int z
Definition: Rect.h:6
explosion_effect_struct::max_lifespan
int max_lifespan
Definition: Arcomage.h:218
params
const GLfloat * params
Definition: SDL_opengl_glext.h:374
explosion_effect_struct::unused_param_3
int unused_param_3
Definition: Arcomage.h:211
Point::x
unsigned int x
Definition: Point.h:7
effect_params_struct::unused_param_1
int unused_param_1
Definition: Arcomage.h:180
spark_point_struct::spark_y_unshift
int spark_y_unshift
Definition: Arcomage.h:173
spark_point_struct::spark_remaining_life
int spark_remaining_life
Definition: Arcomage.h:170
effect_params_struct::spark_array_size
int spark_array_size
Definition: Arcomage.h:184
effect_params_struct::max_lifespan
int max_lifespan
Definition: Arcomage.h:189
explosion_effect_struct::start_x_min
int start_x_min
Definition: Arcomage.h:205
Log::Warning
void Warning(const wchar_t *pFormat,...)
Definition: Log.cpp:28
explosion_effect_struct::min_lifespan
int min_lifespan
Definition: Arcomage.h:217
effect_params_struct::min_lifespan
int min_lifespan
Definition: Arcomage.h:188
explosion_effect_struct::unused_param_2
int unused_param_2
Definition: Arcomage.h:210
explosion_effect_struct::start_x_max
int start_x_max
Definition: Arcomage.h:207
explosion_effect_struct::start_y_min
int start_y_min
Definition: Arcomage.h:208
explosion_effect_struct::unused_param_1
int unused_param_1
Definition: Arcomage.h:209
explosion_effect_struct::params_filled
char params_filled
Definition: Arcomage.h:225
spark_point_struct::spark_x_unshift
int spark_x_unshift
Definition: Arcomage.h:172
explosion_effect_struct::mem_signature
int mem_signature
Definition: Arcomage.h:202
spark_point_struct
Definition: Arcomage.h:169
Point::y
unsigned int y
Definition: Point.h:8
explosion_effect_struct::effect_active
char effect_active
Definition: Arcomage.h:224
spark_point_struct::spark_x_speed
int spark_x_speed
Definition: Arcomage.h:174
Rect::y
int y
Definition: Rect.h:5
explosion_effect_struct::start_y_max
int start_y_max
Definition: Arcomage.h:206
v2
GLfloat GLfloat GLfloat v2
Definition: SDL_opengl_glext.h:695
explosion_effect_struct::unused_acc_1
int unused_acc_1
Definition: Arcomage.h:215
spark_point_struct::spark_y_speed
int spark_y_speed
Definition: Arcomage.h:175
explosion_effect_struct::prev_init_overflow
float prev_init_overflow
Definition: Arcomage.h:214
explosion_effect_struct::spark_array_ptr
spark_point_struct * spark_array_ptr
Definition: Arcomage.h:223
explosion_effect_struct
Definition: Arcomage.h:193
effect_params_struct::unused_param_2
int unused_param_2
Definition: Arcomage.h:181
rand_interval
int rand_interval(int min, int max)
Definition: Arcomage.cpp:3077
logger
Log * logger
Definition: IocContainer.cpp:47
explosion_effect_struct::remaining_sparks_to_init
int remaining_sparks_to_init
Definition: Arcomage.h:204
effect_params_struct::sparks_array
spark_point_struct * sparks_array
Definition: Arcomage.h:190
effect_params_struct::effect_area
Rect effect_area
Definition: Arcomage.h:179
explosion_effect_struct::spark_array_size
int spark_array_size
Definition: Arcomage.h:203