Atrinik Server  4.0
map_event_obj.c
Go to the documentation of this file.
1 /*************************************************************************
2  * Atrinik, a Multiplayer Online Role Playing Game *
3  * *
4  * Copyright (C) 2009-2014 Alex Tokar and Atrinik Development Team *
5  * *
6  * Fork from Crossfire (Multiplayer game for X-windows). *
7  * *
8  * This program is free software; you can redistribute it and/or modify *
9  * it under the terms of the GNU General Public License as published by *
10  * the Free Software Foundation; either version 2 of the License, or *
11  * (at your option) any later version. *
12  * *
13  * This program is distributed in the hope that it will be useful, *
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of *
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
16  * GNU General Public License for more details. *
17  * *
18  * You should have received a copy of the GNU General Public License *
19  * along with this program; if not, write to the Free Software *
20  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. *
21  * *
22  * The author can be reached at admin@atrinik.org *
23  ************************************************************************/
24 
32 #include <global.h>
33 #include <object.h>
34 #include <object_methods.h>
35 
37 static void
38 remove_map_func (object *op)
39 {
40  HARD_ASSERT(op != NULL);
41  HARD_ASSERT(op->map != NULL);
42 
43  if (op->map->in_memory == MAP_SAVING) {
44  return;
45  }
46 
47  for (map_event *tmp = op->map->events, *prev = NULL;
48  tmp != NULL;
49  prev = tmp, tmp = tmp->next) {
50  if (tmp->event == op) {
51  if (prev == NULL) {
52  op->map->events = tmp->next;
53  } else {
54  prev->next = tmp->next;
55  }
56 
57  map_event_free(tmp);
58  break;
59  }
60  }
61 }
62 
67 {
68  OBJECT_METHODS(MAP_EVENT_OBJ)->remove_map_func = remove_map_func;
69 }
Definition: map.h:504
uint32_t in_memory
Definition: map.h:627
static void remove_map_func(object *op)
Definition: map_event_obj.c:38
struct mapdef * map
Definition: object.h:139
#define MAP_SAVING
Definition: map.h:176
struct map_event * next
Definition: map.h:506
OBJECT_TYPE_INIT_DEFINE(map_event_obj)
Definition: map_event_obj.c:66
struct map_event * events
Definition: map.h:583
#define OBJECT_METHODS(type)
#define MAP_EVENT_OBJ
Definition: define.h:506
void map_event_free(map_event *tmp)
Definition: plugins.c:392