#ifndef ENGINE_ARRAY_H #define ENGINE_ARRAY_H #include "engineSprite.h" #include "enginePhysics.h" #include "engineVector.h" #include #include typedef struct { void **elements; unsigned int count; unsigned int capacity; } Array; typedef struct { Sprite sprite; Vector2 position; } Object; typedef struct { Object *data; const Object *prototype; size_t count; } ObjectArray; Array *CreateArray(unsigned int initCapacity); int AddElementToArray(Array *array, void *element); int RemoveElementFromArray(Array *array, unsigned int index); void *GetRandomElementFromArray(Array *array); void UpdateArray(Array *array, void (*updateFunc)(void *)); void RenderArray(Array *array, void (*renderFunc)(void *)); void FreeArray(Array **array); ObjectArray CreateObjectArray(const Object *prototype, const size_t count); Object *GetRandomObject(ObjectArray *objects); void AddObjectToArray(ObjectArray *objects, const Object *prototype, Vector2 position); void SetPositionForObjectArray(ObjectArray *objects, const Vector2Array *positions); void SetRandomPositionForObjectArray(ObjectArray *objects, const Rectangle bounds); void SwapAndPopObjectsArrayOnRecCollision(ObjectArray *objects, const Rectangle rec); void SwapAndPopObjectsArrayOnPointCollision(ObjectArray *objects, const Vector2 point); Vector2 GetDirectionToObject(Object *object, Vector2 position); void RenderObjectArray(const ObjectArray *objects); #endif // ENGINE_ARRAY_H