Skip to content

Commit 2b242b3

Browse files
committed
chat rework
1 parent f56ba27 commit 2b242b3

File tree

11 files changed

+99
-87
lines changed

11 files changed

+99
-87
lines changed

c/uwapi/uwapi/modules/botsAdmin.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ extern "C"
3333
UNNATURAL_API void uwAdminForceSetRace(uint32 forceId, uint32 raceProto);
3434
UNNATURAL_API void uwAdminSendSuggestedCameraFocus(uint32 position);
3535
UNNATURAL_API void uwAdminSetAutomaticSuggestedCameraFocus(bool enabled);
36-
UNNATURAL_API void uwAdminSendChat(const char *msg, UwChatTargetFlags flags, uint32 targetId);
36+
UNNATURAL_API void uwAdminSendChatMessageToPlayer(const char *msg, uint32 playerId);
37+
UNNATURAL_API void uwAdminSendChatMessageToEveryone(const char *msg);
38+
UNNATURAL_API void uwAdminSendChatCommand(const char *msg);
3739
UNNATURAL_API void uwAdminSendPing(uint32 position, UwPingEnum ping, uint32 targetForce);
3840

3941
#endif

c/uwapi/uwapi/modules/common.h

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ extern "C"
3434
typedef uint64_t uint64;
3535
typedef int64_t sint64;
3636

37-
static const uint32 UW_VERSION = 43;
37+
static const uint32 UW_VERSION = 44;
3838
static const uint32 UW_GameTicksPerSecond = 20;
3939

4040
typedef struct UwIds
@@ -81,20 +81,15 @@ extern "C"
8181
UwForeignPolicyEnum_Enemy = 4,
8282
} UwForeignPolicyEnum;
8383

84-
typedef enum UwChatTargetFlags
84+
typedef enum UwChatTargetEnum
8585
{
86-
UwChatTargetFlags_None = 0,
87-
UwChatTargetFlags_Server = 1 << 0,
88-
UwChatTargetFlags_Direct = 1 << 1,
89-
UwChatTargetFlags_Self = 1 << 2,
90-
UwChatTargetFlags_Allies = 1 << 3,
91-
UwChatTargetFlags_Neutral = 1 << 4,
92-
UwChatTargetFlags_Enemy = 1 << 5,
93-
UwChatTargetFlags_Observer = 1 << 6,
94-
UwChatTargetFlags_Admin = 1 << 7,
95-
UwChatTargetFlags_Players = UwChatTargetFlags_Self | UwChatTargetFlags_Allies | UwChatTargetFlags_Neutral | UwChatTargetFlags_Enemy,
96-
UwChatTargetFlags_Everyone = UwChatTargetFlags_Players | UwChatTargetFlags_Observer | UwChatTargetFlags_Admin,
97-
} UwChatTargetFlags;
86+
UwChatTargetEnum_None = 0,
87+
UwChatTargetEnum_Direct = 1,
88+
UwChatTargetEnum_Everyone = 2,
89+
UwChatTargetEnum_Allies = 3,
90+
UwChatTargetEnum_Enemies = 4,
91+
UwChatTargetEnum_Observers = 5,
92+
} UwChatTargetEnum;
9893

9994
#ifdef __cplusplus
10095
} // extern C

c/uwapi/uwapi/modules/game.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,11 @@ extern "C"
8282
// chat
8383

8484
#ifdef UNNATURAL_BOTS
85-
typedef void (*UwChatCallbackType)(const char *msg, uint32 sender, UwChatTargetFlags flags);
85+
typedef void (*UwChatCallbackType)(uint32 sender, const char *message, UwChatTargetEnum target);
8686
UNNATURAL_API void uwSetChatCallback(UwChatCallbackType callback);
8787
#endif
8888
#ifdef UNNATURAL_SCRIPTS
89-
UNNATURAL_ENTRY void uwChatCallback(const char *msg, uint32 sender, UwChatTargetFlags flags);
89+
UNNATURAL_ENTRY void uwChatCallback(uint32 sender, const char *message, UwChatTargetEnum target);
9090
#endif
9191

9292
// tasks callback

c/uwapi/uwapi/modules/scriptsServer.h

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,9 @@ extern "C"
5959
UNNATURAL_ENTRY void uwCutsceneSkipCallback(void);
6060

