From cbed8613751a3ed72043a25a6ec10b9378f6248f Mon Sep 17 00:00:00 2001
From: alterdekim <alterwain@protonmail.com>
Date: Fri, 10 Jan 2025 22:34:24 +0300
Subject: [PATCH] Serializer started x4

---
 pom.xml                                       |  2 +-
 .../flash/decompiler/mapper/FlashMapper.java  | 25 +++++++++++++++++++
 2 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/pom.xml b/pom.xml
index 66163df..08109ab 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
 
     <groupId>com.alterdekim.game</groupId>
     <artifactId>actionScriptDecompiler</artifactId>
-    <version>0.0.9</version>
+    <version>0.0.10</version>
     <packaging>jar</packaging>
 
     <name>SWFDissect</name>
diff --git a/src/main/java/com/alterdekim/flash/decompiler/mapper/FlashMapper.java b/src/main/java/com/alterdekim/flash/decompiler/mapper/FlashMapper.java
index b44935e..98beb07 100644
--- a/src/main/java/com/alterdekim/flash/decompiler/mapper/FlashMapper.java
+++ b/src/main/java/com/alterdekim/flash/decompiler/mapper/FlashMapper.java
@@ -13,6 +13,31 @@ import java.util.stream.Collectors;
 @Slf4j
 public class FlashMapper {
 
+    public static <T> Map<String, Object> simpleToMap(List<T> l) {
+        Map<String, Object> m = new HashMap<>();
+        for( T o : l ) {
+            List<Field> fields = Arrays.stream(o.getClass().getDeclaredFields())
+                    .filter(f -> f.isAnnotationPresent(FlashValue.class))
+                    .collect(Collectors.toList());
+            try {
+                String key = null;
+                Object val = null;
+                for (Field f : fields) {
+                    f.setAccessible(true);
+                    switch (f.getAnnotation(FlashValue.class).type()) {
+                        case Id -> key = ((Long) f.get(o)).toString();
+                        case Value -> val = f.get(o);
+                    }
+                }
+                if( key == null || val == null ) continue;
+                m.put(key, val);
+            } catch (IllegalAccessException e) {
+                log.error("FlashMapper valueGet error: {}", e.getMessage());
+            }
+        }
+        return m;
+    }
+
     public static <T> Map<String, Object> objToMap(List<T> l) {
         Map<String, Object> m = new HashMap<>();
         for( T o : l ) {