Refactor command processing logic and add new commands for variable manipulation

This commit is contained in:
kwaroran
2024-03-28 18:27:18 +09:00
parent 949269e2d6
commit 9ad8262eb6

View File

@@ -51,7 +51,6 @@ async function processCommand(command:string, pipe:string):Promise<false | strin
chara: currentChar.type === 'character' ? currentChar : null chara: currentChar.type === 'character' ? currentChar : null
}) })
} }
console.log(commandName, arg, namedArg)
switch(commandName){ switch(commandName){
//STScript compatibility commands //STScript compatibility commands
@@ -174,6 +173,43 @@ async function processCommand(command:string, pipe:string):Promise<false | strin
} }
return '' return ''
} }
case 'setvar':{
const db = get(DataBase)
const selectedChar = get(selectedCharID)
const char = db.characters[selectedChar]
const chat = char.chats[char.chatPage]
chat.scriptstate = chat.scriptstate ?? {}
chat.scriptstate['$' + namedArg['key']] = arg[0]
char.chats[char.chatPage] = chat
db.characters[selectedChar] = char
setDatabase(db)
return ''
}
case 'addvar':{
const db = get(DataBase)
const selectedChar = get(selectedCharID)
const char = db.characters[selectedChar]
const chat = char.chats[char.chatPage]
chat.scriptstate = chat.scriptstate ?? {}
chat.scriptstate['$' + namedArg['key']] = (Number(chat.scriptstate['$' + namedArg['key']]) + Number(arg[0])).toString()
char.chats[char.chatPage] = chat
db.characters[selectedChar] = char
setDatabase(db)
return ''
}
case 'getvar':{
const db = get(DataBase)
const selectedChar = get(selectedCharID)
const char = db.characters[selectedChar]
const chat = char.chats[char.chatPage]
chat.scriptstate = chat.scriptstate ?? {}
pipe = (chat.scriptstate['$' + namedArg['key']]).toString() ?? 'null'
return pipe
}
} }
return false return false
} }
@@ -188,7 +224,7 @@ function commandParser(command:string, pipe:string){
let argArray:string[] = [] let argArray:string[] = []
let namedArg:{[key:string]:string} = {} let namedArg:{[key:string]:string} = {}
for(let i = 1; i<sliced.length; i++){ for(let i = 1; i<sliced.length; i++){
if(sliced.includes('=')){ if(sliced[i].includes('=')){
const [key, value] = sliced[i].split('=') const [key, value] = sliced[i].split('=')
namedArg[key] = value namedArg[key] = value
} }