erlang代码生成器

github:https://github.com/huangwenzi/get_erl_dir
 

自动生成erlang代码

有能力的同学也可以修改成其他语言的生成器

根据协议文件生成,除协议文件,下面的文件都是自动生成的内容

 

协议文件

header = []

record_define = [
]

protocol_define = {
    "ancient_test_info_request": {
        "cmd": single_counter.next(),
        "desc": "请求山海试炼信息",
        "payload": [
        ],
    },

    "ancient_test_info_reply": {
        "cmd": single_counter.next(),
        "desc": "山海试炼信息返回",
        "payload": [
            ("code", "int"),
            ('harm', 'int', "历史最高伤害"),
            ('rank', 'int', "当前排名"),
            ("top_rank_list", "array of rank_p", "前三名玩家信息"),
            ("task_list", "array of task_accepted", "已接任务"),
            ("finished", "array of int", "已完成的任务"),
            ('day_hint', 'int', '每日提示红点'),
        ],
    },
    
    "ancient_test_challenge_request": {
        "cmd": single_counter.next(),
        "desc": "请求挑战",
        "payload": [
        ],
    },

    "ancient_test_challenge_reply": {
        "cmd": single_counter.next(),
        "desc": "挑战返回",
        "payload": [
            ("code", "int"),
            ("harm", "int", "伤害"),
            ("rank", "int", "当前排名"),
        ],
    },
    
    "ancient_test_submit_request": {
        "cmd": single_counter.next(),
        "desc": "请求完成任务",
        "payload": [
            ("id", "int", "任务id"),
        ],
    },

    "ancient_test_submit_reply": {
        "cmd": single_counter.next(),
        "desc": "完成任务返回",
        "payload": [
            ("code", "int"),
            ("id", "int", "任务id"),
        ],
    },

    "ancient_test_hint_request": {
        "cmd": single_counter.next(),
        "desc": "请求修改提示状态",
        "payload": [
            ('day_hint', 'int', '每日提示红点'),
        ],
    },
    
    "ancient_test_hint_reply": {
        "cmd": single_counter.next(),
        "desc": "修改提示状态返回",
        "payload": [
            ("code", "int"),
            ('day_hint', 'int', '每日提示红点'),
        ],
    },
}

 

生成后的文件展示

hrl文件


%%%%%%-------------------------------------------------------------------
%%%%%% @author hw
%%%%%% @copyright (C) 2021, <COMPANY>
%%%%%% @doc
%%%%%%
%%%%%% @end
%%%%%% Created : 21. 6月 2021 16:29
%%%%%%-------------------------------------------------------------------


-ifndef(ANCIENT_TEST_H_H_).
-define(ANCIENT_TEST_H_H_, 1).

    
%% 
-record(player_ancient_test, {
	player_id = 0, 
	harm = 0,					%% 历史最高伤害
	task_list = [],				%% 已接任务
	finished = [],				%% 已完成的任务
	day_hint = 0				%% 每日提示红点
}).

-endif.

rpc文件


%%%%%%-------------------------------------------------------------------
%%%%%% @author hw
%%%%%% @copyright (C) 2021, <COMPANY>
%%%%%% @doc
%%%%%%
%%%%%% @end
%%%%%% Created : 21. 6月 2021 16:29
%%%%%%-------------------------------------------------------------------

-module(ancient_test_rpc).
-author("hw").

-include("erl_protocol_record.hrl").
-include("logger.hrl").

%% API
-export([handle/2]).
    
