/servers/src/judgment_mapserver.erl
Erlang | 121 lines | 43 code | 17 blank | 61 comment | 1 complexity | 41ca15ba08d24b426b432e9100b7fc9d MD5 | raw file
- %%%-------------------------------------------------------------------
- %%% File : gen_server_template.full
- %%% Author : my name <yourname@localhost.localdomain>
- %%% Description :
- %%%
- %%% Created : 2 Mar 2007 by my name <yourname@localhost.localdomain>
- %%%-------------------------------------------------------------------
- -module(judgment_mapserver).
-
- -behaviour(gen_server).
-
- -define(MAP, {
- -1, -2, -4, -5, -6, -5, -4, -2, -1,
- 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, -3, 0, 0, 0, 0, 0, -3, 0,
- -7, 0, -7, 0, -7, 0, -7, 0, -7,
- 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 7, 0, 7, 0, 7, 0, 7, 0, 7,
- 0, 3, 0, 0, 0, 0, 0, 3, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 1, 2, 4, 5, 6, 5, 4, 2, 1
- }).
-
- %% API
- -export([start_link/1]).
-
- %% gen_server callbacks
- -export([init/1, handle_call/3, handle_cast/2, handle_info/2,
- terminate/2, code_change/3]).
-
- %%====================================================================
- %% API
- %%====================================================================
- %%--------------------------------------------------------------------
- %% Function: start_link() -> {ok,Pid} | ignore | {error,Error}
- %% Description: Starts the server
- %%--------------------------------------------------------------------
- start_link(Name) ->
- gen_server:start_link({local, Name}, ?MODULE, [?MAP], []).
-
- %%====================================================================
- %% gen_server callbacks
- %%====================================================================
-
- %%--------------------------------------------------------------------
- %% Function: init(Args) -> {ok, State} |
- %% {ok, State, Timeout} |
- %% ignore |
- %% {stop, Reason}
- %% Description: Initiates the server
- %%--------------------------------------------------------------------
- init([Map]) ->
- {ok, Map}.
-
- %%--------------------------------------------------------------------
- %% Function: %% handle_call(Request, From, State) -> {reply, Reply, State} |
- %% {reply, Reply, State, Timeout} |
- %% {noreply, State} |
- %% {noreply, State, Timeout} |
- %% {stop, Reason, Reply, State} |
- %% {stop, Reason, State}
- %% Description: Handling call messages
- %%--------------------------------------------------------------------
- handle_call({get_map}, _From, Map) ->
- {reply, Map, Map};
-
- handle_call({try_move, {{XFrom, YFrom}, {XTo, YTo}}}, _From, Map) ->
- L = rules:get_list(Map, {XFrom, YFrom}),
- case [P || P <- L, P =:= {{XFrom, YFrom}, {XTo, YTo}}] of
- [] -> {reply, false, Map};
- [_] -> {reply, true, chessmap:apply(Map, {{XFrom, YFrom}, {XTo, YTo}})}
- end;
-
- handle_call(stop, _From, Map) ->
- {stop, normal, stopped, Map};
-
- handle_call(Request, _From, State) ->
- io:format("~nbad args : ~p~n", [Request]),
- Reply = ok,
- {reply, Reply, State}.
-
- %%--------------------------------------------------------------------
- %% Function: handle_cast(Msg, State) -> {noreply, State} |
- %% {noreply, State, Timeout} |
- %% {stop, Reason, State}
- %% Description: Handling cast messages
- %%--------------------------------------------------------------------
- handle_cast(_Msg, State) ->
- {noreply, State}.
-
- %%--------------------------------------------------------------------
- %% Function: handle_info(Info, State) -> {noreply, State} |
- %% {noreply, State, Timeout} |
- %% {stop, Reason, State}
- %% Description: Handling all non call/cast messages
- %%--------------------------------------------------------------------
- handle_info(_Info, State) ->
- {noreply, State}.
-
- %%--------------------------------------------------------------------
- %% Function: terminate(Reason, State) -> void()
- %% Description: This function is called by a gen_server when it is about to
- %% terminate. It should be the opposite of Module:init/1 and do any necessary
- %% cleaning up. When it returns, the gen_server terminates with Reason.
- %% The return value is ignored.
- %%--------------------------------------------------------------------
- terminate(_Reason, _State) ->
- ok.
-
- %%--------------------------------------------------------------------
- %% Func: code_change(OldVsn, State, Extra) -> {ok, NewState}
- %% Description: Convert process state when code is changed
- %%--------------------------------------------------------------------
- code_change(_OldVsn, State, _Extra) ->
- {ok, State}.
-
- %%--------------------------------------------------------------------
- %%% Internal functions
- %%--------------------------------------------------------------------
-