mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-16 02:56:09 -04:00
Merge pull request #858 from derekdinan/master
Add more announcement MessageTypes
This commit is contained in:
commit
c767738d04
16
src/Chat.c
16
src/Chat.c
@ -19,13 +19,19 @@
|
|||||||
#include "Options.h"
|
#include "Options.h"
|
||||||
#include "Drawer2D.h"
|
#include "Drawer2D.h"
|
||||||
|
|
||||||
static char msgs[10][STRING_SIZE];
|
static char msgs[12][STRING_SIZE];
|
||||||
cc_string Chat_Status[4] = { String_FromArray(msgs[0]), String_FromArray(msgs[1]), String_FromArray(msgs[2]), String_FromArray(msgs[3]) };
|
cc_string Chat_Status[4] = { String_FromArray(msgs[0]), String_FromArray(msgs[1]), String_FromArray(msgs[2]), String_FromArray(msgs[3]) };
|
||||||
cc_string Chat_BottomRight[3] = { String_FromArray(msgs[4]), String_FromArray(msgs[5]), String_FromArray(msgs[6]) };
|
cc_string Chat_BottomRight[3] = { String_FromArray(msgs[4]), String_FromArray(msgs[5]), String_FromArray(msgs[6]) };
|
||||||
cc_string Chat_ClientStatus[2] = { String_FromArray(msgs[7]), String_FromArray(msgs[8]) };
|
cc_string Chat_ClientStatus[2] = { String_FromArray(msgs[7]), String_FromArray(msgs[8]) };
|
||||||
|
|
||||||
cc_string Chat_Announcement = String_FromArray(msgs[9]);
|
cc_string Chat_Announcement = String_FromArray(msgs[9]);
|
||||||
|
cc_string Chat_BigAnnouncement = String_FromArray(msgs[10]);
|
||||||
|
cc_string Chat_SmallAnnouncement = String_FromArray(msgs[11]);
|
||||||
|
|
||||||
double Chat_AnnouncementReceived;
|
double Chat_AnnouncementReceived;
|
||||||
|
double Chat_BigAnnouncementReceived;
|
||||||
|
double Chat_SmallAnnouncementReceived;
|
||||||
|
|
||||||
struct StringsBuffer Chat_Log, Chat_InputLog;
|
struct StringsBuffer Chat_Log, Chat_InputLog;
|
||||||
cc_bool Chat_Logging;
|
cc_bool Chat_Logging;
|
||||||
|
|
||||||
@ -225,6 +231,12 @@ void Chat_AddOf(const cc_string* text, int msgType) {
|
|||||||
} else if (msgType == MSG_TYPE_ANNOUNCEMENT) {
|
} else if (msgType == MSG_TYPE_ANNOUNCEMENT) {
|
||||||
String_Copy(&Chat_Announcement, text);
|
String_Copy(&Chat_Announcement, text);
|
||||||
Chat_AnnouncementReceived = Game.Time;
|
Chat_AnnouncementReceived = Game.Time;
|
||||||
|
} else if (msgType == MSG_TYPE_BIGANNOUNCEMENT) {
|
||||||
|
String_Copy(&Chat_BigAnnouncement, text);
|
||||||
|
Chat_BigAnnouncementReceived = Game.Time;
|
||||||
|
} else if (msgType == MSG_TYPE_SMALLANNOUNCEMENT) {
|
||||||
|
String_Copy(&Chat_SmallAnnouncement, text);
|
||||||
|
Chat_SmallAnnouncementReceived = Game.Time;
|
||||||
} else if (msgType >= MSG_TYPE_CLIENTSTATUS_1 && msgType <= MSG_TYPE_CLIENTSTATUS_2) {
|
} else if (msgType >= MSG_TYPE_CLIENTSTATUS_1 && msgType <= MSG_TYPE_CLIENTSTATUS_2) {
|
||||||
String_Copy(&Chat_ClientStatus[msgType - MSG_TYPE_CLIENTSTATUS_1], text);
|
String_Copy(&Chat_ClientStatus[msgType - MSG_TYPE_CLIENTSTATUS_1], text);
|
||||||
}
|
}
|
||||||
@ -641,6 +653,8 @@ static void OnInit(void) {
|
|||||||
|
|
||||||
static void ClearCPEMessages(void) {
|
static void ClearCPEMessages(void) {
|
||||||
Chat_AddOf(&String_Empty, MSG_TYPE_ANNOUNCEMENT);
|
Chat_AddOf(&String_Empty, MSG_TYPE_ANNOUNCEMENT);
|
||||||
|
Chat_AddOf(&String_Empty, MSG_TYPE_BIGANNOUNCEMENT);
|
||||||
|
Chat_AddOf(&String_Empty, MSG_TYPE_SMALLANNOUNCEMENT);
|
||||||
Chat_AddOf(&String_Empty, MSG_TYPE_STATUS_1);
|
Chat_AddOf(&String_Empty, MSG_TYPE_STATUS_1);
|
||||||
Chat_AddOf(&String_Empty, MSG_TYPE_STATUS_2);
|
Chat_AddOf(&String_Empty, MSG_TYPE_STATUS_2);
|
||||||
Chat_AddOf(&String_Empty, MSG_TYPE_STATUS_3);
|
Chat_AddOf(&String_Empty, MSG_TYPE_STATUS_3);
|
||||||
|
@ -17,11 +17,13 @@ enum MsgType {
|
|||||||
MSG_TYPE_BOTTOMRIGHT_2 = 12,
|
MSG_TYPE_BOTTOMRIGHT_2 = 12,
|
||||||
MSG_TYPE_BOTTOMRIGHT_3 = 13,
|
MSG_TYPE_BOTTOMRIGHT_3 = 13,
|
||||||
MSG_TYPE_ANNOUNCEMENT = 100,
|
MSG_TYPE_ANNOUNCEMENT = 100,
|
||||||
|
MSG_TYPE_BIGANNOUNCEMENT = 101,
|
||||||
|
MSG_TYPE_SMALLANNOUNCEMENT = 102,
|
||||||
MSG_TYPE_CLIENTSTATUS_1 = 256, /* Cuboid messages */
|
MSG_TYPE_CLIENTSTATUS_1 = 256, /* Cuboid messages */
|
||||||
MSG_TYPE_CLIENTSTATUS_2 = 257 /* Tab list matching names */
|
MSG_TYPE_CLIENTSTATUS_2 = 257 /* Tab list matching names */
|
||||||
};
|
};
|
||||||
|
|
||||||
extern cc_string Chat_Status[4], Chat_BottomRight[3], Chat_ClientStatus[2], Chat_Announcement;
|
extern cc_string Chat_Status[4], Chat_BottomRight[3], Chat_ClientStatus[2], Chat_Announcement, Chat_BigAnnouncement, Chat_SmallAnnouncement;
|
||||||
/* All chat messages received. */
|
/* All chat messages received. */
|
||||||
extern struct StringsBuffer Chat_Log;
|
extern struct StringsBuffer Chat_Log;
|
||||||
/* Time each chat message was received at. */
|
/* Time each chat message was received at. */
|
||||||
@ -31,8 +33,10 @@ extern struct StringsBuffer Chat_InputLog;
|
|||||||
/* Whether chat messages are logged to disc. */
|
/* Whether chat messages are logged to disc. */
|
||||||
extern cc_bool Chat_Logging;
|
extern cc_bool Chat_Logging;
|
||||||
|
|
||||||
/* Time at which last announcement message was received. */
|
/* Times at which last announcement messages were received. */
|
||||||
extern double Chat_AnnouncementReceived;
|
extern double Chat_AnnouncementReceived;
|
||||||
|
extern double Chat_BigAnnouncementReceived;
|
||||||
|
extern double Chat_SmallAnnouncementReceived;
|
||||||
|
|
||||||
struct ChatCommand;
|
struct ChatCommand;
|
||||||
/* Represents a client-side command/action. */
|
/* Represents a client-side command/action. */
|
||||||
|
@ -742,8 +742,8 @@ static struct ChatScreen {
|
|||||||
cc_bool suppressNextPress;
|
cc_bool suppressNextPress;
|
||||||
int chatIndex, paddingX, paddingY;
|
int chatIndex, paddingX, paddingY;
|
||||||
int lastDownloadStatus;
|
int lastDownloadStatus;
|
||||||
struct FontDesc chatFont, announcementFont;
|
struct FontDesc chatFont, announcementFont, bigAnnouncementFont, smallAnnouncementFont;
|
||||||
struct TextWidget announcement;
|
struct TextWidget announcement, bigAnnouncement, smallAnnouncement;
|
||||||
struct ChatInputWidget input;
|
struct ChatInputWidget input;
|
||||||
struct TextGroupWidget status, bottomRight, chat, clientStatus;
|
struct TextGroupWidget status, bottomRight, chat, clientStatus;
|
||||||
struct SpecialInputWidget altText;
|
struct SpecialInputWidget altText;
|
||||||
@ -795,6 +795,8 @@ static cc_string ChatScreen_GetClientStatus(int i) { return Chat_ClientStatus[i]
|
|||||||
static void ChatScreen_FreeChatFonts(struct ChatScreen* s) {
|
static void ChatScreen_FreeChatFonts(struct ChatScreen* s) {
|
||||||
Font_Free(&s->chatFont);
|
Font_Free(&s->chatFont);
|
||||||
Font_Free(&s->announcementFont);
|
Font_Free(&s->announcementFont);
|
||||||
|
Font_Free(&s->bigAnnouncementFont);
|
||||||
|
Font_Free(&s->smallAnnouncementFont);
|
||||||
}
|
}
|
||||||
|
|
||||||
static cc_bool ChatScreen_ChatUpdateFont(struct ChatScreen* s) {
|
static cc_bool ChatScreen_ChatUpdateFont(struct ChatScreen* s) {
|
||||||
@ -810,6 +812,8 @@ static cc_bool ChatScreen_ChatUpdateFont(struct ChatScreen* s) {
|
|||||||
size = (int)(16 * Gui_GetChatScale());
|
size = (int)(16 * Gui_GetChatScale());
|
||||||
Math_Clamp(size, 8, 60);
|
Math_Clamp(size, 8, 60);
|
||||||
Drawer2D_MakeFont(&s->announcementFont, size, FONT_FLAGS_NONE);
|
Drawer2D_MakeFont(&s->announcementFont, size, FONT_FLAGS_NONE);
|
||||||
|
Drawer2D_MakeFont(&s->bigAnnouncementFont, size * 1.33, FONT_FLAGS_NONE);
|
||||||
|
Drawer2D_MakeFont(&s->smallAnnouncementFont, size * 0.67, FONT_FLAGS_NONE);
|
||||||
|
|
||||||
ChatInputWidget_SetFont(&s->input, &s->chatFont);
|
ChatInputWidget_SetFont(&s->input, &s->chatFont);
|
||||||
TextGroupWidget_SetFont(&s->status, &s->chatFont);
|
TextGroupWidget_SetFont(&s->status, &s->chatFont);
|
||||||
@ -822,6 +826,8 @@ static cc_bool ChatScreen_ChatUpdateFont(struct ChatScreen* s) {
|
|||||||
static void ChatScreen_Redraw(struct ChatScreen* s) {
|
static void ChatScreen_Redraw(struct ChatScreen* s) {
|
||||||
TextGroupWidget_RedrawAll(&s->chat);
|
TextGroupWidget_RedrawAll(&s->chat);
|
||||||
TextWidget_Set(&s->announcement, &Chat_Announcement, &s->announcementFont);
|
TextWidget_Set(&s->announcement, &Chat_Announcement, &s->announcementFont);
|
||||||
|
TextWidget_Set(&s->bigAnnouncement, &Chat_BigAnnouncement, &s->bigAnnouncementFont);
|
||||||
|
TextWidget_Set(&s->smallAnnouncement, &Chat_SmallAnnouncement, &s->smallAnnouncementFont);
|
||||||
TextGroupWidget_RedrawAll(&s->status);
|
TextGroupWidget_RedrawAll(&s->status);
|
||||||
TextGroupWidget_RedrawAll(&s->bottomRight);
|
TextGroupWidget_RedrawAll(&s->bottomRight);
|
||||||
TextGroupWidget_RedrawAll(&s->clientStatus);
|
TextGroupWidget_RedrawAll(&s->clientStatus);
|
||||||
@ -927,6 +933,10 @@ static void ChatScreen_ChatReceived(void* screen, const cc_string* msg, int type
|
|||||||
TextGroupWidget_Redraw(&s->bottomRight, 2 - (type - MSG_TYPE_BOTTOMRIGHT_1));
|
TextGroupWidget_Redraw(&s->bottomRight, 2 - (type - MSG_TYPE_BOTTOMRIGHT_1));
|
||||||
} else if (type == MSG_TYPE_ANNOUNCEMENT) {
|
} else if (type == MSG_TYPE_ANNOUNCEMENT) {
|
||||||
TextWidget_Set(&s->announcement, msg, &s->announcementFont);
|
TextWidget_Set(&s->announcement, msg, &s->announcementFont);
|
||||||
|
} else if (type == MSG_TYPE_BIGANNOUNCEMENT) {
|
||||||
|
TextWidget_Set(&s->bigAnnouncement, msg, &s->bigAnnouncementFont);
|
||||||
|
} else if (type == MSG_TYPE_SMALLANNOUNCEMENT) {
|
||||||
|
TextWidget_Set(&s->smallAnnouncement, msg, &s->smallAnnouncementFont);
|
||||||
} else if (type >= MSG_TYPE_CLIENTSTATUS_1 && type <= MSG_TYPE_CLIENTSTATUS_2) {
|
} else if (type >= MSG_TYPE_CLIENTSTATUS_1 && type <= MSG_TYPE_CLIENTSTATUS_2) {
|
||||||
TextGroupWidget_Redraw(&s->clientStatus, type - MSG_TYPE_CLIENTSTATUS_1);
|
TextGroupWidget_Redraw(&s->clientStatus, type - MSG_TYPE_CLIENTSTATUS_1);
|
||||||
ChatScreen_UpdateChatYOffsets(s);
|
ChatScreen_UpdateChatYOffsets(s);
|
||||||
@ -993,7 +1003,18 @@ static void ChatScreen_DrawChat(struct ChatScreen* s, double delta) {
|
|||||||
if (s->announcement.tex.ID && now > Chat_AnnouncementReceived + 5) {
|
if (s->announcement.tex.ID && now > Chat_AnnouncementReceived + 5) {
|
||||||
Elem_Free(&s->announcement);
|
Elem_Free(&s->announcement);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (s->bigAnnouncement.tex.ID && now > Chat_BigAnnouncementReceived + 5) {
|
||||||
|
Elem_Free(&s->bigAnnouncement);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (s->smallAnnouncement.tex.ID && now > Chat_SmallAnnouncementReceived + 5) {
|
||||||
|
Elem_Free(&s->smallAnnouncement);
|
||||||
|
}
|
||||||
|
|
||||||
Elem_Render(&s->announcement, delta);
|
Elem_Render(&s->announcement, delta);
|
||||||
|
Elem_Render(&s->bigAnnouncement, delta);
|
||||||
|
Elem_Render(&s->smallAnnouncement, delta);
|
||||||
|
|
||||||
if (s->grabsInput) {
|
if (s->grabsInput) {
|
||||||
Elem_Render(&s->input.base, delta);
|
Elem_Render(&s->input.base, delta);
|
||||||
@ -1021,6 +1042,8 @@ static void ChatScreen_ContextLost(void* screen) {
|
|||||||
Elem_Free(&s->bottomRight);
|
Elem_Free(&s->bottomRight);
|
||||||
Elem_Free(&s->clientStatus);
|
Elem_Free(&s->clientStatus);
|
||||||
Elem_Free(&s->announcement);
|
Elem_Free(&s->announcement);
|
||||||
|
Elem_Free(&s->bigAnnouncement);
|
||||||
|
Elem_Free(&s->smallAnnouncement);
|
||||||
|
|
||||||
#ifdef CC_BUILD_TOUCH
|
#ifdef CC_BUILD_TOUCH
|
||||||
if (!Input_TouchMode) return;
|
if (!Input_TouchMode) return;
|
||||||
@ -1071,6 +1094,14 @@ static void ChatScreen_Layout(void* screen) {
|
|||||||
s->announcement.yOffset = -WindowInfo.Height / 4;
|
s->announcement.yOffset = -WindowInfo.Height / 4;
|
||||||
Widget_Layout(&s->announcement);
|
Widget_Layout(&s->announcement);
|
||||||
|
|
||||||
|
Widget_SetLocation(&s->bigAnnouncement, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 0);
|
||||||
|
s->bigAnnouncement.yOffset = -WindowInfo.Height / 16;
|
||||||
|
Widget_Layout(&s->bigAnnouncement);
|
||||||
|
|
||||||
|
Widget_SetLocation(&s->smallAnnouncement, ANCHOR_CENTRE, ANCHOR_CENTRE, 0, 0);
|
||||||
|
s->smallAnnouncement.yOffset = WindowInfo.Height / 20;
|
||||||
|
Widget_Layout(&s->smallAnnouncement);
|
||||||
|
|
||||||
#ifdef CC_BUILD_TOUCH
|
#ifdef CC_BUILD_TOUCH
|
||||||
if (!Input_TouchMode) return;
|
if (!Input_TouchMode) return;
|
||||||
if (WindowInfo.SoftKeyboard == SOFT_KEYBOARD_SHIFT) {
|
if (WindowInfo.SoftKeyboard == SOFT_KEYBOARD_SHIFT) {
|
||||||
@ -1255,6 +1286,8 @@ static void ChatScreen_Init(void* screen) {
|
|||||||
TextGroupWidget_Create(&s->clientStatus, CHAT_MAX_CLIENTSTATUS,
|
TextGroupWidget_Create(&s->clientStatus, CHAT_MAX_CLIENTSTATUS,
|
||||||
s->clientStatusTextures, ChatScreen_GetClientStatus);
|
s->clientStatusTextures, ChatScreen_GetClientStatus);
|
||||||
TextWidget_Init(&s->announcement);
|
TextWidget_Init(&s->announcement);
|
||||||
|
TextWidget_Init(&s->bigAnnouncement);
|
||||||
|
TextWidget_Init(&s->smallAnnouncement);
|
||||||
|
|
||||||
s->status.collapsible[0] = true; /* Texture pack download status */
|
s->status.collapsible[0] = true; /* Texture pack download status */
|
||||||
s->clientStatus.collapsible[0] = true;
|
s->clientStatus.collapsible[0] = true;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user