public void AddServerCommand(LogicServerCommand serverCommand) { int id = -1; for (int i = 0; i < this.ServerCommands.Size(); i++) { if (this.ServerCommands[i].GetId() > id) { id = this.ServerCommands[i].GetId(); } } serverCommand.SetId(id + 1); this.ServerCommands.Add(serverCommand); if (this.CurrentSession != null && this.CurrentSession.GameState != null) { this.CurrentSession.SendMessage(new HomeServerCommandAllowedMessage { ServerCommand = serverCommand }, 10); } else { GameAvatarManager.ExecuteServerCommandsInOfflineMode(this); GameAvatarManager.Save(this); } }
public static void ExecuteServerCommandsInOfflineMode(GameAvatar document) { if (document.ServerCommands.Size() != 0) { LogicGameMode logicGameMode = new LogicGameMode(); LogicLevel logicLevel = logicGameMode.GetLevel(); logicLevel.SetVisitorAvatar(document.LogicClientAvatar); try { for (int i = 0; i < document.ServerCommands.Size(); i++) { int result = document.ServerCommands[i].Execute(logicLevel); if (result == 0) { document.ServerCommands.Remove(i--); } } GameAvatarManager.Save(document); } catch (Exception exception) { Logging.Error("GameAvatarManager.executeServerCommandsInOfflineMode: server command execution in offline mode failed: " + exception); } } }