Skip to content

Commit 3007b61

Browse files
committed
feat: improve SaveGame compatibility by properly parsing EventManagers
1 parent 3a3b206 commit 3007b61

File tree

7 files changed

+641
-28
lines changed

7 files changed

+641
-28
lines changed

include/zenkit-capi/CutsceneLibrary.h

Lines changed: 75 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,26 @@
33
#pragma once
44
#include "Archive.h"
55
#include "Library.h"
6+
#include "Object.h"
67
#include "Stream.h"
78
#include "Vfs.h"
9+
#include "vobs/Misc.h"
810

911
#ifdef __cplusplus
1012
#include <zenkit/CutsceneLibrary.hh>
11-
using ZkCutsceneLibrary = zenkit::CutsceneLibrary;
12-
using ZkCutsceneBlock = zenkit::CutsceneBlock;
13-
using ZkCutsceneMessage = zenkit::CutsceneMessage;
13+
using ZkCutsceneLibrary = ZkSharedHandle<zenkit::CutsceneLibrary>;
14+
using ZkCutsceneBlock = ZkSharedHandle<zenkit::CutsceneBlock>;
15+
using ZkCutsceneMessage = ZkSharedHandle<zenkit::ConversationMessageEvent>;
16+
using ZkCutscene = ZkSharedHandle<zenkit::Cutscene>;
17+
using ZkCutsceneProps = ZkSharedHandle<zenkit::CutsceneProps>;
18+
using ZkCutsceneContext = ZkSharedHandle<zenkit::CutsceneContext>;
1419
#else
1520
typedef struct ZkInternal_CutsceneLibrary ZkCutsceneLibrary;
1621
typedef struct ZkInternal_CutsceneBlock ZkCutsceneBlock;
1722
typedef struct ZkInternal_CutsceneMessage ZkCutsceneMessage;
23+
typedef struct ZkInternal_Cutscene ZkCutscene;
24+
typedef struct ZkInternal_CutsceneProps ZkCutsceneProps;
25+
typedef struct ZkInternal_CutsceneContext ZkCutsceneContext;
1826
#endif
1927

