feat(jogo): expediente dos mortos, jogo de zumbis em primeira pessoa
Etapa 1 inteira (logica com 100% de cobertura, cena 3D, toque, sons, bancada de desempenho, e2e) e a base da etapa 2 (mapa novo no Tiled, texturas, imagens dos itens, sons conferidos, golpe recortado e medido). Pagina /jogo fora do menu e do sitemap ate a medicao no celular.
This commit is contained in:
1 parent
c7d09d63d4
commit
67b32fcab3
118 files changed
+16730
No files matched your search
@@ -0,0 +1,45 @@
|
||||
export type Credito = {
|
||||
arquivo: string;
|
||||
origem: string;
|
||||
autor: string;
|
||||
licenca: string;
|
||||
};
|
||||
|
||||
export const LICENCAS_ACEITAS = ["CC0-1.0", "propria"] as const;
|
||||
|
||||
function errosDoCredito({
|
||||
arquivo,
|
||||
origem,
|
||||
autor,
|
||||
licenca,
|
||||
}: Credito): string[] {
|
||||
const erros: string[] = [];
|
||||
if (!(LICENCAS_ACEITAS as readonly string[]).includes(licenca)) {
|
||||
erros.push(`${arquivo}: licença não aceita (${licenca}).`);
|
||||
}
|
||||
if (licenca === "CC0-1.0" && !origem.startsWith("https://")) {
|
||||
erros.push(`${arquivo}: a origem de CC0-1.0 deve começar com https://.`);
|
||||
}
|
||||
if (autor.trim() === "") erros.push(`${arquivo}: autor vazio.`);
|
||||
return erros;
|
||||
}
|
||||
|
||||
export function validarCreditos(
|
||||
arquivos: string[],
|
||||
creditos: Credito[],
|
||||
): string[] {
|
||||
const erros: string[] = [];
|
||||
const vistos = new Set<string>();
|
||||
for (const credito of creditos) {
|
||||
if (vistos.has(credito.arquivo))
|
||||
erros.push(`${credito.arquivo}: creditado mais de uma vez.`);
|
||||
vistos.add(credito.arquivo);
|
||||
if (!arquivos.includes(credito.arquivo))
|
||||
erros.push(`${credito.arquivo}: crédito de arquivo que não existe.`);
|
||||
erros.push(...errosDoCredito(credito));
|
||||
}
|
||||
for (const arquivo of arquivos) {
|
||||
if (!vistos.has(arquivo)) erros.push(`${arquivo}: arquivo sem crédito.`);
|
||||
}
|
||||
return erros;
|
||||
}
|
||||
Reference in new issue
Block a user