This commit is contained in:
aozhiwei 2023-03-06 11:40:34 +08:00
parent 4ac03e5ec3
commit fa51c1bb7e
5 changed files with 20 additions and 15 deletions

View File

@ -172,8 +172,8 @@ bool App::Init(int argc, char* argv[])
#endif #endif
SkillHelper::Init(); SkillHelper::Init();
JsonDataMgr::Instance()->Init(); JsonDataMgr::Instance()->Init();
mt::MetaMgr::Instance()->Init();
LispEnv::Instance()->Init(); LispEnv::Instance()->Init();
mt::MetaMgr::Instance()->Init();
SelfChecker::Init(); SelfChecker::Init();
EntityFactory::Instance()->Init(); EntityFactory::Instance()->Init();
uuid.SetMachineId((node_id - 1) * MAX_NODE_ID + instance_id); uuid.SetMachineId((node_id - 1) * MAX_NODE_ID + instance_id);
@ -231,8 +231,8 @@ void App::UnInit()
KillMgr::Instance()->UnInit(); KillMgr::Instance()->UnInit();
EntityFactory::Instance()->UnInit(); EntityFactory::Instance()->UnInit();
SelfChecker::UnInit(); SelfChecker::UnInit();
LispEnv::Instance()->UnInit();
mt::MetaMgr::Instance()->UnInit(); mt::MetaMgr::Instance()->UnInit();
LispEnv::Instance()->UnInit();
JsonDataMgr::Instance()->UnInit(); JsonDataMgr::Instance()->UnInit();
f8::BtMgr::Instance()->UnInit(); f8::BtMgr::Instance()->UnInit();
f8::HttpClientPool::Instance()->UnInit(); f8::HttpClientPool::Instance()->UnInit();

View File

@ -9,6 +9,7 @@
#include "human.h" #include "human.h"
#include "ability.h" #include "ability.h"
#include "collision.h" #include "collision.h"
#include "lispenv.h"
#include "mt/Buff.h" #include "mt/Buff.h"
#include "mt/Skill.h" #include "mt/Skill.h"
@ -19,7 +20,7 @@ void SprintBuff::Activate()
if (meta->_int_buff_param5) { if (meta->_int_buff_param5) {
owner->IncDisableMoveDirTimes(); owner->IncDisableMoveDirTimes();
} }
move_distance_limit_ = skill_meta->_number_meta->_float_range; move_distance_limit_ = meta->GetBuffParam2(owner, skill_meta);
SprintMove(); SprintMove();
CoCollisionCheck(); CoCollisionCheck();
} }

View File

@ -20,8 +20,6 @@ public:
if (params->size() != 1) { if (params->size() != 1) {
abort(); abort();
} }
result = context_.skill_meta->_number_meta->_float_speed;
result =123;
return std::make_shared<a8::lisp::Value>(a8::lisp::Atom(result)); return std::make_shared<a8::lisp::Value>(a8::lisp::Atom(result));
}); });
} }
@ -57,11 +55,11 @@ public:
if (!expr->IsType(a8::lisp::ValueType::kList)) { if (!expr->IsType(a8::lisp::ValueType::kList)) {
abort(); abort();
} }
Transform(expr); Transform(nullptr, expr);
return expr; return expr;
} }
void Transform(std::shared_ptr<a8::lisp::Value> node) void Transform(std::shared_ptr<a8::lisp::Value> parent_node, std::shared_ptr<a8::lisp::Value> node)
{ {
if (node->IsType(a8::lisp::ValueType::kSymbol)) { if (node->IsType(a8::lisp::ValueType::kSymbol)) {
auto&& symbol = std::any_cast<a8::lisp::Symbol>(node->value); auto&& symbol = std::any_cast<a8::lisp::Symbol>(node->value);
@ -82,12 +80,18 @@ public:
func_call_exprs->push_back func_call_exprs->push_back
(std::make_shared<a8::lisp::Value>(a8::lisp::Atom(idx))); (std::make_shared<a8::lisp::Value>(a8::lisp::Atom(idx)));
} }
node->Assign(func_call_exprs); if (parent_node &&
parent_node->IsType(a8::lisp::ValueType::kList) &&
std::any_cast<a8::lisp::List>(parent_node->value)->size() == 1
) {
parent_node->Assign(func_call_exprs);
} else {
node->Assign(func_call_exprs);
}
} else if (node->IsType(a8::lisp::ValueType::kList)) { } else if (node->IsType(a8::lisp::ValueType::kList)) {
auto list = std::any_cast<a8::lisp::List>(node->value); auto list = std::any_cast<a8::lisp::List>(node->value);
for (auto child_node : *list) { for (auto child_node : *list) {
Transform(child_node); Transform(node, child_node);
} }
} }
} }

View File

@ -117,16 +117,16 @@ namespace mt
_buff_param1_expr = LispEnv::Instance()->CompileSkillNumberExpr(buff_param1()); _buff_param1_expr = LispEnv::Instance()->CompileSkillNumberExpr(buff_param1());
} }
if (a8::lisp::Expr::MaybeExpr(buff_param2())) { if (a8::lisp::Expr::MaybeExpr(buff_param2())) {
_buff_param1_expr = LispEnv::Instance()->CompileSkillNumberExpr(buff_param2()); _buff_param2_expr = LispEnv::Instance()->CompileSkillNumberExpr(buff_param2());
} }
if (a8::lisp::Expr::MaybeExpr(buff_param3())) { if (a8::lisp::Expr::MaybeExpr(buff_param3())) {
_buff_param1_expr = LispEnv::Instance()->CompileSkillNumberExpr(buff_param3()); _buff_param3_expr = LispEnv::Instance()->CompileSkillNumberExpr(buff_param3());
} }
if (a8::lisp::Expr::MaybeExpr(buff_param4())) { if (a8::lisp::Expr::MaybeExpr(buff_param4())) {
_buff_param1_expr = LispEnv::Instance()->CompileSkillNumberExpr(buff_param4()); _buff_param4_expr = LispEnv::Instance()->CompileSkillNumberExpr(buff_param4());
} }
if (a8::lisp::Expr::MaybeExpr(buff_param5())) { if (a8::lisp::Expr::MaybeExpr(buff_param5())) {
_buff_param1_expr = LispEnv::Instance()->CompileSkillNumberExpr(buff_param5()); _buff_param5_expr = LispEnv::Instance()->CompileSkillNumberExpr(buff_param5());
} }
} }
{ {

2
third_party/a8 vendored

@ -1 +1 @@
Subproject commit 7bd146740195fbf3d0268fd873708f4ec2f56ab6 Subproject commit abee0bed17773019250dc4ed042fa8fd8763cf23