fix: 装备属性面板避让逻辑 + 多项功能更新

- item_tooltip_view.gd: 新增 avoid_rect 属性,tooltip 与装备窗口重叠时自动推到左侧
- inventory_ui.gd: 悬停装备时传入窗口矩形作为避让区域
- 包含其他累积的功能开发和测试文件
This commit is contained in:
shen
2026-09-21 16:38:59 -07:00
parent 1522a8a1a1
commit c93894313a
5498 changed files with 4558004 additions and 1442 deletions
+33 -6
View File
@@ -6,16 +6,43 @@
namespace fmt {
struct MotionEvent {
int type = 0; // MotionEventType(10=effect, 4/5=sound, ...)
float start_time = 0; // StartingTime
std::string effect_file; // EffectFileName(type 10)
int type = 0; // MotionEventType(1=effect, 4=special attack, 6=fly, ...)
float start_time = 0; // StartingTime
float duration_time = 0; // DuringTime(SCREEN_WAVING / SPECIAL_ATTACKING)
std::string effect_file; // EffectFileName(type 1/10)
std::string sound_file; // SoundFileName
std::string attaching_bone;
bool attaching = false;
bool following = false;
bool independent = false;
bool fishing_effect = false;
float position[3] = {0, 0, 0};
bool independent = false;
bool fishing_effect = false;
float position[3] = {0, 0, 0};
// FLY 的字段不能复用 EFFECT 的 EffectFileName/EffectPosition:40250
// 在 MotionEventDataEvent.h 中使用另一套 FlyFileName/FlyPosition。
std::string fly_file;
std::string fly_attaching_bone;
bool fly_attaching = false;
float fly_position[3] = {0, 0, 0};
// SCREEN_WAVING 参数(GameEventManager::ProcessEventScreenWaving)。
int power = 0;
int affecting_range = 0;
// SPECIAL_ATTACKING 参数(TMotionAttackingEventData)。
bool enable_hit_process = true; // 40250 缺省值为 TRUE
int attack_type = 0;
int hitting_type = 0;
float stiffen_time = 0;
float invisible_time = 0;
float external_force = 0;
int hit_limit_count = 0;
int collision_type = 0;
struct CollisionSphere {
float radius = 0;
float position[3] = {0, 0, 0};
};
std::vector<CollisionSphere> collision_spheres;
};
struct Msa {