private void keyboard_switch_timeout_selected_footballer() { int tar = -1; if (Input.GetKey(KeyCode.Alpha1)) { tar = 0; } if (Input.GetKey(KeyCode.Alpha2)) { tar = 1; } if (Input.GetKey(KeyCode.Alpha3)) { tar = 2; } if (Input.GetKey(KeyCode.Alpha4)) { tar = 3; } if (Input.GetKey(KeyCode.Alpha5)) { tar = 4; } if (tar != -1 && tar < m_playerTeamFootballers.Count) { m_timeoutSelectedFootballer = m_playerTeamFootballers[tar]; } }
public void sim_update() { Vector3 pre_position = transform.position; Vector2 fvel = Util.vec_scale(_vel, Util.dt_scale); transform.position = Util.vec_add(transform.position, fvel); if (!Main.LevelController.m_ballBounds.OverlapPoint(transform.position)) { transform.position = pre_position; _vel.x *= -0.15f; _vel.y *= -0.15f; } _vz -= 0.05f * Util.dt_scale; _z += _vz; if (_z <= 0) { _z = 0; _vz = Mathf.Abs(_vz) * 0.5f; _vel.x *= 0.5f; _vel.y *= 0.5f; } this.set_ball_z(_z); this._initial_uncatchable_ct -= Util.dt_scale; if (this._initial_uncatchable_ct <= 0 && _z < 50) { for (int i = 0; i < Main.LevelController.m_playerTeamFootballers.Count; i++) { GenericFootballer itr = Main.LevelController.m_playerTeamFootballers[i]; if (itr.can_pickup_ball() && itr.collider_contains(this.GetComponent <CircleCollider2D>())) { Main.LevelController.PickupLooseBall(this, itr); Main.AudioController.PlayEffect("sfx_pickup"); return; } } for (int i = 0; i < Main.LevelController.m_enemyTeamFootballers.Count; i++) { GenericFootballer itr = Main.LevelController.m_enemyTeamFootballers[i]; if (itr.can_pickup_ball() && itr.collider_contains(this.GetComponent <CircleCollider2D>())) { Main.LevelController.PickupLooseBall(this, itr); Main.AudioController.PlayEffect("sfx_pickup"); return; } } } if (_z > 1) { _particle_emit_ct -= 1; if (_particle_emit_ct <= 0) { Main.LevelController.ball_move_particle_at(_ball.transform.position, Util.rad2deg * Mathf.Atan2(_vel.y, _vel.x)); _particle_emit_ct = Util.y_for_point_of_2pt_line(new Vector2(8, 1), new Vector2(2, 5), (new Vector3(_vel.x, _vel.y, _vz)).magnitude); } } }
public void sim_update_bump() { _cannot_stun_ct -= Util.dt_scale; for (int i = 0; i < Main.LevelController.m_playerTeamFootballers.Count; i++) { GenericFootballer itr = Main.LevelController.m_playerTeamFootballers[i]; if (itr != this) { this.check_bump_with_target(itr); } } for (int i = 0; i < Main.LevelController.m_enemyTeamFootballers.Count; i++) { GenericFootballer itr = Main.LevelController.m_enemyTeamFootballers[i]; if (itr != this) { this.check_bump_with_target(itr); } } Vector3 imgpos = _renderer.transform.localPosition; _stunned_upwards_vel -= 0.085f * Util.dt_scale; imgpos.y += _stunned_upwards_vel; if (imgpos.y <= 0) { imgpos.y = 0; _stunned_upwards_vel = Mathf.Abs(_stunned_upwards_vel) * 0.5f; } _renderer.transform.localPosition = imgpos; }
public BotBase GetBallOwner() { GenericFootballer footballer = Main.LevelController.nullableCurrentFootballerWithBall(); if (footballer != null) { return(footballer.GetComponent <BotBase>()); } return(null); }
public bool footballer_has_ball(GenericFootballer tar) { if (get_footballer_team(tar) == Team.PlayerTeam) { return(m_playerTeamFootballersWithBall.Contains(tar)); } else { return(m_enemyTeamFootballersWithBall.Contains(tar)); } }
public Team get_footballer_team(GenericFootballer tar) { if (tar == null) { return(Team.None); } if (m_playerTeamFootballers.Contains(tar)) { return(Team.PlayerTeam); } if (m_enemyTeamFootballers.Contains(tar)) { return(Team.EnemyTeam); } return(Team.None); }
private void DoMatchOpeningSequence() { m_currentMode = LevelControllerMode.Opening; _countdown_ct = 0; // hide cursor //m_mouseTargetIcon.SetActive(false); List <BotBase> allBots = new List <BotBase>( m_playerTeam.TeamMembers.Count + m_enemyTeam.TeamMembers.Count); allBots.AddRange(m_playerTeam.TeamMembers); allBots.AddRange(m_enemyTeam.TeamMembers); for (int i = 0; i < allBots.Count; i++) { BotBase bot = allBots[i]; GenericFootballer footballer = bot.GetComponent <GenericFootballer>(); footballer.force_play_animation(FootballerAnimResource.ANIM_RUN); footballer.force_facing_direction(bot.HomePosition.x >= bot.transform.position.x ? true : false); float d = Vector3.Distance(bot.transform.position, bot.HomePosition); float r = Util.rand_range(200.0f, 220.0f); float t = d / r; _countdown_ct = Math.Max(_countdown_ct, t); _last_countdown_ct = _countdown_ct; LTDescr animDesc = LeanTween.move( bot.gameObject, bot.HomePosition, t) .setEase(LeanTweenType.linear); int animId = animDesc.id; animDesc.setOnComplete(() => { footballer.force_play_animation(FootballerAnimResource.ANIM_IDLE); footballer.force_facing_direction(bot.Team == Team.PlayerTeam ? true : false); m_matchOpeningAnimIds.Remove(animId); }); m_matchOpeningAnimIds.Add(animId); } { m_topReferee.transform.position = Main.FieldController.GetFieldCenter(); CreateLooseBall(m_topReferee.transform.position, Vector3.zero); } }
private BotBase CreateFootballer(TeamBase team, Vector3 pos, FootballerAnimResource anims) { GameObject neu_obj = Util.proto_clone(proto_genericFootballer); GenericFootballer rtv = neu_obj.GetComponent <GenericFootballer>(); rtv.transform.position = pos; rtv.sim_initialize(anims); if (team.Team == Team.PlayerTeam) { m_playerTeamFootballers.Add(rtv); } else { m_enemyTeamFootballers.Add(rtv); } return(neu_obj.GetComponent <BotBase>()); }
public Vector3 currentBallPosition() { GenericFootballer ball_holder = nullableCurrentFootballerWithBall(); if (ball_holder != null) { return(ball_holder.transform.position); } else { if (m_looseBalls.Count > 0) { return(m_looseBalls[0].transform.position); } return(Vector3.zero); } }
public void PickupLooseBall(LooseBall looseball, GenericFootballer tar) { m_looseBalls.Remove(looseball); this.catch_particle_at(looseball.transform.position); if (this.get_footballer_team(tar) == Team.PlayerTeam) { m_playerTeamFootballersWithBall.Add(tar); tar._current_mode = GenericFootballer.GenericFootballerMode.Idle; tar.set_wait_delay(15); } else { this.m_enemyTeamFootballersWithBall.Add(tar); tar._current_mode = GenericFootballer.GenericFootballerMode.Idle; tar.set_wait_delay(15); } // ai msg { BotBase new_ball_owner = tar.GetComponent <BotBase>(); if (_prev_ball_owner != null) { _prev_ball_owner.Msg_LostBall(); } new_ball_owner.Msg_GotBall(); _prev_ball_owner = new_ball_owner; } if (__commentary_last_team_to_own_ball == Team.PlayerTeam) { if (__commentary_last_team_to_own_ball == this.get_footballer_team(tar)) { m_commentaryManager.notify_event(CommentaryEvent.PassComplete); } else if (__commentary_last_team_to_own_ball != this.get_footballer_team(tar) && new Vector3(looseball._vel.x, looseball._vel.y, looseball._vz).magnitude > 1) { m_commentaryManager.notify_event(CommentaryEvent.Interception, true); } } Destroy(looseball.gameObject); }
private void check_bump_with_target(GenericFootballer tar) { if (this.collider_contains(tar.GetComponent <CircleCollider2D>()) && this.get_calculated_velocity().magnitude > 0) { Vector2 calc_vel_dir = this.get_calculated_velocity().normalized; float mag = Mathf.Max(this.get_calculated_velocity().magnitude, tar.get_calculated_velocity().magnitude); Vector2 bump_vel = calc_vel_dir * mag; Vector3 hit_spot = new Vector3( (transform.position.x + tar.transform.position.x) / 2, (transform.position.y + tar.transform.position.y) / 2, (transform.position.z + tar.transform.position.z) / 2 ); if (Main.LevelController.get_footballer_team(this) == Team.PlayerTeam) { Main.LevelController.m_commentaryManager.notify_event(CommentaryEvent.Block); } this.apply_bump(Util.vec_scale(bump_vel, -1), hit_spot, true); tar.apply_bump(bump_vel, hit_spot); } }
private void check_bump_with_target(GenericFootballer tar) { if (this.collider_contains(tar.GetComponent<CircleCollider2D>()) && this.get_calculated_velocity().magnitude > 0) { Vector2 calc_vel_dir = this.get_calculated_velocity().normalized; float mag = Mathf.Max(this.get_calculated_velocity().magnitude,tar.get_calculated_velocity().magnitude); Vector2 bump_vel = calc_vel_dir * mag; Vector3 hit_spot = new Vector3( (transform.position.x + tar.transform.position.x)/2, (transform.position.y + tar.transform.position.y)/2, (transform.position.z + tar.transform.position.z)/2 ); if (Main.LevelController.get_footballer_team(this) == Team.PlayerTeam) { Main.LevelController.m_commentaryManager.notify_event(CommentaryEvent.Block); } this.apply_bump(Util.vec_scale(bump_vel,-1),hit_spot,true); tar.apply_bump(bump_vel,hit_spot); } }
public void Update() { if (Main.PanelManager.CurrentPanelId != PanelIds.Game) { return; } this.update_mouse_point(); m_commentaryManager.i_update(); float mouse_target_anim_speed = 0.3f; if (m_currentMode == LevelControllerMode.GoalZoomOut) { UiPanelGame.inst._fadein.set_target_alpha(1); Main.GameCamera.SetTargetPos(_goalzoomoutfocuspos); Main.GameCamera.SetTargetZoom(300); m_enemyGoal.spawn_confetti(); m_particles.i_update(this); if (UiPanelGame.inst._fadein.is_transition_finished()) { this.ResetLevel(); Main.PanelManager.ChangeCurrentPanel(PanelIds.Tv); } } else if (m_currentMode == LevelControllerMode.GamePlay) { Team ball_owner_team = this.get_footballer_team(this.nullableCurrentFootballerWithBall()); if (ball_owner_team != Team.None) { __commentary_last_team_to_own_ball = ball_owner_team; } _time_remaining = Math.Max(0, _time_remaining - TimeSpan.FromSeconds(Time.deltaTime).Ticks); if (_time_remaining <= 0) { m_currentMode = LevelControllerMode.GoalZoomOut; Main._current_repeat_reason = RepeatReason.Timeout; UiPanelGame.inst.show_popup_message(2); _goalzoomoutfocuspos = Main.GameCamera.GetCurrentPosition(); return; } m_particles.i_update(this); if (m_playerTeamFootballersWithBall.Count > 0) { Main.GameCamera.SetTargetPos(m_playerTeamFootballersWithBall[0].transform.position); if (Input.GetMouseButton(0)) { Main.GameCamera.SetTargetZoom(600); } else { Main.GameCamera.SetTargetZoom(500); } if (Input.GetMouseButton(0)) { Main.GameCamera.SetManualOffset(new Vector3(0, 0, 0)); } else { Main.GameCamera.SetManualOffset(new Vector3(150, 0, 0)); } } else { Main.GameCamera.SetTargetPos(this.GetLastMousePointInBallBounds()); Main.GameCamera.SetTargetZoom(600); Main.GameCamera.SetManualOffset(new Vector3(0, 0, 0)); } mouse_target_anim_speed = 2.0f; mouse_target_icon_set_alpha(1.0f); //m_mouseTargetIcon.SetActive(true); Vector3 mouse_pt = GetLastMousePointInBallBounds(); m_mouseTargetIcon.transform.position = mouse_pt; m_mouseTargetIcon.transform.localScale = Util.valv(50.0f); for (int i = m_looseBalls.Count - 1; i >= 0; i--) { LooseBall itr = this.m_looseBalls[i]; itr.sim_update(); } for (int i = this.m_playerTeamFootballers.Count - 1; i >= 0; i--) { GenericFootballer itr = this.m_playerTeamFootballers[i]; itr.sim_update(); } for (int i = 0; i < this.m_enemyTeamFootballers.Count; i++) { GenericFootballer itr = this.m_enemyTeamFootballers[i]; itr.sim_update(); } if (Input.GetKey(KeyCode.Space)) { for (int i = 0; i < this.m_playerTeamFootballers.Count; i++) { GenericFootballer itr = this.m_playerTeamFootballers[i]; itr.timeout_start(); } m_currentMode = LevelControllerMode.Timeout; m_timeoutSelectedFootballer = null; Main.Pause(PauseFlags.TimeOut); m_commentaryManager.notify_tutorial_just_pressed_space(); Main.AudioController.PlayEffect("sfx_pause"); UiPanelGame.inst.bgm_audio_set_paused_mode(true); } for (int i = m_looseBalls.Count - 1; i >= 0; i--) { LooseBall itr = this.m_looseBalls[i]; if (m_enemyGoal.box_collider().OverlapPoint(itr.transform.position)) { this.blood_anim_at(itr.transform.position); m_looseBalls.Remove(itr); this.enemy_goal_score(itr.transform.position); Destroy(itr.gameObject); m_enemyGoal.play_eat_anim(40); Main.AudioController.PlayEffect("sfx_checkpoint"); } if (m_playerGoal.box_collider().OverlapPoint(itr.transform.position)) { this.blood_anim_at(itr.transform.position); m_looseBalls.Remove(itr); this.player_goal_score(itr.transform.position); Destroy(itr.gameObject); m_playerGoal.play_eat_anim(40); UiPanelGame.inst._chats.clear_messages(); Main.AudioController.PlayEffect("sfx_checkpoint"); } } m_bottomReferee.sim_update(); m_topReferee.sim_update(); } else if (m_currentMode == LevelControllerMode.Timeout) { Vector3 screen = Main.GameCamera.GetComponent <Camera>().WorldToScreenPoint(this.GetLastMousePointInBallBounds()); screen.z = 0; Vector3 mouse_to_center_delta = Util.vec_sub( screen, new Vector2(Screen.width / 2, Screen.height / 2)); float mmouse_move_rad = (Screen.width + Screen.height) / 2.0f * 0.25f; if (mouse_to_center_delta.magnitude > mmouse_move_rad) { Vector3 n_mouse_to_center_delta = mouse_to_center_delta.normalized; Vector3 tar_delta = Util.vec_scale(n_mouse_to_center_delta, (mouse_to_center_delta.magnitude - mmouse_move_rad) * 0.3f); Main.GameCamera.SetTargetPos(Util.vec_add(Main.GameCamera.GetCurrentPosition(), tar_delta)); } else { Main.GameCamera.SetTargetPositionToCurrent(); } Main.GameCamera.SetManualOffset(new Vector3(0, 0, 0)); Main.GameCamera.SetTargetZoom(800); Vector3 mouse_pt = GetLastMousePointInBallBounds(); GenericFootballer select_tar = this.IsPointTouchFootballer(mouse_pt, m_playerTeamFootballers); if (!Input.GetMouseButton(0) && select_tar != null && select_tar.can_take_commands()) { mouse_target_icon_set_alpha(0.4f); //m_mouseTargetIcon.SetActive(false); select_tar.SetSelectedForAFrame(); } else { mouse_target_icon_set_alpha(1.0f); //m_mouseTargetIcon.SetActive(true); } m_mouseTargetIcon.transform.position = mouse_pt; m_mouseTargetIcon.transform.localScale = Util.valv(75.0f); for (int i = 0; i < this.m_playerTeamFootballers.Count; i++) { GenericFootballer itr = this.m_playerTeamFootballers[i]; itr.timeout_update(); } keyboard_switch_timeout_selected_footballer(); Vector2 click_pt; if (this.IsClickAndPointDown(out click_pt)) { GenericFootballer clicked_footballer = IsPointTouchFootballer(click_pt, m_playerTeamFootballers); if (clicked_footballer != null) { m_timeoutSelectedFootballer = clicked_footballer; } } else if (this.IsClickAndPoint(out click_pt)) { if (m_timeoutSelectedFootballer != null && !this.footballer_has_ball(m_timeoutSelectedFootballer)) { m_commentaryManager.notify_tutorial_command_issued(); click_pt = this.point_to_within_goallines_point(m_timeoutSelectedFootballer.transform.position, click_pt); m_timeoutSelectedFootballer.CommandMoveTo(click_pt); } } if (!Input.GetKey(KeyCode.Space)) { m_currentMode = LevelControllerMode.GamePlay; for (int i = 0; i < this.m_playerTeamFootballers.Count; i++) { GenericFootballer itr = this.m_playerTeamFootballers[i]; itr.timeout_end(); } Main.Unpause(PauseFlags.TimeOut); Main.AudioController.PlayEffect("sfx_unpause"); UiPanelGame.inst.bgm_audio_set_paused_mode(false); } } else if (m_currentMode == LevelControllerMode.Opening) { mouse_target_anim_speed = 2.0f; //m_mouseTargetIcon.SetActive(true); mouse_target_icon_set_alpha(1.0f); m_particles.i_update(this); _countdown_ct -= Time.deltaTime; if (_countdown_ct < 4f && _last_countdown_ct > 4f) { UiPanelGame.inst._chats.push_message("3...", 2); Main.AudioController.PlayEffect("sfx_ready"); } else if (_countdown_ct < 3f && _last_countdown_ct > 3f) { UiPanelGame.inst._chats.push_message("2...", 1); Main.AudioController.PlayEffect("sfx_ready"); } else if (_countdown_ct < 2f && _last_countdown_ct > 2f) { UiPanelGame.inst._chats.push_message("1...", 2); Main.AudioController.PlayEffect("sfx_ready"); } _last_countdown_ct = _countdown_ct; Vector3 mouse_pt = GetLastMousePointInBallBounds(); m_mouseTargetIcon.transform.position = mouse_pt; m_mouseTargetIcon.transform.localScale = Util.valv(50.0f); if (m_matchOpeningAnimIds.Count == 0) { m_currentMode = LevelControllerMode.GamePlay; //m_mouseTargetIcon.SetActive(true); // throw it in if (m_looseBalls.Count > 0) { LooseBall lb = m_looseBalls[0]; Vector3 throwDir = m_playerTeamFootballers[0].transform.position - lb.transform.position; throwDir.Normalize(); lb.sim_initialize(lb.transform.position, throwDir * 4.0f); UiPanelGame.inst.show_popup_message(0); Main.AudioController.PlayEffect("sfx_go"); } UiPanelGame.inst._chats.push_message("And the match is underway!", 1); m_enemyTeam.StartMatch(); } } m_mouseTargetIconTheta += mouse_target_anim_speed * Util.dt_scale; Util.transform_set_euler_world(m_mouseTargetIcon.transform, new Vector3(0, 0, m_mouseTargetIconTheta)); }