perf[generate]: generate protocol

This commit is contained in:
godotg
2022-11-01 16:49:49 +08:00
parent 7b59fcdfa6
commit 151cfa77f7
4 changed files with 13 additions and 31 deletions
@@ -58,12 +58,10 @@ public abstract class GenerateProtocolPath {
case TypeScript:
case CSharp:
case Protobuf:
break;
case Lua:
break;
case GdScript:
break;
case Enhance:
break;
default:
throw new RunException("无法识别的枚举类型[{}]", language);
}
@@ -32,8 +32,10 @@ import com.zfoo.protocol.util.*;
import java.io.File;
import java.io.IOException;
import java.lang.reflect.Field;
import java.util.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import static com.zfoo.protocol.util.FileUtils.LS;
@@ -98,20 +100,12 @@ public abstract class GenerateCppUtils {
var protocolManagerTemplate = StringUtils.bytesToString(IOUtils.toByteArray(ClassUtils.getFileFromClassPath("cpp/ProtocolManagerTemplate.h")));
var headerBuilder = new StringBuilder();
protocolList.stream()
.filter(it -> Objects.nonNull(it))
.forEach(it -> {
var name = it.protocolConstructor().getDeclaringClass().getSimpleName();
var path = StringUtils.format("#include \"{}/{}/{}.h\"", protocolOutputRootPath, GenerateProtocolPath.getProtocolPath(it.protocolId()), name);
path = path.replaceAll("//", StringUtils.SLASH);
headerBuilder.append(path).append(LS);
});
var initProtocolBuilder = new StringBuilder();
protocolList.stream()
.filter(it -> Objects.nonNull(it))
.forEach(it -> initProtocolBuilder.append(TAB).append(TAB).append(StringUtils.format("protocols[{}] = new {}Registration();", it.protocolId(), it.protocolConstructor().getDeclaringClass().getSimpleName())).append(LS));
for (var protocol : protocolList) {
var protocolId = protocol.protocolId();
headerBuilder.append(StringUtils.format("#include \"{}/{}.h\"", protocolOutputRootPath, GenerateProtocolPath.protocolAbsolutePath(protocolId, CodeLanguage.Cpp))).append(LS);
initProtocolBuilder.append(TAB).append(TAB).append(StringUtils.format("protocols[{}] = new {}Registration();", protocolId, protocol.protocolConstructor().getDeclaringClass().getSimpleName())).append(LS);
}
protocolManagerTemplate = StringUtils.format(protocolManagerTemplate, headerBuilder.toString(), initProtocolBuilder.toString().trim());
FileUtils.writeStringToFile(new File(StringUtils.format("{}/{}", protocolOutputRootPath, "ProtocolManager.h")), protocolManagerTemplate, true);
}
@@ -98,13 +98,8 @@ public abstract class GenerateJsUtils {
for (var protocol : protocolList) {
var protocolId = protocol.protocolId();
var protocolName = protocol.protocolConstructor().getDeclaringClass().getSimpleName();
var path = GenerateProtocolPath.getProtocolPath(protocol.protocolId());
if (StringUtils.isBlank(path)) {
importBuilder.append(StringUtils.format("import {} from './{}.js';", protocolName, protocolName)).append(LS);
} else {
importBuilder.append(StringUtils.format("import {} from './{}/{}.js';", protocolName, path, protocolName)).append(LS);
}
var path = GenerateProtocolPath.protocolAbsolutePath(protocol.protocolId(), CodeLanguage.JavaScript);
importBuilder.append(StringUtils.format("import {} from './{}.js';", protocolName, path)).append(LS);
initProtocolBuilder.append(StringUtils.format("protocols.set({}, {});", protocolId, protocolName)).append(LS);
}
@@ -95,13 +95,8 @@ public abstract class GenerateTsUtils {
for (var protocol : protocolList) {
var protocolId = protocol.protocolId();
var protocolClassName = EnhanceObjectProtocolSerializer.getProtocolClassSimpleName(protocolId);
var path = GenerateProtocolPath.getProtocolPath(protocolId);
if (StringUtils.isBlank(path)) {
importBuilder.append(StringUtils.format("import {} from './{}';", protocolClassName, protocolClassName)).append(LS);
} else {
importBuilder.append(StringUtils.format("import {} from './{}/{}';", protocolClassName, path, protocolClassName)).append(LS);
}
importBuilder.append(StringUtils.format("import {} from './{}';", protocolClassName, path)).append(LS);
initProtocolBuilder.append(StringUtils.format("protocols.set({}, {});", protocolId, protocolClassName)).append(LS);
}