예제 #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")
            {
                DreamConnection newClientConnection = Program.DreamServer.GetConnectionFromCKey(variableValue.GetValueAsString());

                newClientConnection.MobDreamObject = dreamObject;
            }
            else if (variableName == "client" && variableValue != oldVariableValue)
            {
                DreamObject newClient = variableValue.GetValueAsDreamObject();
                DreamObject oldClient = oldVariableValue.GetValueAsDreamObject();

                if (newClient != null)
                {
                    Program.ClientToConnection[newClient].MobDreamObject = dreamObject;
                }
                else if (oldClient != null)
                {
                    Program.ClientToConnection[oldClient].MobDreamObject = null;
                }
            }
        }
예제 #2
0
        public override DreamValue OnVariableGet(DreamObject dreamObject, string variableName, DreamValue variableValue)
        {
            if (variableName == "key" || variableName == "ckey")
            {
                DreamObject clientObject = dreamObject.GetVariable("client").GetValueAsDreamObject();

                if (clientObject != null && clientObject.IsSubtypeOf(DreamPath.Client))
                {
                    return(clientObject.GetVariable(variableName));
                }
                else
                {
                    return(DreamValue.Null);
                }
            }
            else if (variableName == "client")
            {
                DreamConnection connection = Program.DreamServer.GetConnectionFromMob(dreamObject);

                if (connection != null && connection.ClientDreamObject != null)
                {
                    return(new DreamValue(connection.ClientDreamObject));
                }
                else
                {
                    return(DreamValue.Null);
                }
            }
            else
            {
                return(base.OnVariableGet(dreamObject, variableName, variableValue));
            }
        }
예제 #3
0
        public override DreamValue OperatorOutput(DreamValue a, DreamValue b)
        {
            DreamObject     client     = a.GetValueAsDreamObjectOfType(DreamPath.Mob).GetVariable("client").GetValueAsDreamObjectOfType(DreamPath.Client);
            DreamConnection connection = Program.ClientToConnection[client];

            connection.OutputDreamValue(b);
            return(new DreamValue(0));
        }
예제 #4
0
        public override DreamValue OperatorOutput(DreamValue a, DreamValue b)
        {
            DreamObject     client     = a.GetValueAsDreamObjectOfType(DreamPath.Mob).GetVariable("client").GetValueAsDreamObjectOfType(DreamPath.Client);
            DreamConnection connection = _dreamManager.GetConnectionFromClient(client);

            connection.OutputDreamValue(b);
            return(new DreamValue(0));
        }