public override void UpdateLights(EffectFrame frame) { Queue <EffectLayer> layers = new Queue <EffectLayer>(); EffectLayer bitmap_layer = new EffectLayer("Overwatch - Bitmap"); Devices.DeviceKeys[] allkeys = Enum.GetValues(typeof(Devices.DeviceKeys)).Cast <Devices.DeviceKeys>().ToArray(); foreach (var key in allkeys) { if (key == Devices.DeviceKeys.LOGO && logo.Length == 4) { int a, r, g, b; b = logo[0]; g = logo[1]; r = logo[2]; a = logo[3]; bitmap_layer.Set(key, GetBoostedColor(Color.FromArgb(a, r, g, b))); } else if (key == Devices.DeviceKeys.Peripheral && peripheral.Length == 4) { int a, r, g, b; b = peripheral[0]; g = peripheral[1]; r = peripheral[2]; a = peripheral[3]; bitmap_layer.Set(key, GetBoostedColor(Color.FromArgb(a, r, g, b))); } else { Devices.Logitech.Logitech_keyboardBitmapKeys logi_key = Devices.Logitech.LogitechDevice.ToLogitechBitmap(key); if (logi_key != Devices.Logitech.Logitech_keyboardBitmapKeys.UNKNOWN) { int a, r, g, b; b = bitmap[(int)logi_key]; g = bitmap[(int)logi_key + 1]; r = bitmap[(int)logi_key + 2]; a = bitmap[(int)logi_key + 3]; bitmap_layer.Set(key, GetBoostedColor(Color.FromArgb(a, r, g, b))); } } } layers.Enqueue(bitmap_layer); //Scripts Global.Configuration.ApplicationProfiles[profilename].UpdateEffectScripts(layers, _game_state); frame.AddLayers(layers.ToArray()); }
public override EffectLayer Render(IGameState gamestate) { if (!(gamestate is GameState_Wrapper)) { return(new EffectLayer()); } Queue <EffectLayer> layers = new Queue <EffectLayer>(); EffectLayer colorfill_layer = new EffectLayer("Aurora Wrapper - Color Fill", GetBoostedColor(last_fill_color)); layers.Enqueue(colorfill_layer); EffectLayer bitmap_layer = new EffectLayer("Aurora Wrapper - Bitmap"); Devices.DeviceKeys[] allkeys = Enum.GetValues(typeof(Devices.DeviceKeys)).Cast <Devices.DeviceKeys>().ToArray(); foreach (var key in allkeys) { if (extra_keys.ContainsKey(key)) { bitmap_layer.Set(key, GetBoostedColor(extra_keys[key])); } else { Devices.Logitech.Logitech_keyboardBitmapKeys logi_key = Devices.Logitech.LogitechDevice.ToLogitechBitmap(key); if (logi_key != Devices.Logitech.Logitech_keyboardBitmapKeys.UNKNOWN && bitmap.Length > 0) { bitmap_layer.Set(key, GetBoostedColor(Utils.ColorUtils.GetColorFromInt(bitmap[(int)logi_key / 4]))); } } } layers.Enqueue(bitmap_layer); EffectLayer effects_layer = new EffectLayer("Aurora Wrapper - Effects"); Devices.DeviceKeys[] effect_keys = key_effects.Keys.ToArray(); long currentTime = Utils.Time.GetMillisecondsSinceEpoch(); foreach (var key in effect_keys) { if (key_effects[key].duration != 0 && key_effects[key].timeStarted + key_effects[key].duration <= currentTime) { key_effects.Remove(key); } else { if (key_effects[key] is LogiFlashSingleKey) { effects_layer.Set((key_effects[key] as LogiFlashSingleKey).key, GetBoostedColor((key_effects[key] as LogiFlashSingleKey).GetColor(currentTime - (key_effects[key] as LogiFlashSingleKey).timeStarted))); } else if (key_effects[key] is LogiPulseSingleKey) { effects_layer.Set((key_effects[key] as LogiPulseSingleKey).key, GetBoostedColor((key_effects[key] as LogiPulseSingleKey).GetColor(currentTime - (key_effects[key] as LogiPulseSingleKey).timeStarted))); } else { effects_layer.Set((key_effects[key] as KeyEffect).key, GetBoostedColor((key_effects[key] as KeyEffect).GetColor(currentTime - (key_effects[key] as KeyEffect).timeStarted))); } } } layers.Enqueue(effects_layer); EffectLayer entire_effect_layer = new EffectLayer("Aurora Wrapper - EntireKB effect"); if (current_effect != null) { if (current_effect is LogiFlashLighting) { (current_effect as LogiFlashLighting).SetEffect(entire_effect_layer, currentTime - (current_effect as LogiFlashLighting).timeStarted); } else if (current_effect is LogiPulseLighting) { (current_effect as LogiPulseLighting).SetEffect(entire_effect_layer, currentTime - (current_effect as LogiPulseLighting).timeStarted); } else { current_effect.SetEffect(entire_effect_layer, currentTime - current_effect.timeStarted); } } layers.Enqueue(entire_effect_layer); EffectLayer[] layersArray = layers.ToArray(); EffectLayer finalLayer = layersArray[0]; for (int i = 1; i < layersArray.Length; i++) { finalLayer += layersArray[i]; } return(finalLayer); }
public override EffectLayer Render(IGameState gamestate) { if (!(gamestate is GameState_Wrapper)) { return(new EffectLayer()); } Queue <EffectLayer> layers = new Queue <EffectLayer>(); EffectLayer colorfill_layer = new EffectLayer("Aurora Wrapper - Color Fill", GetBoostedColor(last_fill_color)); layers.Enqueue(colorfill_layer); EffectLayer bitmap_layer = new EffectLayer("Aurora Wrapper - Bitmap"); Devices.DeviceKeys[] allkeys = Enum.GetValues(typeof(Devices.DeviceKeys)).Cast <Devices.DeviceKeys>().ToArray(); foreach (var key in allkeys) { // This checks if a key is already being cloned over and thus should be prevented from being re-set by the // normal wrapper. Fixes issues with some clones not working. Thanks to @Gurjot95 for finding it :) if (Properties.CloningMap.Values.Any(sequence => sequence.keys.Contains(key))) { continue; } if (extra_keys.ContainsKey(key)) { bitmap_layer.Set(key, GetBoostedColor(extra_keys[key])); // Do the key cloning if (Properties.CloningMap.ContainsKey(key)) { bitmap_layer.Set(Properties.CloningMap[key], GetBoostedColor(extra_keys[key])); } } else { Devices.Logitech.Logitech_keyboardBitmapKeys logi_key = Devices.Logitech.LogitechDevice.ToLogitechBitmap(key); if (logi_key != Devices.Logitech.Logitech_keyboardBitmapKeys.UNKNOWN && bitmap.Length > 0) { var color = GetBoostedColor(Utils.ColorUtils.GetColorFromInt(bitmap[(int)logi_key / 4])); bitmap_layer.Set(key, color); // Key cloning if (Properties.CloningMap.ContainsKey(key)) { bitmap_layer.Set(Properties.CloningMap[key], color); } } } } layers.Enqueue(bitmap_layer); EffectLayer effects_layer = new EffectLayer("Aurora Wrapper - Effects"); Devices.DeviceKeys[] effect_keys = key_effects.Keys.ToArray(); long currentTime = Utils.Time.GetMillisecondsSinceEpoch(); foreach (var key in effect_keys) { if (key_effects[key].duration != 0 && key_effects[key].timeStarted + key_effects[key].duration <= currentTime) { key_effects.Remove(key); } else { if (key_effects[key] is LogiFlashSingleKey) { effects_layer.Set((key_effects[key] as LogiFlashSingleKey).key, GetBoostedColor((key_effects[key] as LogiFlashSingleKey).GetColor(currentTime - (key_effects[key] as LogiFlashSingleKey).timeStarted))); } else if (key_effects[key] is LogiPulseSingleKey) { effects_layer.Set((key_effects[key] as LogiPulseSingleKey).key, GetBoostedColor((key_effects[key] as LogiPulseSingleKey).GetColor(currentTime - (key_effects[key] as LogiPulseSingleKey).timeStarted))); } else { effects_layer.Set((key_effects[key] as KeyEffect).key, GetBoostedColor((key_effects[key] as KeyEffect).GetColor(currentTime - (key_effects[key] as KeyEffect).timeStarted))); } } } layers.Enqueue(effects_layer); EffectLayer entire_effect_layer = new EffectLayer("Aurora Wrapper - EntireKB effect"); if (current_effect != null) { if (current_effect is LogiFlashLighting) { (current_effect as LogiFlashLighting).SetEffect(entire_effect_layer, currentTime - (current_effect as LogiFlashLighting).timeStarted); } else if (current_effect is LogiPulseLighting) { (current_effect as LogiPulseLighting).SetEffect(entire_effect_layer, currentTime - (current_effect as LogiPulseLighting).timeStarted); } else { current_effect.SetEffect(entire_effect_layer, currentTime - current_effect.timeStarted); } } layers.Enqueue(entire_effect_layer); EffectLayer[] layersArray = layers.ToArray(); EffectLayer finalLayer = layersArray[0]; for (int i = 1; i < layersArray.Length; i++) { finalLayer += layersArray[i]; } return(finalLayer); }
internal virtual void UpdateWrapperLights(EffectFrame frame) { Queue <EffectLayer> layers = new Queue <EffectLayer>(); EffectLayer colorfill_layer = new EffectLayer("Aurora Wrapper - Color Fill", GetBoostedColor(last_fill_color)); layers.Enqueue(colorfill_layer); EffectLayer bitmap_layer = new EffectLayer("Aurora Wrapper - Bitmap"); Devices.DeviceKeys[] allkeys = Enum.GetValues(typeof(Devices.DeviceKeys)).Cast <Devices.DeviceKeys>().ToArray(); foreach (var key in allkeys) { if (key == Devices.DeviceKeys.LOGO) { bitmap_layer.Set(key, GetBoostedColor(logo)); } else if (key == Devices.DeviceKeys.Peripheral) { bitmap_layer.Set(key, GetBoostedColor(peripheral)); } else if (key == Devices.DeviceKeys.G1) { bitmap_layer.Set(key, GetBoostedColor(g1)); } else if (key == Devices.DeviceKeys.G2) { bitmap_layer.Set(key, GetBoostedColor(g2)); } else if (key == Devices.DeviceKeys.G3) { bitmap_layer.Set(key, GetBoostedColor(g3)); } else if (key == Devices.DeviceKeys.G4) { bitmap_layer.Set(key, GetBoostedColor(g4)); } else if (key == Devices.DeviceKeys.G5) { bitmap_layer.Set(key, GetBoostedColor(g5)); } else { Devices.Logitech.Logitech_keyboardBitmapKeys logi_key = Devices.Logitech.LogitechDevice.ToLogitechBitmap(key); if (logi_key != Devices.Logitech.Logitech_keyboardBitmapKeys.UNKNOWN && bitmap.Length > 0) { bitmap_layer.Set(key, GetBoostedColor(Utils.ColorUtils.GetColorFromInt(bitmap[(int)logi_key / 4]))); } } } layers.Enqueue(bitmap_layer); EffectLayer effects_layer = new EffectLayer("Aurora Wrapper - Effects"); Devices.DeviceKeys[] effect_keys = key_effects.Keys.ToArray(); long currentTime = Utils.Time.GetMillisecondsSinceEpoch(); foreach (var key in effect_keys) { if (key_effects[key].duration != 0 && key_effects[key].timeStarted + key_effects[key].duration <= currentTime) { key_effects.Remove(key); } else { if (key_effects[key] is LogiFlashSingleKey) { effects_layer.Set((key_effects[key] as LogiFlashSingleKey).key, GetBoostedColor((key_effects[key] as LogiFlashSingleKey).GetColor(currentTime - (key_effects[key] as LogiFlashSingleKey).timeStarted))); } else if (key_effects[key] is LogiPulseSingleKey) { effects_layer.Set((key_effects[key] as LogiPulseSingleKey).key, GetBoostedColor((key_effects[key] as LogiPulseSingleKey).GetColor(currentTime - (key_effects[key] as LogiPulseSingleKey).timeStarted))); } else { effects_layer.Set((key_effects[key] as KeyEffect).key, GetBoostedColor((key_effects[key] as KeyEffect).GetColor(currentTime - (key_effects[key] as KeyEffect).timeStarted))); } } } layers.Enqueue(effects_layer); EffectLayer entire_effect_layer = new EffectLayer("Aurora Wrapper - EntireKB effect"); if (current_effect != null) { if (current_effect is LogiFlashLighting) { (current_effect as LogiFlashLighting).SetEffect(entire_effect_layer, currentTime - (current_effect as LogiFlashLighting).timeStarted); } else if (current_effect is LogiPulseLighting) { (current_effect as LogiPulseLighting).SetEffect(entire_effect_layer, currentTime - (current_effect as LogiPulseLighting).timeStarted); } else { current_effect.SetEffect(entire_effect_layer, currentTime - current_effect.timeStarted); } } layers.Enqueue(entire_effect_layer); frame.AddLayers(layers.ToArray()); }
internal virtual void UpdateWrapperLights(EffectFrame frame) { Queue <EffectLayer> layers = new Queue <EffectLayer>(); EffectLayer colorfill_layer = new EffectLayer("Aurora Wrapper - Color Fill", last_fill_color); layers.Enqueue(colorfill_layer); EffectLayer bitmap_layer = new EffectLayer("Aurora Wrapper - Bitmap"); Devices.DeviceKeys[] allkeys = Enum.GetValues(typeof(Devices.DeviceKeys)).Cast <Devices.DeviceKeys>().ToArray(); foreach (var key in allkeys) { if (key == Devices.DeviceKeys.LOGO && logo.Length == 4) { bitmap_layer.Set(key, Color.FromArgb(logo[3], logo[2], logo[1], logo[0])); } else if (key == Devices.DeviceKeys.Peripheral && peripheral.Length == 4) { bitmap_layer.Set(key, Color.FromArgb(peripheral[3], peripheral[2], peripheral[1], peripheral[0])); } else if (key == Devices.DeviceKeys.G1 && g1.Length == 4) { bitmap_layer.Set(key, Color.FromArgb(g1[3], g1[2], g1[1], g1[0])); } else if (key == Devices.DeviceKeys.G2 && g2.Length == 4) { bitmap_layer.Set(key, Color.FromArgb(g2[3], g2[2], g2[1], g2[0])); } else if (key == Devices.DeviceKeys.G3 && g3.Length == 4) { bitmap_layer.Set(key, Color.FromArgb(g3[3], g3[2], g3[1], g3[0])); } else if (key == Devices.DeviceKeys.G4 && g4.Length == 4) { bitmap_layer.Set(key, Color.FromArgb(g4[3], g4[2], g4[1], g4[0])); } else if (key == Devices.DeviceKeys.G5 && g5.Length == 4) { bitmap_layer.Set(key, Color.FromArgb(g5[3], g5[2], g5[1], g5[0])); } else { Devices.Logitech.Logitech_keyboardBitmapKeys logi_key = Devices.Logitech.LogitechDevice.ToLogitechBitmap(key); if (logi_key != Devices.Logitech.Logitech_keyboardBitmapKeys.UNKNOWN) { int a, r, g, b; b = bitmap[(int)logi_key]; g = bitmap[(int)logi_key + 1]; r = bitmap[(int)logi_key + 2]; a = bitmap[(int)logi_key + 3]; bitmap_layer.Set(key, Color.FromArgb(a, r, g, b)); } } } layers.Enqueue(bitmap_layer); EffectLayer effects_layer = new EffectLayer("Aurora Wrapper - Effects"); Devices.DeviceKeys[] effect_keys = key_effects.Keys.ToArray(); long currentTime = Utils.Time.GetMillisecondsSinceEpoch(); foreach (var key in effect_keys) { if (key_effects[key].duration != 0 && key_effects[key].timeStarted + key_effects[key].duration <= currentTime) { key_effects.Remove(key); } else { if (key_effects[key] is LogiFlashSingleKey) { effects_layer.Set((key_effects[key] as LogiFlashSingleKey).key, (key_effects[key] as LogiFlashSingleKey).GetColor(currentTime - (key_effects[key] as LogiFlashSingleKey).timeStarted)); } else if (key_effects[key] is LogiPulseSingleKey) { effects_layer.Set((key_effects[key] as LogiPulseSingleKey).key, (key_effects[key] as LogiPulseSingleKey).GetColor(currentTime - (key_effects[key] as LogiPulseSingleKey).timeStarted)); } else { effects_layer.Set((key_effects[key] as KeyEffect).key, (key_effects[key] as KeyEffect).GetColor(currentTime - (key_effects[key] as KeyEffect).timeStarted)); } } } layers.Enqueue(effects_layer); EffectLayer entire_effect_layer = new EffectLayer("Aurora Wrapper - EntireKB effect"); if (current_effect != null) { if (current_effect is LogiFlashLighting) { (current_effect as LogiFlashLighting).SetEffect(entire_effect_layer, currentTime - (current_effect as LogiFlashLighting).timeStarted); } else if (current_effect is LogiPulseLighting) { (current_effect as LogiPulseLighting).SetEffect(entire_effect_layer, currentTime - (current_effect as LogiPulseLighting).timeStarted); } else { current_effect.SetEffect(entire_effect_layer, currentTime - current_effect.timeStarted); } } layers.Enqueue(entire_effect_layer); frame.AddLayers(layers.ToArray()); }