6161
UNNATURAL_API void uwStandardVictoryConditions(bool enable);
62-
UNNATURAL_API void uwSendChat(const char *msg, UwChatTargetFlags flags, uint32 targetId);
62+
UNNATURAL_API void uwSendChatEveryone(const char *msg);
63+
UNNATURAL_API void uwSendChatOne(const char *msg, uint32 targetId);
64+
UNNATURAL_API void uwSendChatDirect(const char *msg, const uint32 targetsIds[], const uint32 targetsCount);
6365
UNNATURAL_API void uwSendPing(uint32 position, UwPingEnum ping, uint32 targetForce);
6466

6567
UNNATURAL_API void uwPrint(const char *msg);

csharp/uwapi/admin.cs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
namespace Unnatural
22
{
3-
using ChatTargetFLags = Interop.UwChatTargetFlags;
43
using PingEnum = Interop.UwPingEnum;
54
using PlayerAiConfig = Interop.UwPlayerAiConfigComponent;
65

@@ -111,9 +110,19 @@ public static void SetAutomaticSuggestedCameraFocus(bool enabled)
111110
Interop.uwAdminSetAutomaticSuggestedCameraFocus(enabled);
112111
}
113112

114-
public static void SendChat(string msg, ChatTargetFLags flags, uint id = uint.MaxValue)
113+
public static void SendChatMessageToEveryone(string msg)
115114
{
116-
Interop.uwAdminSendChat(msg, flags, id);
115+
Interop.uwAdminSendChatMessageToEveryone(msg);
116+
}
117+
118+
public static void SendChatMessageToPlayer(string msg, uint id)
119+
{
120+
Interop.uwAdminSendChatMessageToPlayer(msg, id);
121+
}
122+
123+
public static void SendChatCommand(string msg)
124+
{
125+
Interop.uwAdminSendChatCommand(msg);
117126
}
118127

119128
public static void SendPing(uint position, PingEnum ping, uint id)

csharp/uwapi/events.cs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,12 @@ namespace Unnatural
88
using GameStateEnum = Interop.UwGameStateEnum;
99
using MapStateEnum = Interop.UwMapStateEnum;
1010
using ShootingsArray = Interop.UwShootingsArray;
11-
using ChatTargetFLags = Interop.UwChatTargetFlags;
1211

1312
public class ChatMessage
1413
{
15-
public string Message;
1614
public uint Sender;
17-
public ChatTargetFLags Flags;
15+
public string Message;
16+
public Interop.UwChatTargetEnum target;
1817
}
1918

2019
public struct ShootingControlData
@@ -105,14 +104,14 @@ static void ForceEliminatedCallback(uint force)
105104
ForceEliminated(null, force);
106105
}
107106

108-
static void ChatCallback(string msg, uint sender, ChatTargetFLags flags)
107+
static void ChatCallback(uint sender, string message, Interop.UwChatTargetEnum target)
109108
{
110109
if (ChatReceived == null)
111110
return;
112111
ChatMessage c = new ChatMessage();
113-
c.Message = msg;
114112
c.Sender = sender;
115-
c.Flags = flags;
113+
c.Message = message;
114+
c.target = target;
116115
ChatReceived(null, c);
117116
}
118117

csharp/uwapi/interop.cs

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -81,8 +81,14 @@ public static class Interop
8181
public static extern void uwAdminSetAutomaticSuggestedCameraFocus([MarshalAs(UnmanagedType.I1)] bool enabled);
8282

8383
[DllImport(LibName, CallingConvention = CallingConvention.Cdecl)]
84-
public static extern void uwAdminSendChat([MarshalAs(UnmanagedType.LPStr)] string msg, UwChatTargetFlags flags,
85-
uint targetId);
84+
public static extern void uwAdminSendChatMessageToPlayer([MarshalAs(UnmanagedType.LPStr)] string msg,
85+
uint playerId);
86+
87+
[DllImport(LibName, CallingConvention = CallingConvention.Cdecl)]
88+
public static extern void uwAdminSendChatMessageToEveryone([MarshalAs(UnmanagedType.LPStr)] string msg);
89+
90+
[DllImport(LibName, CallingConvention = CallingConvention.Cdecl)]
91+
public static extern void uwAdminSendChatCommand([MarshalAs(UnmanagedType.LPStr)] string msg);
8692

