Table of Contents

Struct InstanceDetailsBroadcast

Namespace
FishMMO.Shared
Assembly
FishMMO.Shared.dll

Broadcast carrying the state of an instance to one of its members.

public struct InstanceDetailsBroadcast : IBroadcast
Implements
IBroadcast
Inherited Members

Remarks

Answered for every request, including the ones with nothing to report — a character that is not in an instance gets InInstance false rather than silence, for the same reason the channel list answers with an empty list: a panel the player opened and that never fills in is indistinguishable from a hung game.

Fields

DifficultyName

Name of the difficulty the instance was opened at, for display.

public string DifficultyName

Field Value

string

InInstance

False when the character is not in an instance; every other field is then unset.

public bool InInstance

Field Value

bool

IsPrivate

Whether the instance is hidden from the dungeon finder's public list.

public bool IsPrivate

Field Value

bool

Remarks

Shown to every member, not only the leader. Whether strangers can walk into the run they are in is something all of them have an interest in knowing; only the leader can change it.

LeaderCharacterID

Character ID of the leader, or 0 when the leader could not be identified.

public long LeaderCharacterID

Field Value

long

Remarks

An ID, not a name. The client resolves it through ClientNamingSystem, which answers from a disk-backed cache and asks the server only for an ID it has never seen — so a leader the viewer has grouped with before costs nothing to name, and the name it shows is the same one every other panel shows for that character.

This does not widen who can be named: the ID is found by a walk over the answering scene server's own characters, so a leader running the party from another scene server is still unidentifiable and still arrives here as 0. What changed is that the name is no longer resolved twice, once per system, from two different sources.

Members

Everyone currently standing in the instance.

public InstanceMemberData[] Members

Field Value

InstanceMemberData[]

RemainingSeconds

Seconds until the instance closes on its own, or 0 when it is not time-bounded.

public int RemainingSeconds

Field Value

int

Remarks

A snapshot. The client counts down from it between refreshes rather than being sent a tick, so the number on screen keeps moving without a message per second.

SceneName

Scene name of the instance.

public string SceneName

Field Value

string

ViewerIsLeader

Whether the character being answered is the leader, and so may remove others.

public bool ViewerIsLeader

Field Value

bool

Remarks

Decided by the server and sent, rather than inferred client-side by comparing IDs. The client's copy of this only decides whether the controls are drawn; the server re-checks on the request itself, because a drawn control is not an authorisation.