Esempio n. 1
0
        public override void OnVariableSet(DreamObject dreamObject, string variableName, DreamValue variableValue, DreamValue oldVariableValue)
        {
            base.OnVariableSet(dreamObject, variableName, variableValue, oldVariableValue);

            if (variableName == "key" || variableName == "ckey")
            {
                if (_playerManager.TryGetSessionByUsername(variableValue.GetValueAsString(), out var session))
                {
                    var connection = _dreamManager.GetConnectionBySession(session);

                    connection.MobDreamObject = dreamObject;
                }
            }
            else if (variableName == "see_invisible")
            {
                //TODO
            }
            else if (variableName == "client" && variableValue != oldVariableValue)
            {
                var newClient = variableValue.GetValueAsDreamObject();
                var oldClient = oldVariableValue.GetValueAsDreamObject();

                if (newClient != null)
                {
                    _dreamManager.GetConnectionFromClient(newClient).MobDreamObject = dreamObject;
                }
                else if (oldClient != null)
                {
                    _dreamManager.GetConnectionFromClient(oldClient).MobDreamObject = null;
                }
            }
        }
Esempio n. 2
0
        private void OnEntityClicked(EntityClickedEvent e, EntitySessionEventArgs sessionEvent)
        {
            DreamObject atom = _atomManager.GetAtomFromEntity(e.EntityUid);

            if (atom == null)
            {
                return;
            }

            IPlayerSession session = (IPlayerSession)sessionEvent.SenderSession;
            var            client  = _dreamManager.GetConnectionBySession(session).ClientDreamObject;
            var            usr     = client.GetVariable("mob").GetValueAsDreamObject();

            client.SpawnProc("Click", ConstructClickArguments(atom, e), usr: usr);
        }