예제 #1
0
    public bool Equals(KernelConfigModel other)
    {
        if (other == null)
        {
            return(false);
        }

        if (validWorldRanges.Count != other.validWorldRanges.Count)
        {
            return(false);
        }

        for (var i = 0; i < validWorldRanges.Count; i++)
        {
            if (!validWorldRanges[i].Equals(other.validWorldRanges[i]))
            {
                return(false);
            }
        }

        return(this.comms.Equals(other.comms) &&
               this.profiles.Equals(other.profiles) &&
               this.features.Equals(other.features) &&
               this.gifSupported == other.gifSupported &&
               this.tld == other.tld);
    }
예제 #2
0
    public void ParseJsonCorrectly()
    {
        KernelConfigModel model = new KernelConfigModel();
        string            json  = JsonUtility.ToJson(model);

        KernelConfig.i.Set(json);

        Assert.IsTrue(model.Equals(KernelConfig.i.Get()));
    }
    public KernelConfigModel Clone()
    {
        // NOTE: We need to use deep clone
        KernelConfigModel clone = new KernelConfigModel();

        clone.comms    = comms.Clone();
        clone.profiles = profiles.Clone();
        clone.features = features.Clone();
        return(clone);
    }
    public bool Equals(KernelConfigModel other)
    {
        if (other == null)
        {
            return(false);
        }

        return(this.comms.Equals(other.comms) &&
               this.profiles.Equals(other.profiles) &&
               this.features.Equals(other.features) &&
               this.gifSupported == other.gifSupported);
    }
    public void TestFeatureControllerApplyConfig()
    {
        //Arrange
        FeatureController featureController = new FeatureController();
        KernelConfigModel currentConfig     = new KernelConfigModel();

        //Act
        featureController.ApplyFeaturesConfig(currentConfig);

        //Assert
        Assert.AreSame(featureController.GetCurrentConfig(), currentConfig);
    }
 private void Initialize(KernelConfigModel newValue)
 {
     if (initializationPromises?.Count > 0)
     {
         for (int i = 0; i < initializationPromises.Count; i++)
         {
             initializationPromises[i].Resolve(newValue);
         }
         initializationPromises.Clear();
         initializationPromises = null;
     }
     initialized = true;
 }
예제 #7
0
    public KernelConfigModel Clone()
    {
        // NOTE: We need to use deep clone
        KernelConfigModel clone = new KernelConfigModel();

        clone.comms            = comms.Clone();
        clone.profiles         = profiles.Clone();
        clone.features         = features.Clone();
        clone.gifSupported     = gifSupported;
        clone.tld              = tld;
        clone.validWorldRanges = new List <WorldRange>(validWorldRanges);
        return(clone);
    }
예제 #8
0
    public void ParseJsonCorrectly()
    {
        KernelConfigModel model = new KernelConfigModel();

        var worldRange = new WorldRange(-150, -150, 150, 150);

        model.validWorldRanges.Add(worldRange);

        string json = JsonUtility.ToJson(model);

        KernelConfig.i.Set(json);

        Assert.IsTrue(model.Equals(KernelConfig.i.Get()));
    }
예제 #9
0
    /// <summary>
    /// Set a new Kernel Configuration
    /// </summary>
    /// <param name="newValue">New Configuration</param>
    public void Set(KernelConfigModel newValue)
    {
        if (newValue == null)
        {
            return;
        }

        if (!initialized)
        {
            Initialize(newValue);
        }

        if (newValue.Equals(value))
        {
            return;
        }

        var previous = value;

        value = newValue;
        OnChange?.Invoke(value, previous);
    }
 public void OnKernelConfigChanged(KernelConfigModel current, KernelConfigModel previous)
 {
     ApplyFeaturesConfig(current);
 }
 void OnKernelConfigChanged(KernelConfigModel current, KernelConfigModel previous)
 {
     EnableVoiceChat(current.comms.voiceChatEnabled);
 }
예제 #12
0
 private void OnKernelConfigChanged(KernelConfigModel current, KernelConfigModel previous)
 {
     view?.voiceChatButton.SetActive(current.comms.voiceChatEnabled);
 }
 void OnKernelConfigChanged(KernelConfigModel current, KernelConfigModel previous)
 {
     EnableFeature(current.features.enableBuilderInWorld);
 }
