File: cmdclean.c

package info (click to toggle)
searchandrescue 0.8.2-7
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 4,648 kB
  • ctags: 6,112
  • sloc: ansic: 89,072; cpp: 7,691; sh: 90; makefile: 77
file content (80 lines) | stat: -rw-r--r-- 1,742 bytes parent folder | download | duplicates (8)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>

#include "../include/string.h"

#include "gw.h"
#include "obj.h"
#include "objutils.h"
#include "messages.h"
#include "simop.h"
#include "cmd.h"
#include "sar.h"
#include "config.h"


void SARCmdClean(SAR_CMD_PROTOTYPE);


#define ATOI(s)         (((s) != NULL) ? atoi(s) : 0)
#define ATOL(s)         (((s) != NULL) ? atol(s) : 0)
#define ATOF(s)         (((s) != NULL) ? (float)atof(s) : 0.0f)
#define STRDUP(s)       (((s) != NULL) ? strdup(s) : NULL)

#define MAX(a,b)        (((a) > (b)) ? (a) : (b))
#define MIN(a,b)        (((a) < (b)) ? (a) : (b))
#define CLIP(a,l,h)     (MIN(MAX((a),(l)),(h)))
#define STRLEN(s)       (((s) != NULL) ? ((int)strlen(s)) : 0)

#define RADTODEG(r)     ((r) * 180.0 / PI)
#define DEGTORAD(d)     ((d) * PI / 180.0)


/*
 *	Scene "cleaning" (deletion of effects objects).
 */
void SARCmdClean(SAR_CMD_PROTOTYPE)
{
	int objects_deleted = 0;
	sar_core_struct *core_ptr = SAR_CORE(data);
	sar_scene_struct *scene = core_ptr->scene;
	if(scene == NULL)
	    return;

	/* Delete all effects objects? */
	if(!strcasecmp(arg, "all"))
	{
	    objects_deleted = SARSimDeleteEffects(
		core_ptr, scene,
		&core_ptr->object, &core_ptr->total_objects,
		-1,
		0
	    );
	}
	else
	{
	    /* Delete effects objects relative to the player object */
	    objects_deleted = SARSimDeleteEffects(
		core_ptr, scene,
		&core_ptr->object, &core_ptr->total_objects,
		scene->player_obj_num,
		0
	    );
	}

	if(SAR_CMD_IS_VERBOSE(flags))
	{
	    char *s = (char *)malloc(
		(80 + 80) * sizeof(char)
	    );
	    sprintf(
		s,
		"%i object%s deleted.",
		objects_deleted,
		(objects_deleted != 1) ? "s" : ""
	    );
	    SARMessageAdd(scene, s);
	    free(s);
	}
}