Casa de câmbio que define taxas entre duas moedas, uni- ou bidirecional.
currencyExchange#
Define trocas entre moedas: 100 Gem → 5000 Gold, 10 Tickets → 1 Gem, etc. Suporta uma direção só ou os dois lados.
Por que importa#
Em jogos com múltiplas moedas (premium + soft + event), as conversões precisam ficar visíveis e auditáveis. Se "100 Gem = 5000 Gold" vive só no código do shop, o time de design não consegue iterar a economia sem pedir build pro programador. Aqui isso vira documento + JSON exportado.
Onde costuma viver#
- Página de tipo
💱 Casa de Câmbio. Wizard pergunta as duas moedas e a taxa inicial. - Páginas em branco quando você quer juntar várias trocas relacionadas (ex.: "Banco Premium" com 5 conversões diferentes).
Singleton — 1 addon por página, com N trocas (entries[]).
Schema#
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
idSim | string | ID interno. | |
nameSim | string | Nome do addon. | |
entriesSim | CurrencyExchangeEntry[] | Lista de trocas. |
CurrencyExchangeEntry#
| Campo | Tipo | Padrão | Descrição |
|---|---|---|---|
idSim | string | ID interno. | |
fromCurrencyRef | string (sectionId) | Página da moeda que o jogador gasta. | |
fromAmountSim | number | Quanto da fromCurrency é gasto por troca. | |
toCurrencyRef | string (sectionId) | Página da moeda que o jogador recebe. | |
toAmountSim | number | Quanto da toCurrency é recebido por troca. | |
directionSim | "oneWay" | "bidirectional" | oneWay: só from→to (Gem vira Gold, mas não o contrário). bidirectional: pode trocar nos dois sentidos pela mesma taxa. | |
notes | string | Notas livres (limites diários, condições, flavor). |
Exemplo#
Banco Premium com 2 trocas: Gem → Gold (oneWay) e Tickets ↔ Gem (bidirectional).
{
"id": "exchange-bank",
"name": "Banco Premium",
"entries": [
{
"id": "ex1",
"fromCurrencyRef": "section-gem",
"fromAmount": 100,
"toCurrencyRef": "section-gold",
"toAmount": 5000,
"direction": "oneWay",
"notes": "Taxa fixa. Não permite voltar."
},
{
"id": "ex2",
"fromCurrencyRef": "section-tickets",
"fromAmount": 10,
"toCurrencyRef": "section-gem",
"toAmount": 1,
"direction": "bidirectional",
"notes": "Disponível só durante eventos."
}
]
}
Validação#
- Mesma moeda dos dois lados: o painel bloqueia (não faz sentido trocar Gold por Gold).
- Refs quebradas: se você apagar uma das moedas, o painel mostra a entry com aviso e ela não exporta até você corrigir.
- Amounts ≤ 0: rejeitados; troca grátis ou negativa não tem semântica clara.
Wizard#
A page type 💱 Casa de Câmbio tem um wizard mais elaborado que o padrão:
- Dialog pergunta as duas moedas que essa casa troca (não pode ser a mesma).
- Pergunta a direção (oneWay/bidirectional).
- Pergunta a taxa (
fromAmount↔toAmount). - A página nasce com a entry inicial pronta.
Depois você pode adicionar entries adicionais (ex.: troca em pacotes — 100 Gem → 5000 Gold, 500 Gem → 30000 Gold com bonus).