public void reset_game()
    {
        player_spawned = false;
        game_manager.curr_game_time = game_manager.game_time;
        game_manager.curr_spawn_time = spaw_time;
        adtp = vars.add_time_phase.none;
        gstate = vars.game_state.spawn;

        player1_scrpit_obj.GetComponent<adv_playercontroller>().set_pause_pos();
        player2_scrpit_obj.GetComponent<adv_playercontroller>().set_pause_pos();
        player3_scrpit_obj.GetComponent<adv_playercontroller>().set_pause_pos();
        player4_scrpit_obj.GetComponent<adv_playercontroller>().set_pause_pos();
        GameObject.Find("ball").GetComponent<ball>().set_to_pause_pos();
        game_manager.score_player_1 = 0;
        game_manager.score_player_2 = 0;
        game_manager.score_player_3 = 0;
        game_manager.score_player_4 = 0;
        game_manager.player_count = 0;
        GameObject.Find("UI_MAIN_HOLDER").GetComponent<ingame_gui_manager>().refresh_count_ui();
        asource.Play();
    }
    // Update is called once per frame
    void Update()
    {
        if(gstate == vars.game_state.spawn){
            if( !player_spawned){
                //spawn player
        if (player1_scrpit_obj.GetComponent<adv_playercontroller>().is_playing)
        {
          player1_scrpit_obj.GetComponent<adv_playercontroller>().spawn();
                }

        if (player2_scrpit_obj.GetComponent<adv_playercontroller>().is_playing)
        {
          player2_scrpit_obj.GetComponent<adv_playercontroller>().spawn();
                }
        if (player3_scrpit_obj.GetComponent<adv_playercontroller>().is_playing)
        {
            player3_scrpit_obj.GetComponent<adv_playercontroller>().spawn();
                    }
        if (player4_scrpit_obj.GetComponent<adv_playercontroller>().is_playing)
        {
              player4_scrpit_obj.GetComponent<adv_playercontroller>().spawn();
                        }

                player_spawned = true;
            }

            if(game_manager.curr_spawn_time <= 0.0f){
                gstate  = vars.game_state.playing;
        curr_game_time = game_manager.game_time;
                //spawn ball
                GameObject.Find("ball").GetComponent<ball>().spawn();
                GameObject.Find("UI_MAIN_HOLDER").GetComponent<ingame_gui_manager>().refresh_count_ui();
            }else{game_manager.curr_spawn_time -= Time.deltaTime;}
            }

        if(game_manager.curr_game_time <= 0.0f && gstate == vars.game_state.playing){
            if(game_manager.score_player_1 == game_manager.score_player_2 && //||
               game_manager.score_player_3 == game_manager.score_player_4 && //||
               game_manager.score_player_1 == game_manager.score_player_3 && //||
               game_manager.score_player_1 == game_manager.score_player_4 && //||
               game_manager.score_player_2 == game_manager.score_player_3 && //||
               game_manager.score_player_2 == game_manager.score_player_4){
                if(game_manager.adtp == vars.add_time_phase.none){game_manager.adtp = vars.add_time_phase.addt0; curr_game_time += add_time_0;}
                else if(game_manager.adtp == vars.add_time_phase.addt0){game_manager.adtp = vars.add_time_phase.addt1; curr_game_time += add_time_1;}
                else if(game_manager.adtp == vars.add_time_phase.addt1 && game_manager.curr_game_time <= 0.0f){generate_win_table();}
            }else{generate_win_table();}
        }else{
            game_manager.curr_game_time -= Time.deltaTime;
        }
    }