public override EffectLayer Render(IGameState state) { EffectLayer bg_layer = new EffectLayer("Rocket League - Background"); if (state is GameState_RocketLeague) { GameState_RocketLeague rlstate = state as GameState_RocketLeague; switch (rlstate.Player.Team) { case PlayerTeam.Blue: bg_layer.Fill(Properties.BlueColor); break; case PlayerTeam.Orange: bg_layer.Fill(Properties.OrangeColor); break; default: bg_layer.Fill(Properties.DefaultColor); break; } if (Properties.ShowTeamScoreSplit) { if (rlstate.Match.BlueTeam_Score != 0 || rlstate.Match.OrangeTeam_Score != 0) { int total_score = rlstate.Match.BlueTeam_Score + rlstate.Match.OrangeTeam_Score; LinearGradientBrush the__split_brush = new LinearGradientBrush( new Point(0, 0), new Point(Effects.canvas_biggest, 0), Color.Red, Color.Red); Color[] colors = new Color[] { Properties.OrangeColor, //Orange //Team 1 Properties.OrangeColor, //Orange "Line" Properties.BlueColor, //Blue "Line" //Team 2 Properties.BlueColor //Blue }; int num_colors = colors.Length; float[] blend_positions = new float[num_colors]; if (rlstate.Match.OrangeTeam_Score > rlstate.Match.BlueTeam_Score) { blend_positions[0] = 0.0f; blend_positions[1] = ((float)rlstate.Match.OrangeTeam_Score / (float)total_score) - 0.01f; blend_positions[2] = ((float)rlstate.Match.OrangeTeam_Score / (float)total_score) + 0.01f; blend_positions[3] = 1.0f; } else if (rlstate.Match.OrangeTeam_Score < rlstate.Match.BlueTeam_Score) { blend_positions[0] = 0.0f; blend_positions[1] = (1.0f - ((float)rlstate.Match.BlueTeam_Score / (float)total_score)) - 0.01f; blend_positions[2] = (1.0f - ((float)rlstate.Match.BlueTeam_Score / (float)total_score)) + 0.01f; blend_positions[3] = 1.0f; } else { blend_positions[0] = 0.0f; blend_positions[1] = 0.49f; blend_positions[2] = 0.51f; blend_positions[3] = 1.0f; } ColorBlend color_blend = new ColorBlend(); color_blend.Colors = colors; color_blend.Positions = blend_positions; the__split_brush.InterpolationColors = color_blend; bg_layer.Fill(the__split_brush); } } } return(bg_layer); }
public override void ResetGameState() { _game_state = new GameState_RocketLeague(); }
public override EffectLayer Render(IGameState state) { previoustime = currenttime; currenttime = Utils.Time.GetMillisecondsSinceEpoch(); EffectLayer bg_layer = new EffectLayer("Rocket League - Background"); AnimationMix goal_explosion_mix = new AnimationMix(); Color playerColor = new Color(); Color enemyColor = new Color(); if (state is GameState_RocketLeague) { GameState_RocketLeague rlstate = state as GameState_RocketLeague; switch (rlstate.Player.Team) { case PlayerTeam.Blue: bg_layer.Fill(Properties.BlueColor); playerColor = Properties.BlueColor; enemyColor = Properties.OrangeColor; break; case PlayerTeam.Orange: bg_layer.Fill(Properties.OrangeColor); playerColor = Properties.OrangeColor; enemyColor = Properties.BlueColor; break; default: bg_layer.Fill(Properties.DefaultColor); playerColor = Properties.DefaultColor; enemyColor = Properties.DefaultColor; break; } if (Properties.ShowTeamScoreSplit) { if (rlstate.Match.BlueTeam_Score != 0 || rlstate.Match.OrangeTeam_Score != 0) { int total_score = rlstate.Match.BlueTeam_Score + rlstate.Match.OrangeTeam_Score; LinearGradientBrush the__split_brush = new LinearGradientBrush( new Point(0, 0), new Point(Effects.canvas_biggest, 0), Color.Red, Color.Red); Color[] colors = new Color[] { Properties.OrangeColor, //Orange //Team 1 Properties.OrangeColor, //Orange "Line" Properties.BlueColor, //Blue "Line" //Team 2 Properties.BlueColor //Blue }; int num_colors = colors.Length; float[] blend_positions = new float[num_colors]; if (rlstate.Match.OrangeTeam_Score > rlstate.Match.BlueTeam_Score) { blend_positions[0] = 0.0f; blend_positions[1] = ((float)rlstate.Match.OrangeTeam_Score / (float)total_score) - 0.01f; blend_positions[2] = ((float)rlstate.Match.OrangeTeam_Score / (float)total_score) + 0.01f; blend_positions[3] = 1.0f; } else if (rlstate.Match.OrangeTeam_Score < rlstate.Match.BlueTeam_Score) { blend_positions[0] = 0.0f; blend_positions[1] = (1.0f - ((float)rlstate.Match.BlueTeam_Score / (float)total_score)) - 0.01f; blend_positions[2] = (1.0f - ((float)rlstate.Match.BlueTeam_Score / (float)total_score)) + 0.01f; blend_positions[3] = 1.0f; } else { blend_positions[0] = 0.0f; blend_positions[1] = 0.49f; blend_positions[2] = 0.51f; blend_positions[3] = 1.0f; } ColorBlend color_blend = new ColorBlend(); color_blend.Colors = colors; color_blend.Positions = blend_positions; the__split_brush.InterpolationColors = color_blend; bg_layer.Fill(the__split_brush); } } if (Properties.ShowGoalExplosion) { if (rlstate.Match.YourTeam_LastScore < (rlstate.Player.Team == PlayerTeam.Blue ? rlstate.Match.BlueTeam_Score : rlstate.Match.OrangeTeam_Score)) { goal_explosion_track.SetFrame(0.0f, new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, 0, playerColor, 4) ); goal_explosion_track.SetFrame(1.0f, new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, playerColor, 4) ); goal_explosion_track_1.SetFrame(0.0f, new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, 0, playerColor, 4) ); goal_explosion_track_1.SetFrame(1.0f, new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, playerColor, 4) ); goal_explosion_track_2.SetFrame(0.0f, new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, 0, playerColor, 4) ); goal_explosion_track_2.SetFrame(1.0f, new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, playerColor, 4) ); goal_explosion_track_3.SetFrame(0.0f, new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, 0, playerColor, 4) ); goal_explosion_track_3.SetFrame(1.0f, new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, playerColor, 4) ); goal_explosion_track_4.SetFrame(0.0f, new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, 0, playerColor, 4) ); goal_explosion_track_4.SetFrame(1.0f, new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, playerColor, 4) ); goal_explosion_mix.Clear(); showAnimation_Explosion = true; } } if (Properties.ShowEnemyExplosion) { if (rlstate.Match.EnemyTeam_LastScore < (rlstate.Player.Team == PlayerTeam.Orange ? rlstate.Match.BlueTeam_Score : rlstate.Match.OrangeTeam_Score)) { goal_explosion_track.SetFrame(0.0f, new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, 0, enemyColor, 4) ); goal_explosion_track.SetFrame(1.0f, new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, enemyColor, 4) ); goal_explosion_track_1.SetFrame(0.0f, new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, 0, enemyColor, 4) ); goal_explosion_track_1.SetFrame(1.0f, new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, enemyColor, 4) ); goal_explosion_track_2.SetFrame(0.0f, new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, 0, enemyColor, 4) ); goal_explosion_track_2.SetFrame(1.0f, new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, enemyColor, 4) ); goal_explosion_track_3.SetFrame(0.0f, new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, 0, enemyColor, 4) ); goal_explosion_track_3.SetFrame(1.0f, new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, enemyColor, 4) ); goal_explosion_track_4.SetFrame(0.0f, new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, 0, enemyColor, 4) ); goal_explosion_track_4.SetFrame(1.0f, new AnimationCircle((int)(Effects.canvas_width_center * 0.9), Effects.canvas_height_center, Effects.canvas_biggest / 2.0f, enemyColor, 4) ); goal_explosion_mix.Clear(); showAnimation_Explosion = true; } } if (showAnimation_Explosion) { bg_layer.Fill(Color.FromArgb(0, 0, 0)); goal_explosion_mix.AddTrack(goal_explosion_track); goal_explosion_mix.AddTrack(goal_explosion_track_1); goal_explosion_mix.AddTrack(goal_explosion_track_2); goal_explosion_mix.AddTrack(goal_explosion_track_3); goal_explosion_mix.AddTrack(goal_explosion_track_4); goal_explosion_mix.Draw(bg_layer.GetGraphics(), goalEffect_keyframe); goalEffect_keyframe += (currenttime - previoustime) / 1000.0f; if (goalEffect_keyframe >= goalEffect_animationTime) { showAnimation_Explosion = false; goalEffect_keyframe = 0; } } } return(bg_layer); }