public override void UpdateLights(EffectFrame frame, GameState new_game_state) { if (new_game_state is GameState_GTA5) { _game_state = new_game_state; GameState_GTA5 newgs = (new_game_state as GameState_GTA5); try { curr_state = newgs.CurrentState; statecol = newgs.StateColor; have_cops = newgs.HasCops; left_siren_color = newgs.LeftSirenColor; right_siren_color = newgs.RightSirenColor; if (have_cops && special_mode != newgs.Command_Data.custom_mode) { siren_keyframe++; } special_mode = newgs.Command_Data.custom_mode; } catch (Exception e) { Global.logger.LogLine("Exception during OnNewGameState. Error: " + e, Logging_Level.Error); Global.logger.LogLine(newgs.ToString(), Logging_Level.None); } UpdateLights(frame); } }
public override EffectLayer Render(IGameState state) { EffectLayer bg_layer = new EffectLayer("GTA 5 - Background"); if (state is GameState_GTA5) { GameState_GTA5 gta5state = state as GameState_GTA5; Color bg_color; switch (gta5state.CurrentState) { case PlayerState.PlayingSP_Trevor: bg_color = Properties.TrevorColor; break; case PlayerState.PlayingSP_Franklin: bg_color = Properties.FranklinColor; break; case PlayerState.PlayingSP_Michael: bg_color = Properties.MichaelColor; break; case PlayerState.PlayingSP_Chop: bg_color = Properties.ChopColor; break; case PlayerState.PlayingMP_Mission: bg_color = Properties.OnlineMissionColor; break; case PlayerState.PlayingMP_HeistFinale: bg_color = Properties.OnlineHeistFinaleColor; break; case PlayerState.PlayingMP_Spectator: bg_color = Properties.OnlineSpectatorColor; break; case PlayerState.PlayingRace_Gold: bg_color = Properties.RaceGoldColor; break; case PlayerState.PlayingRace_Silver: bg_color = Properties.RaceSilverColor; break; case PlayerState.PlayingRace_Bronze: bg_color = Properties.RaceBronzeColor; break; default: bg_color = gta5state.StateColor ?? Properties.DefaultColor; break; } bg_layer.Fill(bg_color); } return(bg_layer); }
public override void ResetGameState() { _game_state = new GameState_GTA5(); }
public override EffectLayer Render(IGameState state) { EffectLayer sirens_layer = new EffectLayer("GTA 5 - Police Sirens"); if (state is GameState_GTA5) { GameState_GTA5 gta5state = state as GameState_GTA5; if (gta5state.HasCops) { if (left_siren_color != gta5state.LeftSirenColor && right_siren_color != gta5state.RightSirenColor) { siren_keyframe++; } left_siren_color = gta5state.LeftSirenColor; right_siren_color = gta5state.RightSirenColor; Color lefts = Properties.LeftSirenColor; Color rights = Properties.RightSirenColor; //Switch sirens switch (Properties.SirenType) { case GTA5_PoliceEffects.Alt_Full: switch (siren_keyframe % 2) { case 1: rights = lefts; break; default: lefts = rights; break; } siren_keyframe = siren_keyframe % 2; if (Properties.PeripheralUse) { sirens_layer.Set(Devices.DeviceKeys.Peripheral, lefts); } break; case GTA5_PoliceEffects.Alt_Half: switch (siren_keyframe % 2) { case 1: rights = lefts; lefts = Color.Black; if (Properties.PeripheralUse) { sirens_layer.Set(Devices.DeviceKeys.Peripheral, rights); } break; default: lefts = rights; rights = Color.Black; if (Properties.PeripheralUse) { sirens_layer.Set(Devices.DeviceKeys.Peripheral, lefts); } break; } siren_keyframe = siren_keyframe % 2; break; case GTA5_PoliceEffects.Alt_Full_Blink: switch (siren_keyframe % 4) { case 2: rights = lefts; break; case 0: lefts = rights; break; default: lefts = Color.Black; rights = Color.Black; break; } siren_keyframe = siren_keyframe % 4; if (Properties.PeripheralUse) { sirens_layer.Set(Devices.DeviceKeys.Peripheral, lefts); } break; case GTA5_PoliceEffects.Alt_Half_Blink: switch (siren_keyframe % 8) { case 6: rights = lefts; lefts = Color.Black; if (Properties.PeripheralUse) { sirens_layer.Set(Devices.DeviceKeys.Peripheral, rights); } break; case 4: rights = lefts; lefts = Color.Black; if (Properties.PeripheralUse) { sirens_layer.Set(Devices.DeviceKeys.Peripheral, rights); } break; case 2: lefts = rights; rights = Color.Black; if (Properties.PeripheralUse) { sirens_layer.Set(Devices.DeviceKeys.Peripheral, lefts); } break; case 0: lefts = rights; rights = Color.Black; if (Properties.PeripheralUse) { sirens_layer.Set(Devices.DeviceKeys.Peripheral, lefts); } break; default: rights = Color.Black; lefts = Color.Black; if (Properties.PeripheralUse) { sirens_layer.Set(Devices.DeviceKeys.Peripheral, lefts); } break; } siren_keyframe = siren_keyframe % 8; break; default: switch (siren_keyframe % 2) { case 1: Color tempc = rights; rights = lefts; lefts = tempc; break; default: break; } siren_keyframe = siren_keyframe % 2; if (Properties.PeripheralUse) { sirens_layer.Set(Devices.DeviceKeys.Peripheral, lefts); } break; } sirens_layer.Set(Properties.LeftSirenSequence, lefts); sirens_layer.Set(Properties.RightSirenSequence, rights); } } return(sirens_layer); }