mirror of
https://github.com/openfrontio/OpenFrontIO.git
synced 2026-08-17 05:34:37 +00:00
Add filters tabs to EvensDisplay to let users filter events (#1080)
## Description: Big update to the EventsDisplay - Style update for EventsDisplay, look & feel similar to other windows - Component now hidden during spawn phase - Adds new functionality for filtering events by category. Allows the player to remove specific event types - Displays latest gold amount, decays after 5 seconds <img width="1147" alt="Screenshot 2025-06-07 at 20 18 55" src="https://github.com/user-attachments/assets/11c39818-55ad-4ba1-a998-360057e2856c" /> <img width="422" alt="Screenshot 2025-06-07 at 19 01 55" src="https://github.com/user-attachments/assets/09c0b998-6046-49fb-9fba-33b4f57f337b" /> <img width="444" alt="Screenshot 2025-06-07 at 20 20 25" src="https://github.com/user-attachments/assets/022deadc-3a49-442a-85f5-f1cd128a5805" />  ## Please complete the following: - [X] I have added screenshots for all UI updates - [X] I process any text displayed to the user through translateText() and I've added it to the en.json file - [X] I have added relevant tests to the test directory - [X] I confirm I have thoroughly tested these changes and take full responsibility for any bugs introduced - [X] I understand that submitting code with bugs that could have been caught through manual testing blocks releases and new features for all contributors ## Please put your Discord username so you can be contacted if a bug or regression is found: maxion_ Fixes #1025 Fixes #1034
This commit is contained in:
+67
-4
@@ -587,6 +587,7 @@ export interface Game extends GameMap {
|
||||
message: string,
|
||||
type: MessageType,
|
||||
playerID: PlayerID | null,
|
||||
goldAmount?: bigint,
|
||||
): void;
|
||||
displayIncomingUnit(
|
||||
unitID: number,
|
||||
@@ -653,13 +654,75 @@ export interface EmojiMessage {
|
||||
}
|
||||
|
||||
export enum MessageType {
|
||||
SUCCESS,
|
||||
INFO,
|
||||
WARN,
|
||||
ERROR,
|
||||
ATTACK_FAILED,
|
||||
ATTACK_CANCELLED,
|
||||
ATTACK_REQUEST,
|
||||
CONQUERED_PLAYER,
|
||||
MIRV_INBOUND,
|
||||
NUKE_INBOUND,
|
||||
HYDROGEN_BOMB_INBOUND,
|
||||
NAVAL_INVASION_INBOUND,
|
||||
SAM_MISS,
|
||||
SAM_HIT,
|
||||
CAPTURED_ENEMY_UNIT,
|
||||
UNIT_CAPTURED_BY_ENEMY,
|
||||
UNIT_DESTROYED,
|
||||
ALLIANCE_ACCEPTED,
|
||||
ALLIANCE_REJECTED,
|
||||
ALLIANCE_REQUEST,
|
||||
ALLIANCE_BROKEN,
|
||||
ALLIANCE_EXPIRED,
|
||||
SENT_GOLD_TO_PLAYER,
|
||||
RECEIVED_GOLD_FROM_PLAYER,
|
||||
RECEIVED_GOLD_FROM_TRADE,
|
||||
SENT_TROOPS_TO_PLAYER,
|
||||
RECEIVED_TROOPS_FROM_PLAYER,
|
||||
CHAT,
|
||||
}
|
||||
|
||||
// Message categories used for filtering events in the EventsDisplay
|
||||
export enum MessageCategory {
|
||||
ATTACK = "ATTACK",
|
||||
ALLIANCE = "ALLIANCE",
|
||||
TRADE = "TRADE",
|
||||
CHAT = "CHAT",
|
||||
}
|
||||
|
||||
// Ensures that all message types are included in a category
|
||||
export const MESSAGE_TYPE_CATEGORIES: Record<MessageType, MessageCategory> = {
|
||||
[MessageType.ATTACK_FAILED]: MessageCategory.ATTACK,
|
||||
[MessageType.ATTACK_CANCELLED]: MessageCategory.ATTACK,
|
||||
[MessageType.ATTACK_REQUEST]: MessageCategory.ATTACK,
|
||||
[MessageType.CONQUERED_PLAYER]: MessageCategory.ATTACK,
|
||||
[MessageType.MIRV_INBOUND]: MessageCategory.ATTACK,
|
||||
[MessageType.NUKE_INBOUND]: MessageCategory.ATTACK,
|
||||
[MessageType.HYDROGEN_BOMB_INBOUND]: MessageCategory.ATTACK,
|
||||
[MessageType.NAVAL_INVASION_INBOUND]: MessageCategory.ATTACK,
|
||||
[MessageType.SAM_MISS]: MessageCategory.ATTACK,
|
||||
[MessageType.SAM_HIT]: MessageCategory.ATTACK,
|
||||
[MessageType.CAPTURED_ENEMY_UNIT]: MessageCategory.ATTACK,
|
||||
[MessageType.UNIT_CAPTURED_BY_ENEMY]: MessageCategory.ATTACK,
|
||||
[MessageType.UNIT_DESTROYED]: MessageCategory.ATTACK,
|
||||
[MessageType.ALLIANCE_ACCEPTED]: MessageCategory.ALLIANCE,
|
||||
[MessageType.ALLIANCE_REJECTED]: MessageCategory.ALLIANCE,
|
||||
[MessageType.ALLIANCE_REQUEST]: MessageCategory.ALLIANCE,
|
||||
[MessageType.ALLIANCE_BROKEN]: MessageCategory.ALLIANCE,
|
||||
[MessageType.ALLIANCE_EXPIRED]: MessageCategory.ALLIANCE,
|
||||
[MessageType.SENT_GOLD_TO_PLAYER]: MessageCategory.TRADE,
|
||||
[MessageType.RECEIVED_GOLD_FROM_PLAYER]: MessageCategory.TRADE,
|
||||
[MessageType.RECEIVED_GOLD_FROM_TRADE]: MessageCategory.TRADE,
|
||||
[MessageType.SENT_TROOPS_TO_PLAYER]: MessageCategory.TRADE,
|
||||
[MessageType.RECEIVED_TROOPS_FROM_PLAYER]: MessageCategory.TRADE,
|
||||
[MessageType.CHAT]: MessageCategory.CHAT,
|
||||
} as const;
|
||||
|
||||
/**
|
||||
* Get the category of a message type
|
||||
*/
|
||||
export function getMessageCategory(messageType: MessageType): MessageCategory {
|
||||
return MESSAGE_TYPE_CATEGORIES[messageType];
|
||||
}
|
||||
|
||||
export interface NameViewData {
|
||||
x: number;
|
||||
y: number;
|
||||
|
||||
Reference in New Issue
Block a user