@@ -9937,30 +9937,65 @@ export class Game extends GameCompatible {
99379937 }
99389938 } ) ;
99399939 }
9940- game . saveConfig ( "version" , lib . version ) ;
9941- if ( _status . extensionChangeLog ) {
9942- Object . keys ( _status . extensionChangeLog ) . forEach ( value => {
9943- const li = document . createElement ( "li" ) ;
9944- li . innerHTML = `${ value } :${ _status . extensionChangeLog [ value ] } ` ;
9945- ul . appendChild ( li ) ;
9946- } ) ;
9940+ const dialog = ui . create . dialog ( caption , "hidden" ) ;
9941+ if ( lib . version != lib . config . version ) {
9942+ const lic = ui . create . div ( dialog . content ) ;
9943+ lic . style . display = "block" ;
9944+ lic . appendChild ( ul ) ;
99479945 }
9948- const dialog = ui . create . dialog ( caption , "hidden" ) ,
9949- lic = ui . create . div ( dialog . content ) ;
9950- lic . style . display = "block" ;
9951- ul . style . display = "inline-block" ;
9952- ul . style . marginLeft = "-40px" ;
9953- lic . appendChild ( ul ) ;
9954- if ( players && players . length ) {
9946+ game . saveConfig ( "version" , lib . version ) ;
9947+ if ( players ?. length ) {
99559948 dialog . addSmall ( [ players , "character" ] ) ;
99569949 dialog . classList . add ( "forcebutton" ) ;
99579950 dialog . classList . add ( "withbg" ) ;
99589951 }
9959- if ( cards && cards . length ) {
9952+ if ( cards ? .length ) {
99609953 dialog . addSmall ( [ cards . map ( value => [ get . translation ( get . type ( value ) ) , "" , value ] ) , "vcard" ] ) ;
99619954 dialog . classList . add ( "forcebutton" ) ;
99629955 dialog . classList . add ( "withbg" ) ;
99639956 }
9957+ if ( _status . extensionChangeLog ) {
9958+ Object . keys ( _status . extensionChangeLog ) . forEach ( extname => {
9959+ dialog . add ( ui . create . div ( ".placeholder" ) ) ;
9960+ dialog . add ( `${ extname } ${ lib . extensionPack [ extname ] . version } 更新内容` ) ;
9961+ dialog . add ( ui . create . div ( ".placeholder" ) ) ;
9962+ const changeLogList = _status . extensionChangeLog [ extname ] ;
9963+ changeLogList . forEach ( item => {
9964+ switch ( item . type ) {
9965+ case "text" : {
9966+ const list = Array . isArray ( item . data ) ? item . data : [ item . data ] ;
9967+ if ( item . addText ) {
9968+ list . forEach ( value => {
9969+ dialog . addText ( value ) ;
9970+ } ) ;
9971+ } else {
9972+ list . forEach ( value => {
9973+ const li = document . createElement ( "li" ) ;
9974+ li . innerHTML = value ;
9975+ li . style . textAlign = item . textAlign || "center" ;
9976+ dialog . content . appendChild ( li ) ;
9977+ } ) ;
9978+ }
9979+ break ;
9980+ }
9981+ case "players" : {
9982+ dialog . addSmall ( [ item . data , "character" ] ) ;
9983+ dialog . classList . add ( "forcebutton" ) ;
9984+ dialog . classList . add ( "withbg" ) ;
9985+ break ;
9986+ }
9987+ case "cards" : {
9988+ dialog . addSmall ( [ item . data . map ( value => [ get . translation ( get . type ( value ) ) , "" , value ] ) , "vcard" ] ) ;
9989+ dialog . classList . add ( "forcebutton" ) ;
9990+ dialog . classList . add ( "withbg" ) ;
9991+ break ;
9992+ }
9993+ default :
9994+ return ;
9995+ }
9996+ } ) ;
9997+ } ) ;
9998+ }
99649999 dialog . open ( ) ;
996510000 let hidden = false ;
996610001 if ( ! ui . auto . classList . contains ( "hidden" ) ) {
@@ -9979,8 +10014,9 @@ export class Game extends GameCompatible {
997910014 lib . init . onfree ( ) ;
998010015 }
998110016 /**
9982- * @param { string } str
9983- * @param { string } [extname]
10017+ * 显示显示扩展的更新日志,在game.showChangeLog时显示扩展更新内容
10018+ * @param { string } str 更新日志内容,支持以下格式:`string`: 文本,自动包装为 `{ type: 'text', data: str }`;`Array`: 对象数组,每个对象格式为 `{ type, data, 其他属性 }`; `Object`: 单个日志对象,自动包装成数组
10019+ * @param { string } [extname] 扩展名,未输入则使用_status.extension
998410020 */
998510021 showExtensionChangeLog ( str , extname ) {
998610022 extname = extname || _status . extension ;
@@ -9989,11 +10025,19 @@ export class Game extends GameCompatible {
998910025 return ;
999010026 }
999110027 game . saveConfig ( cfg , lib . extensionPack [ extname ] . version ) ;
9992- if ( _status . extensionChangeLog ) {
9993- return ;
10028+ _status . extensionChangeLog ??= { } ;
10029+ if ( typeof str === "string" ) {
10030+ _status . extensionChangeLog [ extname ] = [
10031+ {
10032+ type : "text" ,
10033+ data : str ,
10034+ } ,
10035+ ] ;
10036+ } else if ( Array . isArray ( str ) ) {
10037+ _status . extensionChangeLog [ extname ] = str ;
10038+ } else if ( get . objtype ( str ) === "object" ) {
10039+ _status . extensionChangeLog [ extname ] = [ str ] ;
999410040 }
9995- _status . extensionChangeLog = { } ;
9996- _status . extensionChangeLog [ extname ] = str ;
999710041 }
999810042 /**
999910043 * @param { string } key
0 commit comments