Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/MooLite/core/Game.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,13 @@ import { Chat } from "src/MooLite/core/chat/Chat";
import { ActionQueue } from "src/MooLite/core/actions/ActionQueue";
import { Inventory } from "src/MooLite/core/inventory/Inventory";
import { Notifier } from "src/MooLite/core/notifications/Notifier";
import { InitClientInfoMessage } from "src/MooLite/core/server/messages/InitClientInfo";
import { Abilities } from "src/MooLite/core/abilities/Abilities";
import { Combat } from "src/MooLite/core/combat/Combat";
import { Leaderboard } from "src/MooLite/core/leaderboard/Leaderboard";
import { Equipment } from "src/MooLite/core/equipment/Equipment";
import { LootBoxes } from "src/MooLite/core/lootboxes/LootBoxes";
import { Character } from "src/MooLite/core/character/Character";
import { InitClientInfoMessage } from "./messages/server/messages/InitClientInfo";

export class Game {
gameVersion: string;
Expand Down
59 changes: 34 additions & 25 deletions src/MooLite/core/MooLite.ts
Original file line number Diff line number Diff line change
@@ -1,28 +1,32 @@
import { PluginManager } from "src/MooLite/core/plugins/PluginManager";
import { MooSocket } from "src/MooLite/core/MooSocket";
import { ServerMessage } from "src/MooLite/core/server/ServerMessage";
import { MessageParser } from "src/MooLite/core/server/MessageParser";
import { ActionCompletedParser } from "src/MooLite/core/server/messages/ActionCompleted";
import { Game } from "src/MooLite/core/Game";
import { ChatMessageReceivedParser } from "src/MooLite/core/server/messages/ChatMessageReceived";
import { ActivePlayerCountUpdatedParser } from "src/MooLite/core/server/messages/ActivePlayerCountUpdated";
import { ConsumableSlotsUpdatedParser } from "src/MooLite/core/server/messages/ConsumableSlotsUpdated";
import { ActionsUpdatedParser } from "src/MooLite/core/server/messages/ActionsUpdated";
import { InitCharacterInfoParser } from "src/MooLite/core/server/messages/InitCharacterInfoParser";
import { InfoParser } from "src/MooLite/core/server/messages/Info";
import { LeaderboardInfoUpdatedParser } from "src/MooLite/core/server/messages/LeaderboardInfoUpdated";
import { PingParser } from "src/MooLite/core/server/clientmessages/Ping";
import { ClientMessage } from "src/MooLite/core/server/clientmessages/ClientMessage";
import { PongParser } from "src/MooLite/core/server/messages/Pong";
import { LocalStorage } from "src/MooLite/util/LocalStorage";
import { MooLiteSaveData } from "src/MooLite/core/MooLiteSaveData";
import { CombatTriggersUpdatedParser } from "src/MooLite/core/server/messages/CombatTriggersUpdated";
import { CharacterStatsUpdatedParser } from "src/MooLite/core/server/messages/CharacterStatsUpdated";
import { EquipmentBuffsUpdatedParser } from "src/MooLite/core/server/messages/EquipmentBuffsUpdated";
import { ItemsUpdatedParser } from "src/MooLite/core/server/messages/ItemsUpdated";
import { LootOpenedParser } from "src/MooLite/core/server/messages/LootOpened";
import { AbilitiesUpdatedParser } from "src/MooLite/core/server/messages/AbilitiesUpdated";

import { InitClientInfoParser } from "./messages/server/messages/InitClientInfo";
import { MessageParser } from "./messages/MessageParser";
import { ClientMessage } from "./messages/client/ClientMessage";
import { GetMarketItemOrderBooksParser } from "./messages/client/messages/GetMarketItemOrderBooks";
import { PingParser } from "./messages/client/messages/Ping";
import { ServerMessage } from "./messages/server/ServerMessage";
import { AbilitiesUpdatedParser } from "./messages/server/messages/AbilitiesUpdated";
import { ActionCompletedParser } from "./messages/server/messages/ActionCompleted";
import { ActionsUpdatedParser } from "./messages/server/messages/ActionsUpdated";
import { ActivePlayerCountUpdatedParser } from "./messages/server/messages/ActivePlayerCountUpdated";
import { CharacterStatsUpdatedParser } from "./messages/server/messages/CharacterStatsUpdated";
import { ChatMessageReceivedParser } from "./messages/server/messages/ChatMessageReceived";
import { CombatTriggersUpdatedParser } from "./messages/server/messages/CombatTriggersUpdated";
import { CombatUnitsInBattleUpdatedMessageParser } from "./messages/server/messages/CombatUnitsInBattleUpdated";
import { ConsumableSlotsUpdatedParser } from "./messages/server/messages/ConsumableSlotsUpdated";
import { EquipmentBuffsUpdatedParser } from "./messages/server/messages/EquipmentBuffsUpdated";
import { InfoParser } from "./messages/server/messages/Info";
import { InitCharacterInfoParser } from "./messages/server/messages/InitCharacterInfo";
import { ItemsUpdatedParser } from "./messages/server/messages/ItemsUpdated";
import { LeaderboardInfoUpdatedParser } from "./messages/server/messages/LeaderboardInfoUpdated";
import { LootOpenedParser } from "./messages/server/messages/LootOpened";
import { MarketItemorderBooksUpdated } from "./messages/server/messages/MarketItemOrderBooksUpdated";
import { NewBattleMessageParser } from "./messages/server/messages/NewBattle";
import { PongParser } from "./messages/server/messages/Pong";
export class MooLite {
pluginManager: PluginManager;
mooSocket: MooSocket;
Expand All @@ -31,6 +35,7 @@ export class MooLite {

messageParsers: MessageParser[] = [
// Server messages
new InitClientInfoParser(),
new InitCharacterInfoParser(),
new PongParser(),

Expand All @@ -41,15 +46,19 @@ export class MooLite {
new ConsumableSlotsUpdatedParser(),
new InfoParser(),
new CombatTriggersUpdatedParser(),
new NewBattleMessageParser(),
new CombatUnitsInBattleUpdatedMessageParser(),
new LeaderboardInfoUpdatedParser(),
new LootOpenedParser(),
new CharacterStatsUpdatedParser(),
new EquipmentBuffsUpdatedParser(),
new ItemsUpdatedParser(),
new AbilitiesUpdatedParser(),
new MarketItemorderBooksUpdated(),

// Client messages
new PingParser(),
new GetMarketItemOrderBooksParser(),
];

private _interval: NodeJS.Timeout;
Expand Down Expand Up @@ -159,13 +168,13 @@ export class MooLite {
const parser = this.messageParsers.find((parser) => {
return parser.canParse(message);
});

if (!parser) {
if (!isClientMessage) {
console.warn(`Unhandled message type ${message.type}`);
console.log(message);
}
return;
return isClientMessage
? console.debug(`Unhandled client message type: ${message.type}`, message)
: console.warn(`Unhandled server message type: ${message.type}`, message);
}

parser.apply(message, this.game);
}
}
8 changes: 4 additions & 4 deletions src/MooLite/core/MooSocket.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { SimpleEventDispatcher } from "strongly-typed-events";
import { ServerMessage } from "src/MooLite/core/server/ServerMessage";
import { InitClientInfoMessage } from "src/MooLite/core/server/messages/InitClientInfo";
import { ServerMessageType } from "src/MooLite/core/server/ServerMessageType";
import { ClientMessage } from "src/MooLite/core/server/clientmessages/ClientMessage";
import { unsafeWindow } from "$";
import { ServerMessage } from "./messages/server/ServerMessage";
import { ClientMessage } from "./messages/client/ClientMessage";
import { InitClientInfoMessage } from "./messages/server/messages/InitClientInfo";
import { ServerMessageType } from "./messages/server/ServerMessageType";

export class MooSocket extends WebSocket {
private _onServerMessage = new SimpleEventDispatcher<ServerMessage>();
Expand Down
2 changes: 0 additions & 2 deletions src/MooLite/core/leaderboard/Leaderboard.ts
Original file line number Diff line number Diff line change
Expand Up @@ -36,8 +36,6 @@ export class Leaderboard {
return null;
}

console.log(this.leaderboardList);

const skills: LeaderboardSkill[] = this.getSkillLeaderboards().flatMap((value) => {
const playerEntry = value.data.find((entry) => entry.name.toLowerCase() === name.toLowerCase());
if (!playerEntry) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { ServerMessageType } from "src/MooLite/core/server/ServerMessageType";
import { ServerMessage } from "src/MooLite/core/server/ServerMessage";
import { Game } from "src/MooLite/core/Game";
import { ClientMessageType } from "src/MooLite/core/server/clientmessages/ClientMessageType";
import { ClientMessage } from "src/MooLite/core/server/clientmessages/ClientMessage";
import { ServerMessageType } from "./server/ServerMessageType";
import { ClientMessage } from "./client/ClientMessage";
import { ClientMessageType } from "./client/ClientMessageType";
import { ServerMessage } from "./server/ServerMessage";

export abstract class MessageParser {
abstract type: ServerMessageType | ClientMessageType;
Expand Down
8 changes: 8 additions & 0 deletions src/MooLite/core/messages/NoopMessageParser.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { MessageParser } from "./MessageParser";
import { ServerMessage } from "./server/ServerMessage";

export abstract class NoopMessageParser extends MessageParser {
apply(message: ServerMessage): void {
console.debug(`Parsing ${this.type} message`, message);
}
}
5 changes: 5 additions & 0 deletions src/MooLite/core/messages/client/ClientMessage.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { ClientMessageType } from "./ClientMessageType";

export interface ClientMessage {
type: ClientMessageType;
}
4 changes: 4 additions & 0 deletions src/MooLite/core/messages/client/ClientMessageType.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
export enum ClientMessageType {
Ping = "/character_tasks/ping",
GetMarketItemOrderBooks = "/character_tasks/get_market_item_order_books",
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
import { Game } from "src/MooLite/core/Game";
import { ClientMessageType } from "../ClientMessageType";
import { ClientMessage } from "../ClientMessage";
import { MessageParser } from "../../MessageParser";

export interface GetMarketItemOrderBooksMessage extends ClientMessage {
type: ClientMessageType.GetMarketItemOrderBooks;
}

export class GetMarketItemOrderBooksParser extends MessageParser {
type = ClientMessageType.GetMarketItemOrderBooks;

apply(message: GetMarketItemOrderBooksMessage, game: Game): void {
console.debug(this.type, { message });
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { ClientMessage } from "src/MooLite/core/server/clientmessages/ClientMessage";
import { ClientMessageType } from "src/MooLite/core/server/clientmessages/ClientMessageType";
import { MessageParser } from "src/MooLite/core/server/MessageParser";
import { Game } from "src/MooLite/core/Game";
import { ClientMessageType } from "../ClientMessageType";
import { MessageParser } from "../../MessageParser";
import { ClientMessage } from "../ClientMessage";

export interface PingMessage extends ClientMessage {
type: ClientMessageType.Ping;
Expand Down
5 changes: 5 additions & 0 deletions src/MooLite/core/messages/server/ServerMessage.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import { ServerMessageType } from "./ServerMessageType";

export interface ServerMessage {
type: ServerMessageType;
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ export enum ServerMessageType {

CharacterStatsUpdated = "character_stats_updated",
EquipmentBuffsUpdated = "equipment_buffs_updated",
CommunityBuffsUpdated = "community_buffs_updated",
ItemsUpdated = "items_updated",

LootOpened = "loot_opened",
Expand All @@ -26,7 +27,12 @@ export enum ServerMessageType {
// Combat
CombatTriggersUpdated = "combat_triggers_updated",
AbilitiesUpdated = "abilities_updated",
CombatUnitsInBattleUpdated = "combat_units_in_battle_updated",
NewBattle = "new_battle",

// Leaderboard
LeaderboardInfoUpdated = "leaderboard_info_updated",

// Marketplace
MarketItemorderBooksUpdated = "market_item_order_books_updated",
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
import { ServerMessageType } from "src/MooLite/core/server/ServerMessageType";
import { MessageParser } from "src/MooLite/core/server/MessageParser";
import { Game } from "src/MooLite/core/Game";
import { ServerMessage } from "src/MooLite/core/server/ServerMessage";
import { CharacterAbility } from "src/MooLite/core/abilities/CharacterAbility";
import { ServerMessageType } from "../ServerMessageType";
import { ServerMessage } from "../ServerMessage";
import { MessageParser } from "../../MessageParser";
import { Game } from "src/MooLite/core/Game";

export interface AbilitiesUpdatedMessage extends ServerMessage {
type: ServerMessageType.AbilitiesUpdated;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import { ServerMessage } from "src/MooLite/core/server/ServerMessage";
import { ServerMessageType } from "src/MooLite/core/server/ServerMessageType";
import { CharacterSkill } from "src/MooLite/core/skills/CharacterSkill";
import { MessageParser } from "src/MooLite/core/server/MessageParser";
import { Game } from "src/MooLite/core/Game";
import { CharacterAction } from "src/MooLite/core/actions/CharacterAction";
import { CharacterItem } from "src/MooLite/core/inventory/CharacterItem";
import { CharacterAbility } from "src/MooLite/core/abilities/CharacterAbility";
import { CharacterSkill } from "src/MooLite/core/skills/CharacterSkill";
import { MessageParser } from "../../MessageParser";
import { ServerMessage } from "../ServerMessage";
import { ServerMessageType } from "../ServerMessageType";

export interface ActionCompletedMessage extends ServerMessage {
type: ServerMessageType.ActionCompleted;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { ServerMessage } from "src/MooLite/core/server/ServerMessage";
import { ServerMessageType } from "src/MooLite/core/server/ServerMessageType";
import { MessageParser } from "src/MooLite/core/server/MessageParser";
import { MessageParser } from "../../MessageParser";
import { ServerMessage } from "../ServerMessage";
import { ServerMessageType } from "../ServerMessageType";
import { Game } from "src/MooLite/core/Game";
import { CharacterAction } from "src/MooLite/core/actions/CharacterAction";

Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { ServerMessage } from "src/MooLite/core/server/ServerMessage";
import { ServerMessageType } from "src/MooLite/core/server/ServerMessageType";
import { MessageParser } from "src/MooLite/core/server/MessageParser";
import { Game } from "src/MooLite/core/Game";
import { MessageParser } from "../../MessageParser";
import { ServerMessage } from "../ServerMessage";
import { ServerMessageType } from "../ServerMessageType";

export interface ActivePlayerCountUpdatedMessage extends ServerMessage {
type: ServerMessageType.ActivePlayerCountUpdated;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { ServerMessageType } from "src/MooLite/core/server/ServerMessageType";
import { ServerMessage } from "src/MooLite/core/server/ServerMessage";
import { MessageParser } from "src/MooLite/core/server/MessageParser";
import { MessageParser } from "../../MessageParser";
import { ServerMessage } from "../ServerMessage";
import { ServerMessageType } from "../ServerMessageType";
import { Game } from "src/MooLite/core/Game";
import { NonCombatStats } from "src/MooLite/core/equipment/NonCombatStats";
import { CombatUnit } from "src/MooLite/core/combat/CombatUnit";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { ServerMessage } from "src/MooLite/core/server/ServerMessage";
import { ServerMessageType } from "src/MooLite/core/server/ServerMessageType";
import { ChatChannelTypeHrid } from "src/MooLite/core/chat/ChatChannelTypeHrid";
import { ChatIconHrid } from "src/MooLite/core/chat/ChatIconHrid";
import { MessageParser } from "src/MooLite/core/server/MessageParser";
import { Game } from "src/MooLite/core/Game";
import { MessageParser } from "../../MessageParser";
import { ServerMessage } from "../ServerMessage";
import { ServerMessageType } from "../ServerMessageType";

export interface ChatMessageReceived extends ServerMessage {
type: ServerMessageType.ChatMessageReceived;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { ServerMessage } from "src/MooLite/core/server/ServerMessage";
import { ServerMessageType } from "src/MooLite/core/server/ServerMessageType";
import { MessageParser } from "src/MooLite/core/server/MessageParser";
import { MessageParser } from "../../MessageParser";
import { ServerMessage } from "../ServerMessage";
import { ServerMessageType } from "../ServerMessageType";
import { Game } from "src/MooLite/core/Game";
import { AbilityHrid } from "src/MooLite/core/abilities/AbilityHrid";
import { CombatTrigger } from "src/MooLite/core/combat/triggers/CombatTrigger";
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { NoopMessageParser } from "../../NoopMessageParser";
import { ServerMessageType } from "../ServerMessageType";

export class CombatUnitsInBattleUpdatedMessageParser extends NoopMessageParser {
type = ServerMessageType.CombatUnitsInBattleUpdated;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
import { NoopMessageParser } from "../../NoopMessageParser";
import { ServerMessageType } from "../ServerMessageType";

export class CommunityBuffsUpdatedMessageParser extends NoopMessageParser {
type = ServerMessageType.CommunityBuffsUpdated;
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { ServerMessage } from "src/MooLite/core/server/ServerMessage";
import { ServerMessageType } from "src/MooLite/core/server/ServerMessageType";
import { MessageParser } from "src/MooLite/core/server/MessageParser";
import { MessageParser } from "../../MessageParser";
import { ServerMessage } from "../ServerMessage";
import { ServerMessageType } from "../ServerMessageType";
import { Game } from "src/MooLite/core/Game";
import { ActionTypeHrid } from "src/MooLite/core/actions/ActionTypeHrid";
import { CharacterConsumable } from "src/MooLite/core/inventory/items/CharacterConsumable";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { ServerMessageType } from "src/MooLite/core/server/ServerMessageType";
import { ServerMessage } from "src/MooLite/core/server/ServerMessage";
import { MessageParser } from "src/MooLite/core/server/MessageParser";
import { MessageParser } from "../../MessageParser";
import { ServerMessage } from "../ServerMessage";
import { ServerMessageType } from "../ServerMessageType";
import { Game } from "src/MooLite/core/Game";
import { ActionTypeHrid } from "src/MooLite/core/actions/ActionTypeHrid";
import { EquipmentActionTypeBuff } from "src/MooLite/core/equipment/EquipmentActionTypeBuff";
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { ServerMessageType } from "src/MooLite/core/server/ServerMessageType";
import { MessageParser } from "src/MooLite/core/server/MessageParser";
import { MessageParser } from "../../MessageParser";
import { ServerMessage } from "../ServerMessage";
import { ServerMessageType } from "../ServerMessageType";
import { Game } from "src/MooLite/core/Game";
import { ServerMessage } from "src/MooLite/core/server/ServerMessage";

export interface InfoMessage extends ServerMessage {
type: ServerMessageType.Info;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
import { ServerMessage } from "src/MooLite/core/server/ServerMessage";
import { ServerMessageType } from "src/MooLite/core/server/ServerMessageType";
import { CharacterAction } from "src/MooLite/core/actions/CharacterAction";
import { MessageParser } from "src/MooLite/core/server/MessageParser";
import { Game } from "src/MooLite/core/Game";
import { CharacterItem } from "src/MooLite/core/inventory/CharacterItem";
import { CharacterSkill } from "src/MooLite/core/skills/CharacterSkill";
Expand All @@ -17,6 +14,9 @@ import { NonCombatStats } from "src/MooLite/core/equipment/NonCombatStats";
import { Character } from "src/MooLite/core/character/Character";
import { ChatMessage } from "src/MooLite/core/chat/ChatMessage";
import { CharacterDetail } from "src/MooLite/core/character/CharacterDetail";
import { MessageParser } from "../../MessageParser";
import { ServerMessage } from "../ServerMessage";
import { ServerMessageType } from "../ServerMessageType";

export interface InitCharacterInfoMessage extends ServerMessage {
type: ServerMessageType.InitCharacterInfo;
Expand All @@ -39,7 +39,6 @@ export class InitCharacterInfoParser extends MessageParser {
type = ServerMessageType.InitCharacterInfo;

apply(message: InitCharacterInfoMessage, game: Game): void {
console.log(message);
game.abilities.updateCharacterAbilities(message.characterAbilities, false);
game.abilities.updateCombatTriggers(message.abilityCombatTriggersMap);
game.actionQueue.updateActions(message.characterActions);
Expand Down
Loading