151 lines
7.3 KiB
C++
151 lines
7.3 KiB
C++
// IAEngine: 2D Game Engine by IA
|
|
// Copyright (C) 2025 IASoft (PVT) LTD (oss@iasoft.dev)
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU General Public License
|
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
#pragma once
|
|
|
|
#include <IAEngine/Nodes/CameraNode.hpp>
|
|
#include <IAEngine/Nodes/SpriteObjectNode.hpp>
|
|
#include <IAEngine/Nodes/TextureObjectNode.hpp>
|
|
#include <IAEngine/Nodes/TileMapNode.hpp>
|
|
|
|
#include <IAEngine/Components/CameraComponent.hpp>
|
|
#include <IAEngine/Components/SoundEmitterComponent.hpp>
|
|
|
|
#include <IAEngine/Scene.hpp>
|
|
#include <IAEngine/UI.hpp>
|
|
#include <IAEngine/Utils.hpp>
|
|
|
|
namespace ia::iae
|
|
{
|
|
class Engine
|
|
{
|
|
public:
|
|
// Event Functions
|
|
STATIC Handle CreateEvent(IN CONST String &name);
|
|
STATIC VOID DestroyEvent(IN Handle event);
|
|
STATIC Handle GetEventByName(IN CONST String &name);
|
|
STATIC VOID AddEventListener(IN Handle event, IN std::function<VOID()> callback);
|
|
STATIC VOID AddEventListener(IN CONST String &eventName, IN std::function<VOID()> callback);
|
|
STATIC VOID BroadcastEvent(IN Handle event);
|
|
STATIC VOID BroadcastEvent(IN CONST String &eventName);
|
|
|
|
// Renderer Functions
|
|
STATIC Handle GetGeometry_Quad();
|
|
STATIC Handle GetGeometry_Circle();
|
|
STATIC Handle CreateGeometry(IN CONST Vector<GeometryVertex> &vertices, IN CONST Vector<INT32> &indices);
|
|
STATIC VOID DestroyGeometry(IN Handle geometry);
|
|
STATIC VOID DrawGeometry(IN Handle handle, IN UINT8 layer, IN UINT16 sortIndex);
|
|
STATIC IVec2 GetDisplayExtent();
|
|
STATIC FLOAT32 GetDisplayAspectRatio();
|
|
STATIC VOID ResizeDisplay(IN INT32 newWidth, IN INT32 newHeight);
|
|
STATIC VOID DrawText(IN CONST String& text, IN Vec2 position, IN FLOAT32 scale, IN FLOAT32 rotation, IN UINT8 layer, IN UINT16 sortIndex);
|
|
|
|
// Renderer State Functions
|
|
STATIC VOID SetRenderState_Scissor(IN IVec4 rect);
|
|
STATIC VOID SetRenderState_FlippedH(IN BOOL value);
|
|
STATIC VOID SetRenderState_FlippedV(IN BOOL value);
|
|
STATIC VOID SetRenderState_TextureOffset(IN Vec2 off);
|
|
STATIC VOID SetRenderState_YSortingEnabled(IN BOOL value);
|
|
STATIC VOID SetRenderState_ColorOverlay(IN Color color);
|
|
STATIC VOID SetRenderState_CameraRelative(IN BOOL value);
|
|
STATIC VOID SetRenderState_Texture(IN Handle image);
|
|
STATIC VOID SetRenderState_Transform(IN Vec2 position, IN Vec2 scale, IN FLOAT32 rotation);
|
|
STATIC VOID SetRenderState_TransformUI(IN Vec2 position, IN Vec2 scale, IN FLOAT32 rotation);
|
|
STATIC Vec2 GetRendererScalingFactor();
|
|
|
|
// Debug Draw Functions
|
|
STATIC VOID DebugDraw_SetColor(IN Color color);
|
|
STATIC VOID DebugDraw_SetStrokeWidth(IN FLOAT32 width);
|
|
STATIC VOID DebugDraw_Line(IN Vec2 from, IN Vec2 to);
|
|
STATIC VOID DebugDraw_FillRect(IN Vec2 position, IN Vec2 size);
|
|
STATIC VOID DebugDraw_StrokeRect(IN Vec2 position, IN Vec2 size);
|
|
|
|
// Resource Functions
|
|
STATIC Handle CreateSoundFromFile(IN CONST String &name, IN CONST String &path);
|
|
STATIC Handle CreateImageFromFile(IN CONST String &name, IN CONST String &path, IN INT32 resizeToWidth = 0,
|
|
IN INT32 resizeToHeight = 0);
|
|
STATIC Handle CreateImage(IN CONST String &name, IN PCUINT8 encodedData, IN SIZE_T encodedDataSize);
|
|
STATIC Handle CreateImage(IN CONST String &name, IN PCUINT8 rgbaData, IN INT32 width, IN INT32 height);
|
|
STATIC Handle CreateSound(IN CONST String &name, IN PCUINT8 encodedData, IN SIZE_T encodedDataSize);
|
|
STATIC Handle GetImage(IN CONST String &name);
|
|
STATIC Handle GetSound(IN CONST String &name);
|
|
STATIC VOID DestroyImage(IN Handle image);
|
|
STATIC VOID DestroySound(IN Handle sound);
|
|
STATIC IVec2 GetImageExtent(IN Handle image);
|
|
STATIC IVec2 GetImageOriginalExtent(IN Handle image);
|
|
STATIC Handle RescaleImage(IN Handle image, IN Vec2 factor);
|
|
STATIC Handle RescaleImage(IN CONST String &name, IN Vec2 factor);
|
|
STATIC VOID RescaleAllImages(IN Vec2 factor);
|
|
STATIC Handle CombineImages(IN CONST Vector<Handle> &images, IN INT32 unitWidth, IN INT32 unitHeight,
|
|
IN INT32 unitCountX, IN INT32 unitCountY);
|
|
|
|
// Game Functions
|
|
STATIC VOID SetTimeScale(IN FLOAT32 scale);
|
|
STATIC VOID SetActiveCamera(IN CameraComponent *cameraComponent);
|
|
STATIC CameraComponent *GetActiveCamera();
|
|
|
|
// Scene Functions
|
|
STATIC Scene *GetActiveScene();
|
|
STATIC VOID ChangeActiveScene(IN Scene* scene);
|
|
STATIC VOID AddNodeToActiveScene(IN RefPtr<INode> node);
|
|
STATIC INode *GetNodeFromActiveScene(IN CONST String &name);
|
|
STATIC VOID RemoveNodeFromActiveScene(IN CONST String &name);
|
|
|
|
// Input Functions
|
|
STATIC VOID Input_SwitchModeToText();
|
|
STATIC VOID Input_SwitchModeToAction();
|
|
STATIC Vec2 Input_GetPointerPosition();
|
|
STATIC BOOL Input_IsKeyDown(IN InputKey key);
|
|
STATIC BOOL Input_WasKeyPressed(IN InputKey key);
|
|
STATIC BOOL Input_WasKeyReleased(IN InputKey key);
|
|
STATIC VOID Input_SetupOnScreenGamePad();
|
|
STATIC VOID Input_SetupKeyboardGamePad(IN InputKey axisLeft, IN InputKey axisRight, IN InputKey axisDown,
|
|
IN InputKey axisUp, IN InputKey buttonA, IN InputKey buttonB,
|
|
IN InputKey buttonC, IN InputKey buttonD);
|
|
STATIC BOOL Input_GetButtonA();
|
|
STATIC BOOL Input_GetButtonB();
|
|
STATIC BOOL Input_GetButtonC();
|
|
STATIC BOOL Input_GetButtonD();
|
|
STATIC INT16 Input_GetVerticalAxis();
|
|
STATIC INT16 Input_GetHorizontalAxis();
|
|
STATIC IVec2 Input_GetDirectionalInput();
|
|
STATIC VOID Input_SetButtonA(IN BOOL value);
|
|
STATIC VOID Input_SetButtonB(IN BOOL value);
|
|
STATIC VOID Input_SetButtonC(IN BOOL value);
|
|
STATIC VOID Input_SetButtonD(IN BOOL value);
|
|
STATIC VOID Input_SetVerticalAxis(IN INT16 value);
|
|
STATIC VOID Input_SetHorizontalAxis(IN INT16 value);
|
|
|
|
// Utility Functions
|
|
STATIC String ReadTextAsset(IN CONST String& path);
|
|
STATIC Direction GetVectorPointingDirection(IN Vec2 v);
|
|
STATIC Vector<UINT8> ReadBinaryAsset(IN CONST String& path);
|
|
|
|
// Random Functions
|
|
STATIC FLOAT32 GetRandomFloat();
|
|
STATIC INT32 GetRandomInRange(IN INT32 min, IN INT32 max);
|
|
|
|
// Time Functions
|
|
STATIC INT64 GetTickCount();
|
|
STATIC INT64 GetUnixSecond();
|
|
STATIC INT64 GetUnixMillisecond();
|
|
STATIC FLOAT32 GetFrameDeltaTime();
|
|
|
|
// Engine Functions
|
|
STATIC BOOL IsDebugMode();
|
|
STATIC String GetUniqueResourceName();
|
|
};
|
|
} // namespace ia::iae
|