123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- -module(okey_sup).
- -behaviour(supervisor).
- -export([start_link/0, stop/0]).
- -export([init/1, start/0, start_game/3]).
- -define(SERVER, ?MODULE).
- -define(CROWD_STANDALONE_3PL_NUM, 15).
- start() -> supervisor:start({local, ?SERVER}, ?MODULE, []).
- start_link() -> supervisor:start_link({local, ?SERVER}, ?MODULE, []).
- stop() -> exit(?SERVER, shutdown).
- start_game(Mod,Par,GameId) ->
- gas:info(?MODULE,"OKEY SUP START CHILD"),
- Restart = transient,
- Shutdown = 200,
- ChildSpec = {GameId, {Mod, start_link, Par}, Restart, Shutdown, worker, [Mod]},
- supervisor:start_child(?MODULE,ChildSpec).
- init([]) ->
- gas:info(?MODULE,"OKEY SUP STARTED"),
- RestartStrategy = one_for_one,
- MaxRestarts = 1,
- MaxSecondsBetweenRestarts = 600,
- SupFlags = {RestartStrategy, MaxRestarts, MaxSecondsBetweenRestarts},
- Specs = okey_standalone_specs(?CROWD_STANDALONE_3PL_NUM, 3),
- {ok, {SupFlags, Specs}}.
- okey_standalone_specs(GamesNum, VirtUsersPerTable) ->
- VirtualUsers = nsg_crowd_lib:virtual_users(),
- if length(VirtualUsers) < VirtUsersPerTable ->
- [];
- true ->
- F = fun(_) ->
- GameId = game_manager:gen_game_id(),
- GameName = "Okey/Crowd game - " ++ erlang:integer_to_list(GameId),
- Users = nsg_crowd_lib:random_users(VirtUsersPerTable, VirtualUsers),
- %%% Users = [robot, robot, robot],
- TableParams = [
- {table_name, ""},
- {mult_factor, 1},
- {slang_allowed, false},
- {observers_allowed, false},
- {tournament_type, standalone},
- {round_timeout, infinity},
- {set_timeout, infinity},
- {speed, fast},
- {game_type, standard},
- {rounds, 10},
- {reveal_confirmation, true},
- {next_series_confirmation, no_exit},
- {pause_mode, normal},
- {social_actions_enabled, true},
- {gosterge_finish_allowed, undefined}
- ],
- CommonParams = [{speed, fast},
- {rounds,10},
- {double_points, 1},
- {game_mode,standard},
- {slang, false},
- {observers, false},
- {owner,"maxim"}
- ],
- Params = [{game, game_okey},
- {game_mode, standard},
- {game_name, GameName},
- {seats, 4},
- {registrants, Users},
- {initial_points, 0},
- {quota_per_round, 1},
- {kakush_for_winners, 1},
- {kakush_for_loser, 1},
- {win_game_points, 1},
- {mul_factor, 1},
- {table_module, game_okey_table},
- {bot_module, game_okey_bot},
- {bots_replacement_mode, enabled},
- {table_params, TableParams},
- {common_params, CommonParams} %% This data will used for the gproc register
- ],
- {GameId,
- {nsg_trn_standalone, start_link, [GameId, Params]},
- _Restart = permanent, _Shutdown = 2000, worker, [nsg_trn_standalone]}
- end,
- lists:map(F, lists:seq(1, GamesNum))
- end.
|