8793
[DllImport(LibName, CallingConvention = CallingConvention.Cdecl)]
8894
public static extern void uwAdminSendPing(uint position, UwPingEnum ping, uint targetForce);
@@ -317,7 +323,7 @@ public static extern void uwCommandPlaceConstruction(uint constructionProto, uin
317323
[DllImport(LibName, CallingConvention = CallingConvention.Cdecl)]
318324
public static extern void uwCommandSelfDestruct(uint entityId);
319325

320-
public const uint UW_VERSION = 43;
326+
public const uint UW_VERSION = 44;
321327
public const uint UW_GameTicksPerSecond = 20;
322328
[StructLayout(LayoutKind.Sequential)]
323329
public struct UwIds
@@ -364,20 +370,14 @@ public enum UwForeignPolicyEnum
364370
Enemy = 4,
365371
}
366372

367-
[Flags]
368-
public enum UwChatTargetFlags
373+
public enum UwChatTargetEnum
369374
{
370375
None = 0,
371-
Server = 1 << 0,
372-
Direct = 1 << 1,
373-
Self = 1 << 2,
374-
Allies = 1 << 3,
375-
Neutral = 1 << 4,
376-
Enemy = 1 << 5,
377-
Observer = 1 << 6,
378-
Admin = 1 << 7,
379-
Players = Self | Allies | Neutral | Enemy,
380-
Everyone = Players | Observer | Admin,
376+
Direct = 1,
377+
Everyone = 2,
378+
Allies = 3,
379+
Enemies = 4,
380+
Observers = 5,
381381
}
382382

383383
[DllImport(LibName, CallingConvention = CallingConvention.Cdecl)]
@@ -748,8 +748,8 @@ public struct UwShootingsArray
748748
public static extern void uwSetForceEliminatedCallback(UwForceEliminatedCallbackType callback);
749749

750750
[UnmanagedFunctionPointer(CallingConvention.Cdecl)]
751-
public delegate void UwChatCallbackType([MarshalAs(UnmanagedType.LPStr)] string msg, uint sender,
752-
UwChatTargetFlags flags);
751+
public delegate void UwChatCallbackType(uint sender, [MarshalAs(UnmanagedType.LPStr)] string message,
752+
UwChatTargetEnum target);
753753

754754
[DllImport(LibName, CallingConvention = CallingConvention.Cdecl)]
755755
public static extern void uwSetChatCallback(UwChatCallbackType callback);

python/uwapi/admin.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,14 @@ def send_suggested_camera_focus(self, position: int) -> None:
6363
def set_automatic_suggested_camera_focus(self, enabled: bool) -> None:
6464
uw_interop.uwAdminSetAutomaticSuggestedCameraFocus(enabled)
6565

66-
def send_chat(self, msg: str, flags, id: int = INVALID) -> None:
67-
uw_interop.uwAdminSendChat(msg, flags, id)
66+
def send_chat_message_to_player(self, msg: str, id: int) -> None:
67+
uw_interop.uwAdminSendChatMessageToPlayer(msg, id)
68+
69+
def send_chat_message_to_everyone(self, msg: str) -> None:
70+
uw_interop.uwAdminSendChatMessageToEveryone(msg)
71+
72+
def send_chat_command(self, msg: str) -> None:
73+
uw_interop.uwAdminSendChatCommand(msg)
6874

6975
def send_ping(self, position: int, ping, id: int) -> None:
7076
uw_interop.uwAdminSendPing(position, ping, id)

python/uwapi/bots.h

Lines changed: 14 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ typedef int32_t sint32;
99
typedef uint64_t uint64;
1010
typedef int64_t sint64;
1111

12-
static const uint32 UW_VERSION = 43;
12+
static const uint32 UW_VERSION = 44;
1313
static const uint32 UW_GameTicksPerSecond = 20;
1414

1515
typedef struct UwIds
@@ -56,20 +56,15 @@ typedef enum UwForeignPolicyEnum
5656
UwForeignPolicyEnum_Enemy = 4,
5757
} UwForeignPolicyEnum;
5858