2028
typedef ZkBool (*ZkCutsceneBlockEnumerator)(void* ctx, ZkCutsceneBlock const* block);
@@ -35,7 +43,71 @@ ZKC_API void ZkCutsceneLibrary_enumerateBlocks(ZkCutsceneLibrary const* slf, ZkC
3543

3644
ZKC_API ZkString ZkCutsceneBlock_getName(ZkCutsceneBlock const* slf);
3745
ZKC_API ZkCutsceneMessage const* ZkCutsceneBlock_getMessage(ZkCutsceneBlock const* slf);
46+
ZKC_API void ZkCutsceneBlock_setMessage(ZkCutsceneBlock const* slf, ZkCutsceneMessage* msg);
47+
ZKC_API void ZkCutsceneBlock_release(ZkCutsceneBlock const* slf);
3848

3949
ZKC_API uint32_t ZkCutsceneMessage_getType(ZkCutsceneMessage const* slf);
4050
ZKC_API ZkString ZkCutsceneMessage_getText(ZkCutsceneMessage const* slf);
4151
ZKC_API ZkString ZkCutsceneMessage_getName(ZkCutsceneMessage const* slf);
52+
ZKC_API ZkBool ZkCutsceneMessage_getIsHighPriority(ZkCutsceneMessage const* slf);
53+
ZKC_API ZkBool ZkCutsceneMessage_getIsUsed(ZkCutsceneMessage const* slf);
54+
ZKC_API ZkBool ZkCutsceneMessage_getIsDeleted(ZkCutsceneMessage const* slf);
55+
56+
ZKC_API void ZkCutsceneMessage_setType(ZkCutsceneMessage* slf, uint32_t value);
57+
ZKC_API void ZkCutsceneMessage_setText(ZkCutsceneMessage* slf, ZkString value);
58+
ZKC_API void ZkCutsceneMessage_setName(ZkCutsceneMessage* slf, ZkString value);
59+
ZKC_API void ZkCutsceneMessage_setIsHighPriority(ZkCutsceneMessage* slf, ZkBool value);
60+
ZKC_API void ZkCutsceneMessage_setIsUsed(ZkCutsceneMessage* slf, ZkBool value);
61+
ZKC_API void ZkCutsceneMessage_setIsDeleted(ZkCutsceneMessage* slf, ZkBool value);
62+
63+
ZKC_API void ZkCutsceneMessage_release(ZkCutsceneMessage const* slf);
64+
65+
ZKC_API ZkCutsceneProps* ZkCutsceneProps_new(void);
66+
ZKC_API void ZkCutsceneProps_release(ZkCutsceneProps* slf);
67+
68+
ZKC_API ZkString ZkCutsceneProps_getName(ZkCutsceneProps const* slf);
69+
ZKC_API ZkBool ZkCutsceneProps_getIsGlobal(ZkCutsceneProps const* slf);
70+
ZKC_API ZkBool ZkCutsceneProps_getIsLoop(ZkCutsceneProps const* slf);
71+
ZKC_API ZkBool ZkCutsceneProps_getHasToBeTriggered(ZkCutsceneProps const* slf);
72+
ZKC_API float ZkCutsceneProps_getDistance(ZkCutsceneProps const* slf);
73+
ZKC_API float ZkCutsceneProps_getRange(ZkCutsceneProps const* slf);
74+
ZKC_API int32_t ZkCutsceneProps_getLockedBlockCount(ZkCutsceneProps const* slf);
75+
ZKC_API uint32_t ZkCutsceneProps_getRunBehaviour(ZkCutsceneProps const* slf);
76+
ZKC_API int ZkCutsceneProps_getRunBehaviourValue(ZkCutsceneProps const* slf);
77+
ZKC_API ZkString ZkCutsceneProps_getStageName(ZkCutsceneProps const* slf);
78+
ZKC_API ZkString ZkCutsceneProps_getScriptFunctionOnStop(ZkCutsceneProps const* slf);
79+
80+
ZKC_API void ZkCutsceneProps_setName(ZkCutsceneProps* slf, ZkString value);
81+
ZKC_API void ZkCutsceneProps_setIsGlobal(ZkCutsceneProps* slf, ZkBool value);
82+
ZKC_API void ZkCutsceneProps_setIsLoop(ZkCutsceneProps* slf, ZkBool value);
83+
ZKC_API void ZkCutsceneProps_setHasToBeTriggered(ZkCutsceneProps* slf, ZkBool value);
84+
ZKC_API void ZkCutsceneProps_setDistance(ZkCutsceneProps* slf, float value);
85+
ZKC_API void ZkCutsceneProps_setRange(ZkCutsceneProps* slf, float value);
86+
ZKC_API void ZkCutsceneProps_setLockedBlockCount(ZkCutsceneProps* slf, int32_t value);
87+
ZKC_API void ZkCutsceneProps_setRunBehaviour(ZkCutsceneProps* slf, uint32_t value);
88+
ZKC_API void ZkCutsceneProps_setRunBehaviourValue(ZkCutsceneProps* slf, int value);
89+
ZKC_API void ZkCutsceneProps_setStageName(ZkCutsceneProps* slf, ZkString value);
90+
ZKC_API void ZkCutsceneProps_setScriptFunctionOnStop(ZkCutsceneProps* slf, ZkString value);
91+
92+
ZKC_API ZkCutsceneContext* ZkCutsceneContext_new(void);
93+
ZKC_API void ZkCutsceneContext_release(ZkCutsceneContext* slf);
94+
95+
ZKC_API ZkCutsceneProps* ZkCutsceneContext_getProps(ZkCutsceneContext const* slf);
96+
ZKC_API int32_t ZkCutsceneContext_getRoleCount(ZkCutsceneContext const* slf);
97+
ZKC_API int32_t ZkCutsceneContext_getRoleVobCount(ZkCutsceneContext const* slf);
98+
ZKC_API ZkNpc* ZkCutsceneContext_getNpc(ZkCutsceneContext const* slf);
99+
ZKC_API ZkNpc* ZkCutsceneContext_getMainRole(ZkCutsceneContext const* slf);
100+
ZKC_API ZkBool ZkCutsceneContext_getIsCutscene(ZkCutsceneContext const* slf);
101+
ZKC_API int ZkCutsceneContext_getReference(ZkCutsceneContext const* slf);
102+
ZKC_API int ZkCutsceneContext_getActualBlock(ZkCutsceneContext const* slf);
103+
ZKC_API ZkBool ZkCutsceneContext_getWasTriggered(ZkCutsceneContext const* slf);
104+
105+
ZKC_API void ZkCutsceneContext_setProps(ZkCutsceneContext const* slf, ZkCutsceneProps* value);
106+
ZKC_API void ZkCutsceneContext_setRoleCount(ZkCutsceneContext const* slf, int32_t value);
107+
ZKC_API void ZkCutsceneContext_setRoleVobCount(ZkCutsceneContext const* slf, int32_t value);
108+
ZKC_API void ZkCutsceneContext_setNpc(ZkCutsceneContext const* slf, ZkNpc* value);
109+
ZKC_API void ZkCutsceneContext_setMainRole(ZkCutsceneContext const* slf, ZkNpc* value);
110+
ZKC_API void ZkCutsceneContext_setIsCutscene(ZkCutsceneContext const* slf, ZkBool value);
111+
ZKC_API void ZkCutsceneContext_setReference(ZkCutsceneContext const* slf, int value);
112+
ZKC_API void ZkCutsceneContext_setActualBlock(ZkCutsceneContext const* slf, int value);
113+
ZKC_API void ZkCutsceneContext_setWasTriggered(ZkCutsceneContext const* slf, ZkBool value);

include/zenkit-capi/World.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
// Copyright © 2023. GothicKit Contributors
22
// SPDX-License-Identifier: MIT
33
#pragma once
4+
#include "CutsceneLibrary.h"
45
#include "Library.h"
56
#include "Mesh.h"
67
#include "Object.h"
@@ -75,9 +76,9 @@ ZKC_API void ZkCutscenePlayer_del(ZkCutscenePlayer* slf);
7576
ZKC_API int32_t ZkCutscenePlayer_getLastProcessDay(ZkCutscenePlayer const* slf);
7677
ZKC_API int32_t ZkCutscenePlayer_getLastProcessHour(ZkCutscenePlayer const* slf);
7778
ZKC_API int32_t ZkCutscenePlayer_getPlayListCount(ZkCutscenePlayer const* slf);
79+
ZKC_API ZkCutsceneContext* ZkCutscenePlayer_getPlayListItem(ZkCutscenePlayer const* slf, uint32_t index);
7880
ZKC_API void ZkCutscenePlayer_setLastProcessDay(ZkCutscenePlayer* slf, int32_t val);
7981
ZKC_API void ZkCutscenePlayer_setLastProcessHour(ZkCutscenePlayer* slf, int32_t val);
80-
ZKC_API void ZkCutscenePlayer_setPlayListCount(ZkCutscenePlayer* slf, int32_t val);
8182

8283
ZKC_API ZkSkyController* ZkSkyContoller_new(void);
8384
ZKC_API void ZkSkyContoller_del(ZkSkyController* slf);

include/zenkit-capi/vobs/VirtualObject.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010

1111
#ifdef __cplusplus
1212
#include <zenkit/vobs/VirtualObject.hh>
13+
#include <zenkit/CutsceneLibrary.hh>
14+
1315
using ZkVirtualObject = ZkSharedHandle<zenkit::VirtualObject>;
1416
using ZkVisual = ZkSharedHandle<zenkit::Visual>;
1517
using ZkVisualDecal = ZkSharedHandle<zenkit::VisualDecal>;
@@ -20,6 +22,7 @@ using ZkAiMove = ZkSharedHandle<zenkit::AiMove>;
2022
using ZkEventManager = ZkSharedHandle<zenkit::EventManager>;
2123

2224
using ZkNpc = ZkSharedHandle<zenkit::VNpc>;
25+
using ZkCutsceneContextFwd = ZkSharedHandle<zenkit::CutsceneContext>;
2326
#else
2427
typedef struct ZkInternal_VirtualObject ZkVirtualObject;
2528
typedef struct ZkInternal_Visual ZkVisual;
@@ -29,6 +32,7 @@ typedef struct ZkInternal_AiHuman ZkAiHuman;
2932
typedef struct ZkInternal_AiMove ZkAiMove;
3033
typedef struct ZkInternal_EventManager ZkEventManager;
3134
typedef struct ZkInternal_Npc ZkNpc;
35+
typedef struct ZkInternal_CutsceneContext ZkCutsceneContextFwd;
3236
#endif
3337

3438
typedef ZkBool (*ZkVirtualObjectEnumerator)(void* ctx, ZkVirtualObject const* vob);
@@ -244,3 +248,5 @@ ZKC_API ZkBool ZkEventManager_getCleared(ZkEventManager const* slf);
244248
ZKC_API void ZkEventManager_setCleared(ZkEventManager* slf, ZkBool cleared);
245249
ZKC_API ZkBool ZkEventManager_getActive(ZkEventManager const* slf);
246250
ZKC_API void ZkEventManager_setActive(ZkEventManager* slf, ZkBool active);
251+
ZKC_API ZkCutsceneContextFwd* ZkEventManager_getCutscene(ZkEventManager const* slf);
252+
ZKC_API void ZkEventManager_setCutscene(ZkEventManager* slf, ZkCutsceneContextFwd* cutscene);

0 commit comments

Comments
 (0)