Compare commits
3 Commits
Author | SHA1 | Date | |
---|---|---|---|
edef5cc6dc | |||
2dad0de4f1 | |||
14a65eb5bb |
13
CHANGELOG.md
13
CHANGELOG.md
@ -1,3 +1,16 @@
|
|||||||
|
## 0.18.3
|
||||||
|
|
||||||
|
- Updated Rainycolor's domain・真
|
||||||
|
|
||||||
|
## 0.18.2
|
||||||
|
|
||||||
|
- Updated Rainycolor's domain
|
||||||
|
|
||||||
|
## 0.18.1
|
||||||
|
|
||||||
|
- Keys can now be unbinded with Esc
|
||||||
|
- Fixed CHUNITHM IR behavior on actual keyboards
|
||||||
|
|
||||||
## 0.18.0
|
## 0.18.0
|
||||||
|
|
||||||
- Added new grouping options to the package list
|
- Added new grouping options to the package list
|
||||||
|
@ -9,7 +9,7 @@ This is a program that seeks to streamline game data configuration, currently su
|
|||||||
|
|
||||||
STARTLINER is four things:
|
STARTLINER is four things:
|
||||||
|
|
||||||
- a mod installer and updater, powered by [Rainycolor Watercolor](https://rainy.patafour.zip),
|
- a mod installer and updater, powered by [Rainycolor Watercolor](https://rainycolor.org),
|
||||||
- a configuration GUI for segatools,
|
- a configuration GUI for segatools,
|
||||||
- a glorified `start.bat` clicker, with automatic monitor setup and rollback,
|
- a glorified `start.bat` clicker, with automatic monitor setup and rollback,
|
||||||
- [an abstraction allowing data configuration without touching the game directory](https://gitea.tendokyu.moe/akanyan/STARTLINER/wiki/Architecture-details).
|
- [an abstraction allowing data configuration without touching the game directory](https://gitea.tendokyu.moe/akanyan/STARTLINER/wiki/Architecture-details).
|
||||||
|
@ -117,12 +117,16 @@ impl Keyboard {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Keyboard::Chunithm(kb) => {
|
Keyboard::Chunithm(kb) => {
|
||||||
|
let mut enabled_ir = false;
|
||||||
if kb.enabled {
|
if kb.enabled {
|
||||||
for (i, cell) in kb.cell.iter().enumerate() {
|
for (i, cell) in kb.cell.iter().enumerate() {
|
||||||
ini.with_section(Some("slider")).set(format!("cell{}", i + 1), cell.to_string());
|
ini.with_section(Some("slider")).set(format!("cell{}", i + 1), cell.to_string());
|
||||||
}
|
}
|
||||||
for (i, ir) in kb.ir.iter().enumerate() {
|
for (i, ir) in kb.ir.iter().enumerate() {
|
||||||
ini.with_section(Some("ir")).set(format!("ir{}", i + 1), ir.to_string());
|
ini.with_section(Some("ir")).set(format!("ir{}", i + 1), (*ir).to_string());
|
||||||
|
if i > 0 && *ir != 0 {
|
||||||
|
enabled_ir = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
ini.with_section(Some("io3"))
|
ini.with_section(Some("io3"))
|
||||||
.set("test", kb.test.to_string())
|
.set("test", kb.test.to_string())
|
||||||
@ -140,8 +144,13 @@ impl Keyboard {
|
|||||||
.set("service", "0")
|
.set("service", "0")
|
||||||
.set("coin", "0");
|
.set("coin", "0");
|
||||||
}
|
}
|
||||||
ini.with_section(Some("io3"))
|
if enabled_ir {
|
||||||
.set("ir", "0");
|
ini.with_section(Some("io3"))
|
||||||
|
.set("ir", "0");
|
||||||
|
} else {
|
||||||
|
ini.with_section(Some("io3"))
|
||||||
|
.set("ir", kb.ir[0].to_string());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ impl Package {
|
|||||||
loc: None,
|
loc: None,
|
||||||
rmt: Some(Remote {
|
rmt: Some(Remote {
|
||||||
package_url: p.package_url,
|
package_url: p.package_url,
|
||||||
download_url: v.download_url,
|
download_url: v.download_url.replace("https://rainy.patafour.zip/", "https://www.rainycolor.org/"),
|
||||||
icon: v.icon,
|
icon: v.icon,
|
||||||
deprecated: p.is_deprecated,
|
deprecated: p.is_deprecated,
|
||||||
nsfw: p.has_nsfw_content,
|
nsfw: p.has_nsfw_content,
|
||||||
|
@ -132,7 +132,7 @@ impl PackageStore {
|
|||||||
prelude::*,
|
prelude::*,
|
||||||
};
|
};
|
||||||
|
|
||||||
let response = reqwest::get(format!("https://rainy.patafour.zip/c/{game}/api/v1/package/")).await?;
|
let response = reqwest::get(format!("https://www.rainycolor.org/c/{game}/api/v1/package/")).await?;
|
||||||
|
|
||||||
let reader = response
|
let reader = response
|
||||||
.bytes_stream()
|
.bytes_stream()
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"$schema": "https://schema.tauri.app/config/2",
|
"$schema": "https://schema.tauri.app/config/2",
|
||||||
"productName": "STARTLINER",
|
"productName": "STARTLINER",
|
||||||
"version": "0.18.0",
|
"version": "0.18.3",
|
||||||
"identifier": "zip.patafour.startliner",
|
"identifier": "zip.patafour.startliner",
|
||||||
"build": {
|
"build": {
|
||||||
"beforeDevCommand": "bun run dev",
|
"beforeDevCommand": "bun run dev",
|
||||||
|
@ -4,6 +4,9 @@ import InputText from 'primevue/inputtext';
|
|||||||
import { fromKeycode, toKeycode } from '../keyboard';
|
import { fromKeycode, toKeycode } from '../keyboard';
|
||||||
import { usePrfStore } from '../stores';
|
import { usePrfStore } from '../stores';
|
||||||
import { OngekiButtons } from '../types';
|
import { OngekiButtons } from '../types';
|
||||||
|
import { useI18n } from 'vue-i18n';
|
||||||
|
|
||||||
|
const { t } = useI18n();
|
||||||
|
|
||||||
const prf = usePrfStore();
|
const prf = usePrfStore();
|
||||||
|
|
||||||
@ -61,6 +64,10 @@ const handleKey = (
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (event.code === 'Escape') {
|
||||||
|
keycode = 0;
|
||||||
|
}
|
||||||
|
|
||||||
if (index !== undefined) {
|
if (index !== undefined) {
|
||||||
data[button][index] = keycode;
|
data[button][index] = keycode;
|
||||||
} else {
|
} else {
|
||||||
@ -160,13 +167,24 @@ const fontSize = computed(() => {
|
|||||||
<InputText
|
<InputText
|
||||||
:style="{
|
:style="{
|
||||||
width: small ? '2.8rem' : '5rem',
|
width: small ? '2.8rem' : '5rem',
|
||||||
height: small ? '2.8rem' : tall ? '10rem' : '5rem',
|
height:
|
||||||
|
small && tall
|
||||||
|
? '5rem'
|
||||||
|
: small
|
||||||
|
? '2.8rem'
|
||||||
|
: tall
|
||||||
|
? '10rem'
|
||||||
|
: '5rem',
|
||||||
fontSize,
|
fontSize,
|
||||||
backgroundColor: color,
|
backgroundColor: color,
|
||||||
}"
|
}"
|
||||||
unstyled
|
unstyled
|
||||||
class="text-center buttoninputtext"
|
class="text-center buttoninputtext"
|
||||||
v-tooltip="tooltip ? `${tooltip}: ${modelValue}` : undefined"
|
v-tooltip="
|
||||||
|
tooltip
|
||||||
|
? `${tooltip}: ${modelValue} ${tooltip.startsWith('ir') ? `\n${t('cfg.keyboard.irTooltip')}` : ''}`
|
||||||
|
: undefined
|
||||||
|
"
|
||||||
@contextmenu.prevent="() => {}"
|
@contextmenu.prevent="() => {}"
|
||||||
@keydown="(ev: KeyboardEvent) => handleKey(button, ev, index)"
|
@keydown="(ev: KeyboardEvent) => handleKey(button, ev, index)"
|
||||||
@mousedown="
|
@mousedown="
|
||||||
|
@ -95,7 +95,7 @@ const prf = usePrfStore();
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="prf.current?.meta.game === 'chunithm'">
|
<div v-if="prf.current?.meta.game === 'chunithm'">
|
||||||
<div class="absolute left-1/2 top-1/5">
|
<div class="absolute left-9/17 top-1/12">
|
||||||
<div
|
<div
|
||||||
class="flex flex-row flex-nowrap gap-2 self-center w-full"
|
class="flex flex-row flex-nowrap gap-2 self-center w-full"
|
||||||
>
|
>
|
||||||
@ -108,6 +108,7 @@ const prf = usePrfStore();
|
|||||||
button="ir"
|
button="ir"
|
||||||
:index="idx - 1"
|
:index="idx - 1"
|
||||||
:tooltip="`ir${idx}`"
|
:tooltip="`ir${idx}`"
|
||||||
|
tall
|
||||||
small
|
small
|
||||||
color="rgba(0, 255, 0, 0.2)"
|
color="rgba(0, 255, 0, 0.2)"
|
||||||
/>
|
/>
|
||||||
|
@ -189,6 +189,8 @@ export default {
|
|||||||
'Only applicable if the IO module is set to segatools built-in (keyboard) or a compatible third-party module (like mu3io.NET)',
|
'Only applicable if the IO module is set to segatools built-in (keyboard) or a compatible third-party module (like mu3io.NET)',
|
||||||
leverMode: 'Lever mode',
|
leverMode: 'Lever mode',
|
||||||
mouse: 'Mouse',
|
mouse: 'Mouse',
|
||||||
|
irTooltip:
|
||||||
|
'When playing on an actual keyboard, only bind ir1; leave the rest unbound',
|
||||||
},
|
},
|
||||||
wine: {
|
wine: {
|
||||||
prefix: 'Wine prefix',
|
prefix: 'Wine prefix',
|
||||||
|
@ -229,6 +229,8 @@ export default {
|
|||||||
'Dotyczy tylko wtedy, gdy moduł IO jest ustawiony na wbudowaną emulację lub zgodny moduł (np. mu3io.NET)',
|
'Dotyczy tylko wtedy, gdy moduł IO jest ustawiony na wbudowaną emulację lub zgodny moduł (np. mu3io.NET)',
|
||||||
leverMode: 'Tryb wajchy',
|
leverMode: 'Tryb wajchy',
|
||||||
mouse: 'Mysz',
|
mouse: 'Mysz',
|
||||||
|
irTooltip:
|
||||||
|
'Jeśli grasz na klawiaturze, ustaw tylko ir1; pozostałe zostaw wyłączone',
|
||||||
},
|
},
|
||||||
wine: {
|
wine: {
|
||||||
prefix: 'Wine prefix',
|
prefix: 'Wine prefix',
|
||||||
|
Reference in New Issue
Block a user