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
SkillHelper::Init();
JsonDataMgr::Instance()->Init();
mt::MetaMgr::Instance()->Init();
LispEnv::Instance()->Init();
mt::MetaMgr::Instance()->Init();
SelfChecker::Init();
EntityFactory::Instance()->Init();
uuid.SetMachineId((node_id - 1) * MAX_NODE_ID + instance_id);
@ -231,8 +231,8 @@ void App::UnInit()
KillMgr::Instance()->UnInit();
EntityFactory::Instance()->UnInit();
SelfChecker::UnInit();
LispEnv::Instance()->UnInit();
mt::MetaMgr::Instance()->UnInit();
LispEnv::Instance()->UnInit();
JsonDataMgr::Instance()->UnInit();
f8::BtMgr::Instance()->UnInit();
f8::HttpClientPool::Instance()->UnInit();

View File

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

View File

@ -20,8 +20,6 @@ public:
if (params->size() != 1) {
abort();
}
result = context_.skill_meta->_number_meta->_float_speed;
result =123;
return std::make_shared<a8::lisp::Value>(a8::lisp::Atom(result));
});
}
@ -57,11 +55,11 @@ public:
if (!expr->IsType(a8::lisp::ValueType::kList)) {
abort();
}
Transform(expr);
Transform(nullptr, 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)) {
auto&& symbol = std::any_cast<a8::lisp::Symbol>(node->value);
@ -82,12 +80,18 @@ public:
func_call_exprs->push_back
(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)) {
auto list = std::any_cast<a8::lisp::List>(node->value);
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());
}
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())) {
_buff_param1_expr = LispEnv::Instance()->CompileSkillNumberExpr(buff_param3());
_buff_param3_expr = LispEnv::Instance()->CompileSkillNumberExpr(buff_param3());
}
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())) {
_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