OpenClonk
C4GameObjects.h
Go to the documentation of this file.
1 /*
2  * OpenClonk, http://www.openclonk.org
3  *
4  * Copyright (c) 2001-2009, RedWolf Design GmbH, http://www.clonk.de/
5  * Copyright (c) 2009-2016, The OpenClonk Team and contributors
6  *
7  * Distributed under the terms of the ISC license; see accompanying file
8  * "COPYING" for details.
9  *
10  * "Clonk" is a registered trademark of Matthes Bender, used with permission.
11  * See accompanying file "TRADEMARK" for details.
12  *
13  * To redistribute this file separately, substitute the full license texts
14  * for the above references.
15  */
16 // game object lists
17 
18 #ifndef INC_C4GameObjects
19 #define INC_C4GameObjects
20 
21 #include "object/C4FindObject.h"
22 #include "object/C4ObjectList.h"
23 #include "object/C4Sector.h"
24 
25 // Main object list class
27 {
28 public:
29  C4GameObjects(); // constructor
30  ~C4GameObjects() override; // destructor
31  void Default() override;
32  void Init(int32_t width, int32_t height);
33  void Clear(bool fClearInactive); // clear objects
34  // Don't use default parameters so we get a correct vtbl entry
35  // Don't clear internal objects, because they should not be cleared on section load
36  void Clear() override { Clear(false); }
37 
38 private:
39  uint32_t LastUsedMarker; // Last used value for C4Object::Marker
40 
41 public:
42  C4LSectors Sectors; // Section object lists
43  C4ObjectList InactiveObjects; // Inactive objects (Status=2)
44  C4ObjectList ForeObjects; // Objects in foreground (C4D_Foreground)
45 
46  using C4ObjectList::Add;
47  bool Add(C4Object *game_object); // Add object
48  bool Remove(C4Object *game_object) override; // Clear pointers to object
49 
50  void CrossCheck(); // Various collision-checks
51  void Synchronize(); // Network synchronization
52  void UpdateSolidMasks();
53 
54  C4Object *ObjectPointer(int32_t object_number); // Object pointer by number
55  C4Object* SafeObjectPointer(int32_t object_number);
56 
57  int PostLoad(bool keep_inactive_objects, C4ValueNumbers *);
58  void Denumerate(C4ValueNumbers *);
59 
60  void UpdateScriptPointers(); // Update pointers to C4AulScript *
61  C4Value GRBroadcast(const char *function_name, C4AulParSet *parameters, bool pass_error, bool reject_test); // Call function in all goals/rules/environment objects
62 
63  void UpdatePos(C4Object *game_object);
64  void UpdatePosResort(C4Object *game_object);
65 
66  void FixObjectOrder(); // Called after loading: Resort any objects that are out of order
67  void ResortUnsorted(); // Resort any objects with unsorted-flag set into lists
68 
69  void DeleteObjects(bool delete_inactive_objects); // Delete all objects and links
70 
71  bool ValidateOwners() override;
72  bool AssignInfo() override;
73  void AssignLightRange();
74  void SyncClearance();
75  void ResetAudibility();
76  void OnSynchronized();
77  void SetOCF();
78 
79  uint32_t GetNextMarker(); // Get a new marker. If all markers are exceeded (LastUsedMarker is 0xffffffff), restart marker at 1 and reset all object markers to zero.
80 };
81 
82 extern C4GameObjects Objects;
83 
84 #endif
C4GameObjects Objects
Definition: C4Globals.cpp:48
void Init(int32_t width, int32_t height)
bool Remove(C4Object *game_object) override
void Default() override
C4Object * ObjectPointer(int32_t object_number)
uint32_t GetNextMarker()
void AssignLightRange()
void UpdatePos(C4Object *game_object)
C4Value GRBroadcast(const char *function_name, C4AulParSet *parameters, bool pass_error, bool reject_test)
virtual bool Add(C4Object *new_obj, SortType sort_type, C4ObjectList *sorted_list=nullptr)
void UpdateScriptPointers()
C4ObjectList ForeObjects
Definition: C4GameObjects.h:44
C4LSectors Sectors
Definition: C4GameObjects.h:42
void Clear() override
Definition: C4GameObjects.h:36
C4Object * SafeObjectPointer(int32_t object_number)
bool ValidateOwners() override
C4ObjectList InactiveObjects
Definition: C4GameObjects.h:43
void Denumerate(C4ValueNumbers *)
bool AssignInfo() override
int PostLoad(bool keep_inactive_objects, C4ValueNumbers *)
void UpdatePosResort(C4Object *game_object)
void UpdateSolidMasks()
~C4GameObjects() override
void ResetAudibility()
virtual bool Add(C4Object *new_obj, SortType sort_type, C4ObjectList *sorted_list=nullptr)
void DeleteObjects()