public override void Close() { base.Close(); if (_entitySession != null && !_entitySession.Closed) { ViewVariablesManager.CloseSession(_entitySession); _entitySession = null; } }
public override void Initialize(SS14Window window, ViewVariablesBlobMetadata blob, ViewVariablesRemoteSession session) { Session = session; _wrappingInit(window, $"[SERVER] {blob.Stringified}", blob.ObjectTypePretty); foreach (var trait in TraitsFor(blob.Traits)) { trait.Initialize(this); _traits.Add(trait); } _refresh(); }
public override async void Initialize(SS14Window window, ViewVariablesBlobMetadata blob, ViewVariablesRemoteSession session) { // TODO: this is pretty poorly implemented right now. // For example, it assumes a client-side entity exists, // so it also means client bubbling won't work in this context. _entitySession = session; _membersBlob = await ViewVariablesManager.RequestData <ViewVariablesBlobMembers>(session, new ViewVariablesRequestMembers()); var uid = (EntityUid)_membersBlob.Members.Single(p => p.Name == "Uid").Value; var entity = _entityManager.GetEntity(uid); Initialize(window, entity); }
private async void _tabsOnTabChanged(int tab) { if (_serverLoaded || tab != TabServerComponents && tab != TabServerVars) { return; } _serverLoaded = true; if (_entitySession == null) { try { _entitySession = await ViewVariablesManager.RequestSession(new ViewVariablesEntitySelector(_entity.Uid)); } catch (SessionDenyException e) { var text = $"Server denied VV request: {e.Reason}"; _serverVariables.AddChild(new Label { Text = text }); _serverComponents.AddChild(new Label { Text = text }); return; } _membersBlob = await ViewVariablesManager.RequestData <ViewVariablesBlobMembers>(_entitySession, new ViewVariablesRequestMembers()); } var otherStyle = false; foreach (var propertyData in _membersBlob.Members) { var propertyEdit = new ViewVariablesPropertyControl(ViewVariablesManager, _resourceCache); propertyEdit.SetStyle(otherStyle = !otherStyle); var editor = propertyEdit.SetProperty(propertyData); editor.OnValueChanged += o => ViewVariablesManager.ModifyRemote(_entitySession, new object[] { new ViewVariablesMemberSelector(propertyData.PropertyIndex) }, o); if (editor is ViewVariablesPropertyEditorReference refEditor) { refEditor.OnPressed += () => ViewVariablesManager.OpenVV( new ViewVariablesSessionRelativeSelector(_entitySession.SessionId, new object[] { new ViewVariablesMemberSelector(propertyData.PropertyIndex) })); } _serverVariables.AddChild(propertyEdit); } var componentsBlob = await ViewVariablesManager.RequestData <ViewVariablesBlobEntityComponents>(_entitySession, new ViewVariablesRequestEntityComponents()); _serverComponents.DisposeAllChildren(); componentsBlob.ComponentTypes.Sort(); foreach (var componentType in componentsBlob.ComponentTypes.OrderBy(t => t.Stringified)) { var button = new Button { Text = componentType.Stringified, TextAlign = Button.AlignMode.Left }; button.OnPressed += args => { ViewVariablesManager.OpenVV( new ViewVariablesComponentSelector(_entity.Uid, componentType.Qualified)); }; _serverComponents.AddChild(button); } }