mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2026-03-27 01:53:16 +01:00
Fix EntityWeapon
This commit is contained in:
@@ -1,34 +1,28 @@
|
|||||||
package emu.grasscutter.game.entity;
|
package emu.grasscutter.game.entity;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
|
||||||
|
|
||||||
import emu.grasscutter.Grasscutter;
|
import emu.grasscutter.Grasscutter;
|
||||||
import emu.grasscutter.data.GameData;
|
import emu.grasscutter.data.GameData;
|
||||||
import emu.grasscutter.data.binout.AbilityData;
|
|
||||||
import emu.grasscutter.data.binout.config.ConfigEntityGadget;
|
import emu.grasscutter.data.binout.config.ConfigEntityGadget;
|
||||||
import emu.grasscutter.data.binout.config.fields.ConfigAbilityData;
|
import emu.grasscutter.data.binout.config.fields.ConfigAbilityData;
|
||||||
import emu.grasscutter.data.excels.GadgetData;
|
import emu.grasscutter.data.excels.GadgetData;
|
||||||
import emu.grasscutter.game.entity.gadget.GadgetContent;
|
|
||||||
import emu.grasscutter.game.props.EntityIdType;
|
import emu.grasscutter.game.props.EntityIdType;
|
||||||
import emu.grasscutter.game.world.Scene;
|
import emu.grasscutter.game.world.*;
|
||||||
import emu.grasscutter.net.proto.SceneEntityInfoOuterClass.SceneEntityInfo;
|
import emu.grasscutter.net.proto.SceneEntityInfoOuterClass.SceneEntityInfo;
|
||||||
import emu.grasscutter.scripts.EntityControllerScriptManager;
|
import emu.grasscutter.scripts.EntityControllerScriptManager;
|
||||||
import emu.grasscutter.utils.Position;
|
import it.unimi.dsi.fastutil.ints.*;
|
||||||
import it.unimi.dsi.fastutil.ints.Int2FloatMap;
|
import lombok.*;
|
||||||
import it.unimi.dsi.fastutil.ints.Int2FloatOpenHashMap;
|
|
||||||
import lombok.Getter;
|
import javax.annotation.Nullable;
|
||||||
import lombok.Setter;
|
|
||||||
import lombok.ToString;
|
|
||||||
|
|
||||||
@ToString(callSuper = true)
|
@ToString(callSuper = true)
|
||||||
public class EntityWeapon extends EntityBaseGadget {
|
public class EntityWeapon extends EntityBaseGadget {
|
||||||
@Getter private final GadgetData gadgetData;
|
@Getter private final GadgetData gadgetData;
|
||||||
@Getter(onMethod = @__(@Override)) @Setter
|
@Getter(onMethod_ = @Override) @Setter
|
||||||
private int gadgetId;
|
private int gadgetId;
|
||||||
@Nullable @Getter
|
@Nullable @Getter
|
||||||
private ConfigEntityGadget configGadget;
|
private ConfigEntityGadget configGadget;
|
||||||
|
|
||||||
@Getter(onMethod = @__(@Override), lazy = true)
|
@Getter(onMethod_ = @Override, lazy = true)
|
||||||
private final Int2FloatMap fightProperties = new Int2FloatOpenHashMap();
|
private final Int2FloatMap fightProperties = new Int2FloatOpenHashMap();
|
||||||
|
|
||||||
@Getter private final Position bornPos;
|
@Getter private final Position bornPos;
|
||||||
@@ -38,42 +32,42 @@ public class EntityWeapon extends EntityBaseGadget {
|
|||||||
super(scene);
|
super(scene);
|
||||||
|
|
||||||
this.gadgetData = GameData.getGadgetDataMap().get(gadgetId);
|
this.gadgetData = GameData.getGadgetDataMap().get(gadgetId);
|
||||||
if (gadgetData!=null && gadgetData.getJsonName()!=null) {
|
if (gadgetData != null && gadgetData.getJsonName() != null) {
|
||||||
this.configGadget = GameData.getGadgetConfigData().get(gadgetData.getJsonName());
|
this.configGadget = GameData.getGadgetConfigData().get(gadgetData.getJsonName());
|
||||||
}
|
}
|
||||||
|
|
||||||
this.gadgetId = gadgetId;
|
|
||||||
this.gadgetId = gadgetId;
|
this.gadgetId = gadgetId;
|
||||||
this.bornPos = this.getPosition().clone();
|
this.bornPos = this.getPosition().clone();
|
||||||
this.bornRot = this.getRotation().clone();
|
this.bornRot = this.getRotation().clone();
|
||||||
fillFightProps(configGadget);
|
|
||||||
if(GameData.getGadgetMappingMap().containsKey(gadgetId)) {
|
this.fillFightProps(configGadget);
|
||||||
String controllerName = GameData.getGadgetMappingMap().get(gadgetId).getServerController();
|
if (GameData.getGadgetMappingMap().containsKey(gadgetId)) {
|
||||||
setEntityController(EntityControllerScriptManager.getGadgetController(controllerName));
|
var controllerName = GameData.getGadgetMappingMap().get(gadgetId).getServerController();
|
||||||
if(getEntityController() == null) {
|
this.setEntityController(EntityControllerScriptManager.getGadgetController(controllerName));
|
||||||
Grasscutter.getLogger().warn("Gadget controller {} not found", controllerName);
|
if (getEntityController() == null) {
|
||||||
|
Grasscutter.getLogger().warn("Gadget controller {} not found.", controllerName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.id = scene.getWorld().getNextEntityId(EntityIdType.WEAPON);
|
this.id = scene.getWorld().getNextEntityId(EntityIdType.WEAPON);
|
||||||
Grasscutter.getLogger().warn("New weapon entity id {} at scene {}", this.id, this.getScene().getId());
|
Grasscutter.getLogger().trace("New weapon entity {} in scene {}.",
|
||||||
|
this.id, this.getScene().getId());
|
||||||
|
|
||||||
initAbilities();
|
this.initAbilities();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void addConfigAbility(ConfigAbilityData abilityData){
|
private void addConfigAbility(ConfigAbilityData abilityData){
|
||||||
AbilityData data = GameData.getAbilityData(abilityData.getAbilityName());
|
var data = GameData.getAbilityData(abilityData.getAbilityName());
|
||||||
if(data != null)
|
if (data != null) this.getWorld().getHost()
|
||||||
getScene().getWorld().getHost().getAbilityManager().addAbilityToEntity(
|
.getAbilityManager().addAbilityToEntity(this, data);
|
||||||
this, data);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void initAbilities() {
|
public void initAbilities() {
|
||||||
//TODO: handle predynamic, static and dynamic here
|
//TODO: handle pre-dynamic, static and dynamic here
|
||||||
if(this.configGadget != null && this.configGadget.getAbilities() != null) {
|
if (this.configGadget != null && this.configGadget.getAbilities() != null) {
|
||||||
for (var ability : this.configGadget.getAbilities()) {
|
for (var ability : this.configGadget.getAbilities()) {
|
||||||
addConfigAbility(ability);
|
this.addConfigAbility(ability);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user