예제 #14
0
 private void OnKernelConfigChanged(KernelConfigModel current, KernelConfigModel previous)
 {
     validWorldRanges = current.validWorldRanges;
 }
예제 #15
0
    public void TriggerOnChangeCorrectly()
    {
        const float  commRadiusTestValue             = 1234;
        const float  commRadiusTestValue2            = 5678;
        const bool   voiceChatEnabledTestValue       = false;
        const bool   voiceChatEnabledTestValue2      = true;
        const bool   builderInWorldEnabledTestValue  = false;
        const bool   builderInWorldEnabledTestValue2 = false;
        const string regexTestValue  = "1234";
        const string regexTestValue2 = "5678";

        bool onChangeCalled = false;
        bool onChangePass   = false;

        KernelConfig.i.Set(new KernelConfigModel());

        KernelConfigModel model = new KernelConfigModel()
        {
            comms = new Comms()
            {
                commRadius       = commRadiusTestValue,
                voiceChatEnabled = voiceChatEnabledTestValue
            },
            profiles = new Profiles()
            {
                nameValidCharacterRegex = regexTestValue,
                nameValidRegex          = regexTestValue
            },
            features = new Features()
            {
                enableBuilderInWorld = builderInWorldEnabledTestValue
            },
        };

        KernelConfig.OnKernelConfigChanged onConfigChange = (current, prev) =>
        {
            onChangeCalled = true;
            onChangePass   =
                current.comms.commRadius == commRadiusTestValue &&
                current.comms.voiceChatEnabled == voiceChatEnabledTestValue &&
                current.profiles.nameValidCharacterRegex == regexTestValue &&
                current.profiles.nameValidRegex == regexTestValue;
        };

        KernelConfig.i.OnChange += onConfigChange;

        KernelConfig.i.Set(model);
        Assert.IsTrue(onChangePass);

        onChangeCalled = false;
        onChangePass   = false;

        KernelConfigModel modelUpdateWithSameValues = model.Clone();

        KernelConfig.i.Set(modelUpdateWithSameValues); // this shouldn't trigger onChange cause it has the same values
        Assert.IsFalse(onChangeCalled, "OnChange was called even if the new value is equal to the new one");

        KernelConfig.i.OnChange -= onConfigChange;

        onConfigChange = (current, prev) =>
        {
            onChangeCalled = true;
            onChangePass   =
                current.comms.commRadius == commRadiusTestValue2 && prev.comms.commRadius == commRadiusTestValue &&
                current.comms.voiceChatEnabled == voiceChatEnabledTestValue2 && prev.comms.voiceChatEnabled == voiceChatEnabledTestValue &&
                current.profiles.nameValidCharacterRegex == regexTestValue2 && prev.profiles.nameValidRegex == regexTestValue &&
                current.profiles.nameValidRegex == regexTestValue2 && prev.profiles.nameValidRegex == regexTestValue;
        };

        KernelConfig.i.OnChange += onConfigChange;

        KernelConfig.i.Set(new KernelConfigModel()
        {
            comms = new Comms()
            {
                commRadius       = commRadiusTestValue2,
                voiceChatEnabled = voiceChatEnabledTestValue2
            },
            profiles = new Profiles()
            {
                nameValidCharacterRegex = regexTestValue2,
                nameValidRegex          = regexTestValue2
            },
            features = new Features()
            {
                enableBuilderInWorld = builderInWorldEnabledTestValue2
            },
        });
        Assert.IsTrue(onChangePass);

        KernelConfig.i.OnChange -= onConfigChange;
    }
 public void ApplyFeaturesConfig(KernelConfigModel config)
 {
     HandleFeature <BIWMainController>(config.features.enableBuilderInWorld);
     currentConfig = config;
 }
 private void OnKernelConfigChanged(KernelConfigModel current, KernelConfigModel previous)
 {
     view?.voiceChatButton.SetActive(current.comms.voiceChatEnabled);
     view?.builderInWorldButton.SetActive(current.features.enableBuilderInWorld);
 }