OracleLoadstar/SCE-Universe_Java_Edition
项目概览

主要特性

SCE-Universe Java Edition 是一个功能丰富的应用程序,核心设计围绕模块化、可扩展性和用户自定义。它提供了强大的计算功能,支持通过模组进行扩展,并具备灵活的设置管理和直观的页面路由系统。

概述

本应用旨在提供一个平台,用户可以利用其内置的计算模型进行数据分析,并通过安装自定义模组来增加或修改功能。其主要特点包括:

  • 多版本计算功能:提供 V1 到 V5 等多种复杂计算模型,用于处理不同的数据场景和需求。
  • 动态模组加载系统:支持加载外部 JAR 格式的插件,极大地增强了应用的可扩展性,允许社区贡献和功能定制。
  • 持久化设置管理:全面的设置系统,能够保存和加载用户偏好,确保应用行为的可配置性。
  • 页面管理与路由:基于清晰的页面定义和路由机制,实现流畅的用户界面导航和交互管理。

这些特性共同构成了 SCE-Universe Java Edition 的核心,使其成为一个强大且高度可定制的工具。

架构

应用程序的架构围绕核心模块和它们之间的交互构建。App 类作为入口点,负责初始化全局状态、设置管理器、模组加载器和页面路由器。router_core 管理页面之间的导航和生命周期,同时集成模组和设置保存机制。global 类维护全局共享资源,包括核心计算数据结构 umaCore_core

加载图表中...

架构说明

  • App: 应用程序的启动类,负责引导整个系统,初始化所有核心服务。
  • router_core: 实现了 PageManager 接口,是应用中所有页面导航的中心枢纽。它处理页面状态转换,并在页面切换时与模组和设置管理系统进行交互。
  • global: 单例模式的全局对象,持有 umaCore_core 实例和对 setManager_core 的引用,确保核心数据和设置在整个应用中的可访问性。
  • modlist: 模组加载器,负责扫描指定目录下的 JAR 文件,动态加载并初始化实现了 modloader_main 接口的外部模组。
  • setManager_core: 设置管理的入口,通过 setManager 处理应用设置的读取、写入、修改和持久化。
  • umaCore_core: 核心计算逻辑单元,包含多个版本的计算方法和复杂的数据结构 (Basic, Rate, Unique, Bonus, Ept),用于封装计算所需的输入和输出。
  • pages: 定义了应用程序中所有页面的常量 ID,提供了一种清晰的页面标识方式。
  • modloader_main: 定义了外部模组必须实现的接口,允许模组与应用程序生命周期和页面交互集成。

主要特性详解

1. 计算功能

本应用提供了一套强大的多版本计算功能,主要通过 umaCore_core 类实现。这些计算模型旨在处理复杂的数据评估,并随着版本的迭代而提供更精细的计算逻辑。

核心数据结构: umaCore_core

umaCore_core 是计算功能的核心,它聚合了多种属性,并通过 evalV1evalV2evalV3evalV4 等方法进行不同版本的计算。

  • Basic: 包含基础信息,如名称 (name) 和类型 (type)。
  • Rate: 基础比率属性,例如友情训练加成 (friendshipBonus)、心情影响 (moodEffect) 等。
  • Unique: 独特的属性修饰,与 Rate 类似但可能代表额外或高级的修饰。
  • Bonus: 属性加成,例如速度 (speed)、耐力 (stamina)、力量 (power) 等。
  • Ept: 计算结果集,存储了各种计算后的比率和最终结果(例如 friendshipRate, nonSpecialtyRate, v3, v4main 等)。

每个计算版本都建立在前一个版本的基础上,逐步增加计算的复杂度和维度。例如,evalV2evalV1 的基础上引入了属性加成对友情训练倍率的影响。

示例代码:umaCore_core 的初始化和 V1 计算

