From e78d2f292a16ab7a57780cf2d53076e6dee29468 Mon Sep 17 00:00:00 2001 From: godotg Date: Thu, 28 Sep 2023 11:52:25 +0800 Subject: [PATCH] feat[gdscript]: gdscript compatible field support --- .../serializer/gdscript/GdCharSerializer.java | 47 ------------------- .../serializer/gdscript/GenerateGdUtils.java | 11 ++--- .../typescript/GenerateTsUtils.java | 1 - 3 files changed, 4 insertions(+), 55 deletions(-) delete mode 100644 protocol/src/main/java/com/zfoo/protocol/serializer/gdscript/GdCharSerializer.java diff --git a/protocol/src/main/java/com/zfoo/protocol/serializer/gdscript/GdCharSerializer.java b/protocol/src/main/java/com/zfoo/protocol/serializer/gdscript/GdCharSerializer.java deleted file mode 100644 index a98d991f..00000000 --- a/protocol/src/main/java/com/zfoo/protocol/serializer/gdscript/GdCharSerializer.java +++ /dev/null @@ -1,47 +0,0 @@ -/* - * Copyright (C) 2020 The zfoo Authors - * - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed - * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and limitations under the License. - */ - -package com.zfoo.protocol.serializer.gdscript; - -import com.zfoo.protocol.generate.GenerateProtocolFile; -import com.zfoo.protocol.registration.field.IFieldRegistration; -import com.zfoo.protocol.util.StringUtils; - -import java.lang.reflect.Field; - -import static com.zfoo.protocol.util.FileUtils.LS; - -/** - * @author godotg - */ -public class GdCharSerializer implements IGdSerializer { - - @Override - public String fieldType(Field field, IFieldRegistration fieldRegistration) { - return "String"; - } - - @Override - public void writeObject(StringBuilder builder, String objectStr, int deep, Field field, IFieldRegistration fieldRegistration) { - GenerateProtocolFile.addTabAscii(builder, deep); - builder.append(StringUtils.format("buffer.writeChar({})", objectStr)).append(LS); - } - - @Override - public String readObject(StringBuilder builder, int deep, Field field, IFieldRegistration fieldRegistration) { - String result = "result" + GenerateProtocolFile.index.getAndIncrement(); - GenerateProtocolFile.addTabAscii(builder, deep); - builder.append(StringUtils.format("var {} = buffer.readChar()", result)).append(LS); - return result; - } -} diff --git a/protocol/src/main/java/com/zfoo/protocol/serializer/gdscript/GenerateGdUtils.java b/protocol/src/main/java/com/zfoo/protocol/serializer/gdscript/GenerateGdUtils.java index 8a0065d1..310528e8 100644 --- a/protocol/src/main/java/com/zfoo/protocol/serializer/gdscript/GenerateGdUtils.java +++ b/protocol/src/main/java/com/zfoo/protocol/serializer/gdscript/GenerateGdUtils.java @@ -27,6 +27,7 @@ import com.zfoo.protocol.registration.field.MapField; import com.zfoo.protocol.serializer.CodeLanguage; import com.zfoo.protocol.serializer.enhance.EnhanceObjectProtocolSerializer; import com.zfoo.protocol.serializer.reflect.*; +import com.zfoo.protocol.serializer.typescript.GenerateTsUtils; import com.zfoo.protocol.util.ClassUtils; import com.zfoo.protocol.util.FileUtils; import com.zfoo.protocol.util.ReflectionUtils; @@ -169,13 +170,9 @@ public abstract class GenerateGdUtils { var fieldType = gdSerializer(fieldRegistration.serializer()).fieldType(field, fieldRegistration); // 生成类型的注释 gdBuilder.append(StringUtils.format("var {}: {}", fieldName, fieldType)); - if (fieldRegistration instanceof MapField) { - var mapField = (MapField) fieldRegistration; - var mapKeyRegistration = mapField.getMapKeyRegistration(); - var keyType = gdSerializer(mapKeyRegistration.serializer()).fieldType(field, mapKeyRegistration); - var mapValueRegistration = mapField.getMapValueRegistration(); - var valueType = gdSerializer(mapValueRegistration.serializer()).fieldType(field, mapValueRegistration); - gdBuilder.append(StringUtils.format(" # Dictionary<{}, {}>", keyType, valueType)); + if (fieldType.equals("Dictionary") || fieldType.equals("Array")) { + var typeNote = GenerateTsUtils.toTsClassName(field.getGenericType().toString()); + gdBuilder.append(StringUtils.format(TAB_ASCII + "# {}", typeNote)); } gdBuilder.append(LS); } diff --git a/protocol/src/main/java/com/zfoo/protocol/serializer/typescript/GenerateTsUtils.java b/protocol/src/main/java/com/zfoo/protocol/serializer/typescript/GenerateTsUtils.java index bb2ca4e0..1b6b1edc 100644 --- a/protocol/src/main/java/com/zfoo/protocol/serializer/typescript/GenerateTsUtils.java +++ b/protocol/src/main/java/com/zfoo/protocol/serializer/typescript/GenerateTsUtils.java @@ -221,7 +221,6 @@ public abstract class GenerateTsUtils { typeName = typeName.replaceAll("java.util.|java.lang.", StringUtils.EMPTY); typeName = typeName.replaceAll("[a-zA-Z0-9_.]*\\.", StringUtils.EMPTY); - // CSharp不适用基础类型的泛型,会影响性能 switch (typeName) { case "boolean": case "Boolean":