59-
typedef enum UwChatTargetFlags
60-
{
61-
UwChatTargetFlags_None = 0,
62-
UwChatTargetFlags_Server = 1 << 0,
63-
UwChatTargetFlags_Direct = 1 << 1,
64-
UwChatTargetFlags_Self = 1 << 2,
65-
UwChatTargetFlags_Allies = 1 << 3,
66-
UwChatTargetFlags_Neutral = 1 << 4,
67-
UwChatTargetFlags_Enemy = 1 << 5,
68-
UwChatTargetFlags_Observer = 1 << 6,
69-
UwChatTargetFlags_Admin = 1 << 7,
70-
UwChatTargetFlags_Players = UwChatTargetFlags_Self | UwChatTargetFlags_Allies | UwChatTargetFlags_Neutral | UwChatTargetFlags_Enemy,
71-
UwChatTargetFlags_Everyone = UwChatTargetFlags_Players | UwChatTargetFlags_Observer | UwChatTargetFlags_Admin,
72-
} UwChatTargetFlags;
59+
typedef enum UwChatTargetEnum
60+
{
61+
UwChatTargetEnum_None = 0,
62+
UwChatTargetEnum_Direct = 1,
63+
UwChatTargetEnum_Everyone = 2,
64+
UwChatTargetEnum_Allies = 3,
65+
UwChatTargetEnum_Enemies = 4,
66+
UwChatTargetEnum_Observers = 5,
67+
} UwChatTargetEnum;
7368

7469
typedef struct UwPlayerAiConfigComponent UwPlayerAiConfigComponent;
7570

@@ -94,7 +89,9 @@ void uwAdminForceSetColor(uint32 forceId, float r, float g, float b);
9489
void uwAdminForceSetRace(uint32 forceId, uint32 raceProto);
9590
void uwAdminSendSuggestedCameraFocus(uint32 position);
9691
void uwAdminSetAutomaticSuggestedCameraFocus(bool enabled);
97-
void uwAdminSendChat(const char *msg, UwChatTargetFlags flags, uint32 targetId);
92+
void uwAdminSendChatMessageToPlayer(const char *msg, uint32 playerId);
93+
void uwAdminSendChatMessageToEveryone(const char *msg);
94+
void uwAdminSendChatCommand(const char *msg);
9895
void uwAdminSendPing(uint32 position, UwPingEnum ping, uint32 targetForce);
9996
void uwInitialize(uint32 version);
10097
void uwDeinitialize(void);
@@ -462,7 +459,7 @@ typedef void (*UwShootingsCallbackType)(const UwShootingsArray *data);
462459
void uwSetShootingsCallback(UwShootingsCallbackType callback);
463460
typedef void (*UwForceEliminatedCallbackType)(uint32 id);
464461
void uwSetForceEliminatedCallback(UwForceEliminatedCallbackType callback);
465-
typedef void (*UwChatCallbackType)(const char *msg, uint32 sender, UwChatTargetFlags flags);
462+
typedef void (*UwChatCallbackType)(uint32 sender, const char *message, UwChatTargetEnum target);
466463
void uwSetChatCallback(UwChatCallbackType callback);
467464

468465
typedef enum UwTaskTypeEnum

python/uwapi/events.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ class Events:
1818
_update_listeners: List[Callable[[bool], None]] = []
1919
_shootings_listeners: List[Callable[[List[int]], None]] = []
2020
_force_eliminated_listeners: List[Callable[[int], None]] = []
21-
_chat_listeners: List[Callable[[str, int, UwChatTargetFlags], None]] = []
21+
_chat_listeners: List[Callable[[int, str, UwChatTargetEnum], None]] = []
2222
_tasks_index: int = 1
2323
_tasks_actions: Dict[int, Callable] = {}
2424

@@ -60,7 +60,7 @@ def on_shootings(self, listener: Callable[[List[int]], None]) -> None:
6060
def on_force_eliminated(self, listener: Callable[[int], None]) -> None:
6161
self._force_eliminated_listeners.append(listener)
6262

63-
def on_chat(self, listener: Callable[[str, int, UwChatTargetFlags], None]) -> None:
63+
def on_chat(self, listener: Callable[[int, str, UwChatTargetEnum], None]) -> None:
6464
self._chat_listeners.append(listener)
6565

6666
def shooting_control_data(self, id: int) -> ShootingControlData:
@@ -99,10 +99,10 @@ def _force_eliminated_callback(self, force: int) -> None:
9999
listener(force)
100100

101101
def _chat_callback(
102-
self, message: str, sender: int, flags: UwChatTargetFlags
102+
self, sender: int, message: str, target: UwChatTargetEnum
103103
) -> None:
104104
for listener in self._chat_listeners:
105-
listener(message, sender, flags)
105+
listener(sender, message, target)
106106

107107
def _task_completed_callback(
108108
self, task_user_data: int, type: UwTaskTypeEnum

0 commit comments

Comments
 (0)