java
1public class umaCore_core extends umaCore_header { 2 // ... 其他代码 ... 3 4 public umaCore_core() { 5 _basic = new Basic(); 6 _rate = new Rate(); 7 _unique = new Unique(); 8 _bonus = new Bonus(); 9 _ept = new Ept(); 10 } 11 12 public boolean getAttributes(String name,int type,int rate_friendshipBonus,int rate_moodEffect,int rate_traningEffect,int rate_initalFriendship,int rate_specialtyPriority,int unique_friendshipBonus,int unique_moodEffect,int unique_traningEffect,int unique_initalFriendship,int unique_specialtyPriority,int speed,int stamina,int power,int guts,int wit,int sp) 13 { 14 try 15 { 16 _basic.name = name; 17 _basic.type = type; 18 _rate.friendshipBonus = rate_friendshipBonus; 19 // ... 省略其他属性设置 ... 20 _bonus.speed = speed; 21 // ... 省略其他 bonus 属性设置 ... 22 } 23 catch (Exception err) 24 { 25 System.err.println("Error: " + err); 26 return false; 27 } 28 return true; 29 } 30 31 public void evalV1() 32 { 33 //v1_ept 34 _ept.friendshipRate = 35 (_rate.friendshipBonus * 0.01f + 1.0f) * 36 (_unique.friendshipBonus * 0.01f + 1.0f) * 37 ((_rate.traningEffect + _unique.traningEffect) * 0.01f + 1.0f) * 38 ((_rate.moodEffect + _unique.moodEffect) * 0.02f + 1.0f); 39 //unstrike_v1_ept 40 _ept.nonSpecialtyRate = 41 ((_rate.traningEffect + _unique.traningEffect) * 0.01f + 1.0f) * 42 ((_rate.moodEffect + _unique.moodEffect) * 0.02f + 1.0f); 43 } 44 // ... 其他 evalV 方法 ... 45}

Source: src/cn/oraclestar/sce/system/umaCore/umaCore_core.java, src/cn/oraclestar/sce/system/umaCore/umaCore_core.java

2. 模组加载系统

应用程序通过一个灵活的模组加载系统支持动态扩展,用户可以将外部 JAR 文件作为插件集成到应用中。

模组工作流

加载图表中...
  • 目录扫描: modlist 类会扫描 plugins/plugins/preload 目录下的所有 .jar 文件。
  • 动态加载: 使用 URLClassLoader 在运行时加载 JAR 文件中的类。
  • 接口实现: 模组的主类必须实现 modloader_main 接口,该接口定义了模组生命周期方法(onEnable(), onDisable())以及与应用交互的方法(innerToPage(), innerHandle())。
  • 元数据: 模组信息(如名称、作者、版本、描述)通过 @target 注解来定义。

示例代码:modloader_main 接口定义

java
1public interface modloader_main { 2 final String pluginName = ""; // 通常通过注解提供 3 final String version = ""; // 通常通过注解提供 4 void onEnable(); // 模组启用时调用 5 void onDisable(); // 模组禁用时调用 6 void innerToPage(cn.oraclestar.sce.system.UI.UI_core ui_core,int now_page); // 模组与页面交互 7 int innerHandle(String Input,int now_page); // 模组处理页面输入 8}

Source: src/cn/oraclestar/sce/system/modloader/modloader_main.java

3. 设置管理

应用程序的设置由 setManagersetManager_core 类进行统一管理,支持将不同类型的设置持久化到 settings.xml 文件中。

特性

  • 类型化存储: 设置按类型(字符串、整数、布尔值)存储在不同的集合中,确保类型安全。
  • 动态增改: 支持运行时添加和修改设置。
  • 持久化: 使用 XMLEncoderXMLDecoder 将设置序列化到 settings.xml 文件中,并在启动时加载。
  • 合并加载: 在加载设置时,会智能地将文件中的设置与内存中已有的设置(如默认值)进行合并,以避免丢失未在文件中定义的设置。

示例代码:设置的添加和持久化

java
1public class setManager implements list_Boolen_Map,list_Int_Map,list_String_Map { 2 // ... 其他方法 ... 3 4 public static void addSet(String key,Object vaule) throws Exception{ 5 // 检查设置是否已存在,防止重复定义 6 // ... 7 if(vaule instanceof String){ 8 Map<String,String> temp_map = new HashMap<>(); 9 temp_map.put(key,(String)vaule); 10 inputSet(cn.oraclestar.sce.system.setManager.type.string,temp_map); 11 return; 12 } 13 // ... 处理 Boolean 和 Integer 类型 ... 14 } 15 16 public static void SaveSettings(){ 17 try(XMLEncoder encoder = new XMLEncoder(new BufferedOutputStream(new FileOutputStream("settings.xml")))){ 18 encoder.writeObject(list_String_Map.temp_maps); 19 encoder.writeObject(list_Int_Map.temp_maps); 20 encoder.writeObject(list_Boolen_Map.temp_maps); 21 encoder.flush(); 22 }catch(Exception e){ 23 e.printStackTrace(); 24 } 25 } 26 // ... LoadSettings 方法 ... 27}

Source: src/cn/oraclestar/sce/system/setManager/setManager.java, src/cn/oraclestar/sce/system/setManager/setManager.java

4. 页面管理与路由

应用的核心用户界面体验由 router_core 提供,它负责管理不同应用页面之间的导航和交互。

页面路由流

加载图表中...
  • 页面定义: pages 类集中定义了所有页面的整数 ID,例如 WELCOMEMAINCALCULATE 等,易于管理和引用。
  • 导航控制: router_core 维护当前页面状态,并根据用户输入或内部逻辑决定下一个显示的页面。
  • 模组集成: 路由过程允许模组在页面渲染前和用户输入处理时介入,实现自定义 UI 元素或行为。
  • 自动保存: 在每次页面输入处理后,设置会自动保存,确保用户配置的即时持久化。

示例代码:pages 定义和 router_core 启动

java
1public class pages { 2 public static final int EXIT = -1; 3 public static final int CURRENT = 0; 4 public static final int WELCOME = 1; 5 public static final int MAIN = 2; 6 public static final int SETTING = 3; 7 // ... 其他页面定义 ... 8 public static final int MODLIST = 30; 9}

Source: src/cn/oraclestar/sce/system/router/pages.java

java
1public class router_core extends PageManager { 2 // ... 其他方法 ... 3 public void start() throws Exception{ 4 if(_currentPage == pages.EXIT){ 5 return; 6 } 7 while (_currentPage != pages.EXIT){ 8 while (true) { 9 pageheader page = _pages.get(_currentPage); // 获取当前页面实例 10 if (page == null) { 11 break; 12 } 13 int nextPage = page.run(); // 运行当前页面逻辑 14 _currentPage = nextPage; // 更新当前页面 15 } 16 } 17 } 18}

Source: src/cn/oraclestar/sce/system/router/router_core.java

配置选项

应用程序的设置由 setManager_core 统一管理,并可在 settings.xml 中持久化。以下是一些在 App.java 中注册的默认设置,用户可以通过应用程序界面或直接修改 settings.xml 进行配置:

Option KeyTypeDefault ValueDescription
homeTitleString"SCE-UNIVERSE"应用程序主页标题。
isShowFriendshipRateBooleanfalse是否显示友情训练倍率。
isShowAllFriendshipRateBooleanfalse是否显示所有友情训练倍率。
isCalcV2Booleanfalse是否启用 V2 计算模式。
isCalcV3Booleanfalse是否启用 V3 计算模式。
isCalcV4Booleanfalse是否启用 V4 计算模式。
isCalcV5Booleanfalse是否启用 V5 计算模式。
isV5rectifyBooleanfalse是否启用 V5 校正。
defaultLoopV5Integer1V5 计算默认循环次数。
isAutoSaveCardDataBooleantrue是否自动保存卡片数据。
cardDataSavePathString""卡片数据保存路径。
isCalcDIBooleanfalse是否启用 DI 计算。
portInteger8080应用程序监听端口。
settingDataSavePathString""设置数据保存路径。
v5DefaultSpeedString{"main":"0","sub":"0","SP":"0"}V5 默认速度属性。
v5DefaultPowerString{"main":"0","sub":"0","SP":"0"}V5 默认力量属性。
v5DefaultStaminaString{"main":"0","sub":"0","SP":"0"}V5 默认耐力属性。
v5DefaultGutsString{"main":"0","sub":"0","SP":"0"}V5 默认毅力属性。
v5DefaultWitString{"main":"0","sub":"0","SP":"0"}V5 默认智力属性。

Source: src/cn/oraclestar/sce/App/App.java

相关链接

Sources

(10 files)
src/cn/oraclestar/sce/App
src/cn/oraclestar/sce/system
src/cn/oraclestar/sce/system/modloader
src/cn/oraclestar/sce/system/router
src/cn/oraclestar/sce/system/setManager
src/cn/oraclestar/sce/system/umaCore

On this page