%%%% 请求山海试炼信息
handle(#ancient_test_info_request{}, Player) ->
    case ancient_test_lib:info(Player) of
        {ok, Notify} ->
            {reply, Notify};
        {false, Code} ->
            {reply, #ancient_test_info_reply{code = Code}}
    end;

%%%% 请求挑战
handle(#ancient_test_challenge_request{}, Player) ->
    case ancient_test_lib:challenge(Player) of
        {ok, Notify} ->
            {reply, Notify};
        {false, Code} ->
            {reply, #ancient_test_challenge_reply{code = Code}}
    end;

%%%% 请求完成任务
handle(#ancient_test_submit_request{id = Id}, Player) ->
    case ancient_test_lib:submit(Player, Id) of
        {ok, Notify} ->
            {reply, Notify};
        {false, Code} ->
            {reply, #ancient_test_submit_reply{code = Code}}
    end;

%%%% 请求修改提示状态
handle(#ancient_test_hint_request{day_hint = DayHint}, Player) ->
    case ancient_test_lib:hint(Player, DayHint) of
        {ok, Notify} ->
            {reply, Notify};
        {false, Code} ->
            {reply, #ancient_test_hint_reply{code = Code}}
    end;
 
handle(Msg, _Player) ->
    ?ERROR("module:[~p] handle msg error:[~p]", [?MODULE, Msg]),
    ok.
    

lib文件


%%%%%%-------------------------------------------------------------------
%%%%%% @author hw
%%%%%% @copyright (C) 2021, <COMPANY>
%%%%%% @doc
%%%%%%
%%%%%% @end
%%%%%% Created : 21. 6月 2021 16:29
%%%%%%-------------------------------------------------------------------

-module(ancient_test_lib).
-author("hw").

-include("ancient_test.hrl").
-include("player.hrl").
-include("event.hrl").
-include("task.hrl").
-include("common.hrl").
-include("erl_protocol_record.hrl").


%% API
-export([
    first_init/0,
    on_first_login_event/2,
    on_login_event/2,
    on_zero_timer_event/2,


	info/1,
	challenge/1,
	submit/2,
	hint/2
]).

%% gm
-export([
]).



%% 初始化模块
first_init() ->
	event_dispatcher:add_event_listener_once(?EVENT_AFTER_FIRST_INIT, ?MODULE, on_first_login_event),
	event_dispatcher:add_event_listener(?EVENT_PLAYER_LOGIN, ?MODULE, on_login_event),
	event_dispatcher:add_event_listener(?EVENT_ZERO_TIMER, ?MODULE, on_zero_timer_event).

%% 登录初始化
on_first_login_event(_Player, _Param) ->
	ok.

%% 登录事件
on_login_event(_Player, _Param) ->
	ok.

%% 零点事件
on_zero_timer_event(_Player, _Param) ->
	ok.




%% @doc 协议函数
%% @doc 请求山海试炼信息
info(Player) ->
	try check_info(Player) of
		ok ->
			do_info(Player)
	catch throw : Code ->
		{false, Code}
	end.
    
%% @doc 请求挑战
challenge(Player) ->
	try check_challenge(Player) of
		ok ->
			do_challenge(Player)
	catch throw : Code ->
		{false, Code}
	end.
    
%% @doc 请求完成任务
submit(Player, Id) ->
	try check_submit(Player, Id) of
		ok ->
			do_submit(Player, Id)
	catch throw : Code ->
		{false, Code}
	end.
    
%% @doc 请求修改提示状态
hint(Player, DayHint) ->
	try check_hint(Player, DayHint) of
		ok ->
			do_hint(Player, DayHint)
	catch throw : Code ->
		{false, Code}
	end.
    




%% @doc 获取函数
%% @doc 获取数据
-spec lookup(PlayerId :: integer()) -> #player_ancient_test{}.
lookup(PlayerId) when is_integer(PlayerId) ->
	case cache_unit:lookup(cache_player_ancient_test, PlayerId) of
		undefined ->
			#player_ancient_test{
				player_id = PlayerId
			};
		AncientTest -> AncientTest
	end;
lookup(Player) ->
	lookup(player_lib:player_id(Player)).

%% @doc 保存数据
save_info(AncientTest) ->
	cache_unit:insert(cache_player_ancient_test, AncientTest).
    


%% @doc 检查函数
%% @doc 检查山海试炼信息
check_info(Player) ->
	ok.
    
%% @doc 检查挑战
check_challenge(Player) ->
	ok.
    
%% @doc 检查完成任务
check_submit(Player, Id) ->
	ok.
    
%% @doc 检查修改提示状态
check_hint(Player, DayHint) ->
	ok.
    


%% @doc 修改函数
%% @doc 山海试炼信息
do_info(Player) ->
	{ok, #ancient_test_info_reply{}}.
    
%% @doc 挑战
do_challenge(Player) ->
	{ok, #ancient_test_challenge_reply{}}.
    
%% @doc 完成任务
do_submit(Player, Id) ->
	{ok, #ancient_test_submit_reply{}}.
    
%% @doc 修改提示状态
do_hint(Player, DayHint) ->
	{ok, #ancient_test_hint_reply{}}.
    

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值