Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
650d4e9cf8 | ||
|
|
7384726091 | ||
|
|
c68b365df2 | ||
|
|
531aee18bf | ||
|
|
428fb4bbec | ||
|
|
14af51668f | ||
|
|
3bae622c2b | ||
|
|
a8b7d599c2 | ||
|
|
26da5030a6 | ||
|
|
a9f8f88010 | ||
|
|
f3d3fa1b00 | ||
|
|
f7aa92acc6 | ||
|
|
7045aa9fcc | ||
|
|
efff8623d8 | ||
|
|
6fdbef1dd7 | ||
|
|
a926ad6423 | ||
|
|
8319f58f1e | ||
|
|
21cfe8bb89 | ||
|
|
b5a38531c4 | ||
|
|
666e274140 | ||
|
|
4015beb4f2 | ||
|
|
4afac814ee | ||
|
|
37bfe4e15e | ||
|
|
c701edd977 | ||
|
|
a455e3f12f | ||
|
|
be099aa810 | ||
|
|
24e9b8c055 | ||
|
|
cfe7cb7fd6 | ||
|
|
9499c7792b | ||
|
|
3a9db6d109 | ||
|
|
797eb80980 | ||
|
|
00e9f7c4d7 | ||
|
|
77a8777dcd | ||
|
|
b660bbeb96 | ||
|
|
bbce40b014 | ||
|
|
0ec45c8745 | ||
|
|
dfa70a9620 | ||
|
|
3079c6ea8a | ||
|
|
4d4aa8aeea | ||
|
|
721b6de930 | ||
|
|
7d419be27a | ||
|
|
07b6a381c1 | ||
|
|
45b8c3d98e | ||
|
|
0a8b0310d3 | ||
|
|
a50847da2b | ||
|
|
1fc446d02a | ||
|
|
7076123fcf | ||
|
|
449c9511e1 | ||
|
|
0ec49c4fe7 | ||
|
|
b41cadd95b | ||
|
|
0bd3e2255f | ||
|
|
dc17a7f963 | ||
|
|
995ad09cca | ||
|
|
b9e9976d34 | ||
|
|
d37dafd58c | ||
|
|
4d1611c6eb | ||
|
|
7268585ed9 | ||
|
|
1b929f1333 | ||
|
|
3ba108cf88 | ||
|
|
70f4e641dc | ||
|
|
23aa9c4788 | ||
|
|
04f9a5cb12 | ||
|
|
6b833341c5 | ||
|
|
4fe6bf4649 | ||
|
|
b10f031133 | ||
|
|
4d2278a8f8 | ||
|
|
5a38e0eafe | ||
|
|
4f2ee45abf | ||
|
|
09b031dc2e | ||
|
|
616d514fc5 | ||
|
|
b07a1e4941 | ||
|
|
f57a91ca74 | ||
|
|
f7ca286066 | ||
|
|
5b64292ec9 | ||
|
|
b9bd50c8c3 | ||
|
|
c5953f04c0 | ||
|
|
1ea78161d1 | ||
|
|
5c0f4856bd | ||
|
|
d4b472119d | ||
|
|
aba2e7a0aa | ||
|
|
94902edc57 | ||
|
|
721df30937 | ||
|
|
40d5780255 | ||
|
|
9f2b045ab0 | ||
|
|
187b4c48cb | ||
|
|
c132e94ed8 | ||
|
|
9cd8027256 | ||
|
|
9f0f60d186 | ||
|
|
5135689293 | ||
|
|
8693bff0c7 | ||
|
|
c6812db291 | ||
|
|
670626afa5 | ||
|
|
9bf41d01af | ||
|
|
16252fb04a | ||
|
|
99d4dede80 | ||
|
|
36eda83fe4 | ||
|
|
58174e68d2 | ||
|
|
ff770af3b5 | ||
|
|
41e5fe2f6b | ||
|
|
9d823375aa | ||
|
|
00f9f15370 | ||
|
|
9fe6e8d0ff | ||
|
|
0f8081d8f0 | ||
|
|
500885ffe0 | ||
|
|
259be2c8b0 | ||
|
|
1706592b81 | ||
|
|
6758e6287e | ||
|
|
a699115a03 | ||
|
|
bb8e6a8885 | ||
|
|
81a1dd1bc3 | ||
|
|
0f1740a7ad | ||
|
|
3d61fc3954 | ||
|
|
6226de3795 | ||
|
|
17824963aa | ||
|
|
75cbe8250f | ||
|
|
6b17288962 | ||
|
|
262c774718 | ||
|
|
4a2c88f0e3 | ||
|
|
c395b4e890 | ||
|
|
818af5b36f | ||
|
|
a080c0ea56 | ||
|
|
fbeef76f01 | ||
|
|
45d310b9b4 | ||
|
|
481e4a9514 | ||
|
|
fde68603cb | ||
|
|
686fee043e | ||
|
|
4b709ffd80 | ||
|
|
733680301c | ||
|
|
0ba8cfc800 | ||
|
|
84ad19a47e | ||
|
|
058acd6325 | ||
|
|
497209fc9a | ||
|
|
2289480812 | ||
|
|
de418c0da8 | ||
|
|
713e328138 | ||
|
|
6a5a80d7af | ||
|
|
88f0439f79 | ||
|
|
c244424af9 | ||
|
|
c26d888263 | ||
|
|
f8dbd01358 | ||
|
|
e3d5d8b0d3 | ||
|
|
1b7511f6ca | ||
|
|
9d2cc2fcb3 | ||
|
|
44480221db | ||
|
|
4d13a4ef25 | ||
|
|
22f408cc60 | ||
|
|
927459344b | ||
|
|
08ab9ba069 | ||
|
|
1918c8d9c7 | ||
|
|
381254ed4d | ||
|
|
a11a6ef59f | ||
|
|
086e4682d4 | ||
|
|
bf22dc2511 | ||
|
|
6585c9ffcb | ||
|
|
13585491a4 | ||
|
|
72a629e88b | ||
|
|
f57bec560a | ||
|
|
1f49486870 | ||
|
|
06f7cfbfad | ||
|
|
e1b92278a5 | ||
|
|
b3c50f4694 | ||
|
|
7dd05ac92f | ||
|
|
800a82045d | ||
|
|
c96dec4692 | ||
|
|
417c126777 | ||
|
|
1205192e8a | ||
|
|
aa2f547856 | ||
|
|
57e72de021 | ||
|
|
15ae2b8221 | ||
|
|
f895b7979d | ||
|
|
bec7f067bc | ||
|
|
e50a3e80e9 | ||
|
|
afb0b931c5 | ||
|
|
fb1568259b |
@@ -0,0 +1,68 @@
|
|||||||
|
# Le Gitea Actions del gioco: girano sul runner del PC di Andrea (make runner; label ubuntu-latest = node:22-bookworm).
|
||||||
|
# A ogni push su main e a ogni tag i test unitari; su un tag vX.Y.Z (o a mano, «Run workflow») anche le venti prove nel
|
||||||
|
# browser, una per job nell'immagine di Playwright, sulla scheda video del PC; se passa tutto, la release.
|
||||||
|
# Il controllo dei file pubblicabili non sta qui (a pipeline partita il push è già pubblico): è l'hook pre-push.
|
||||||
|
name: test
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: [main]
|
||||||
|
tags: ['v*']
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Test unitari
|
||||||
|
run: node --version && node --test tests/*.test.mjs
|
||||||
|
|
||||||
|
# Le prove nel browser, una per job: l'elenco è SUITES di scripts/verify.mjs (verify.test.mjs pretende che coincidano),
|
||||||
|
# l'immagine ha la stessa versione di Playwright di package-lock.json (idem).
|
||||||
|
browser:
|
||||||
|
needs: test
|
||||||
|
if: startsWith(github.ref, 'refs/tags/v') || github.event_name == 'workflow_dispatch'
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
container:
|
||||||
|
image: mcr.microsoft.com/playwright:v1.64.1-noble
|
||||||
|
# La scheda video del PC (runtime NVIDIA di Docker): Chromium disegna lì, tests/chromium.mjs la trova da solo.
|
||||||
|
options: --gpus all -e NVIDIA_DRIVER_CAPABILITIES=all
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
prova: [principale, minigiochi, telefoni, ambient, veicoli, ingorgo, smarronata, briscola, tressette, scopa, biliardo, flipper, micro, cerbottana, condor, campana, bruciate, gara, telefono, risveglio, peso]
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: Playwright
|
||||||
|
run: npm ci --no-audit --no-fund
|
||||||
|
- name: Prova ${{ matrix.prova }}
|
||||||
|
run: node scripts/verify.mjs ${{ matrix.prova }}
|
||||||
|
|
||||||
|
release:
|
||||||
|
needs: [test, browser]
|
||||||
|
if: startsWith(github.ref, 'refs/tags/v')
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
fetch-depth: 0
|
||||||
|
- name: Release del tag
|
||||||
|
env:
|
||||||
|
TOKEN: ${{ secrets.GITEA_TOKEN }}
|
||||||
|
TAG: ${{ github.ref_name }}
|
||||||
|
API: ${{ github.server_url }}/api/v1/repos/${{ github.repository }}
|
||||||
|
run: |
|
||||||
|
prev=$(git describe --tags --abbrev=0 "$TAG^" 2>/dev/null || true)
|
||||||
|
{
|
||||||
|
echo "Si gioca su https://50037.manzolo.it; qui sotto lo zip di questa versione."
|
||||||
|
echo
|
||||||
|
echo "Cosa cambia${prev:+ da $prev}:"
|
||||||
|
echo
|
||||||
|
git log --no-merges --format='- %s' ${prev:+$prev..}"$TAG" | grep -v -e '^- Versione [0-9]' | cut -c1-400
|
||||||
|
} > note.md
|
||||||
|
node -e 'const fs=require("fs");process.stdout.write(JSON.stringify({tag_name:process.env.TAG,name:"Versione "+process.env.TAG.slice(1),body:fs.readFileSync("note.md","utf8")}))' > release.json
|
||||||
|
code=$(curl -s -o risposta.json -w '%{http_code}' -X POST -H "Authorization: token $TOKEN" -H 'Content-Type: application/json' --data @release.json "$API/releases")
|
||||||
|
cat risposta.json | head -c 400; echo
|
||||||
|
[ "$code" = 201 ] || [ "$code" = 409 ]
|
||||||
@@ -7,3 +7,4 @@ assets/generated/
|
|||||||
.venv/
|
.venv/
|
||||||
.env
|
.env
|
||||||
deploy.local.mk
|
deploy.local.mk
|
||||||
|
.verify-ok.json
|
||||||
|
|||||||
@@ -16,9 +16,19 @@ i suoi ricordi: non inventare persone, luoghi o fatti del paese al posto suoi; p
|
|||||||
(`tools/slice_sprites.py`, `scripts/build-site.sh`, `scripts/bump.sh`, `scripts/check-public.sh`, action di Pages).
|
(`tools/slice_sprites.py`, `scripts/build-site.sh`, `scripts/bump.sh`, `scripts/check-public.sh`, action di Pages).
|
||||||
- Nessun build step: ES modules statici, server locale con `python3 -m http.server`.
|
- Nessun build step: ES modules statici, server locale con `python3 -m http.server`.
|
||||||
- Ogni funzionalità con il suo test; un test automatico percorre tutta la soluzione dell'avventura.
|
- Ogni funzionalità con il suo test; un test automatico percorre tutta la soluzione dell'avventura.
|
||||||
- Verifica visiva nel browser con Playwright e swiftshader prima di dichiarare finito qualcosa di grafico.
|
- Le prove nel browser sono a sezioni (`scripts/verify.mjs`, dal 2026-11-01): `make verify` rifà solo quelle i cui ingressi
|
||||||
|
sono cambiati dall'ultimo verde (la briscola se cambia la briscola, la partita intera se cambiano storia, motore, stile
|
||||||
|
o risorse). Un `chromium.launch` nuovo nelle prove usa `args: ARGS` di `tests/chromium.mjs`.
|
||||||
|
Gli effetti pesanti li scopre la prova `peso` (`tests/peso.browser.mjs`): sempre con swiftshader, misura arretrato grafico e
|
||||||
|
fotogrammi di ogni scena e primo piano; si rifà quando cambia un disegno (`*-render.js`, `render.js`, effetti). Una prova nuova in `tests/*.browser.mjs` va aggiunta a `SUITES` (il test `verify.test.mjs` lo pretende).
|
||||||
|
- Verifica visiva nel browser con Playwright prima di dichiarare finito qualcosa di grafico. Chromium disegna sulla scheda
|
||||||
|
video del PC se c'è, altrimenti con swiftshader (`tests/chromium.mjs`, dal 2026-11-01: giro intero ~4 min invece di ~16).
|
||||||
- Pubblicare (tag/bump/push) solo quando Andrea lo chiede.
|
- Pubblicare (tag/bump/push) solo quando Andrea lo chiede.
|
||||||
- Persone vere nel gioco solo con consenso; niente nomi, personaggi o musiche di giochi esistenti.
|
- Persone vere nel gioco solo con consenso; niente nomi, personaggi o musiche di giochi esistenti.
|
||||||
- Prompt delle immagini in `prompts/` e fogli grezzi in `assets/raw/`: esclusi da git.
|
- Prompt delle immagini in `prompts/` e fogli grezzi in `assets/raw/`: esclusi da git.
|
||||||
- Sfondi nuovi: li genera **Codex** con il suo strumento immagini integrato, gratis e senza chiave API
|
- Sfondi nuovi: li genera **Codex** con il suo strumento immagini integrato, gratis e senza chiave API
|
||||||
(`codex exec`, ricetta in `docs/GENERAZIONE_SFONDI.md`, «Generare con Codex»). Si lancia da qui, senza chiedere la chiave ad Andrea.
|
(`codex exec`, ricetta in `docs/GENERAZIONE_SFONDI.md`, «Generare con Codex»). Si lancia da qui, senza chiedere la chiave ad Andrea.
|
||||||
|
- **Pubblicare (dal 2026-11-01)**: origin è https://git.manzolo.it/manzolo/leggenda-del-regolo, pubblico: prima `make check-public`, poi `git push origin main --tags`, solo se Andrea lo chiede.
|
||||||
|
`make deploy` costruisce l'immagine dal tag della versione, la spinge su `git.manzolo.it/manzolo/leggenda-regolo:vX.Y.Z` (e `:latest`); sul VPS il compose fissa quel tag e fa `docker compose pull && up -d`.
|
||||||
|
Per tornare indietro: sul VPS (`Workspaces/docker/leggenda-regolo/docker-compose.yml`) si rimette il tag precedente e si rifà pull e up.
|
||||||
|
Hook pre-push (`make hooks`, una volta per clone) lancia check-public; le Gitea Actions (`.gitea/workflows/test.yml`: test unitari a ogni push; sui tag, o a mano, anche le venti prove nel browser, una per job, poi la release) girano sul runner del PC, che si crea o riavvia con `make runner`.
|
||||||
|
|||||||
@@ -13,13 +13,20 @@ COPY assets/voices /usr/share/nginx/html/assets/voices
|
|||||||
COPY assets/credits /usr/share/nginx/html/assets/credits
|
COPY assets/credits /usr/share/nginx/html/assets/credits
|
||||||
COPY assets/effects /usr/share/nginx/html/assets/effects
|
COPY assets/effects /usr/share/nginx/html/assets/effects
|
||||||
COPY assets/closeups /usr/share/nginx/html/assets/closeups
|
COPY assets/closeups /usr/share/nginx/html/assets/closeups
|
||||||
|
COPY assets/muro /usr/share/nginx/html/assets/muro
|
||||||
COPY assets/favicon /usr/share/nginx/html/assets/favicon
|
COPY assets/favicon /usr/share/nginx/html/assets/favicon
|
||||||
COPY assets/video /usr/share/nginx/html/assets/video
|
COPY assets/video /usr/share/nginx/html/assets/video
|
||||||
|
|
||||||
# Le immagini e i font citati da index.html e style.css prendono ?v=<versione>, come quelli caricati dal codice.
|
# Le immagini e i font citati da index.html e style.css prendono ?v=<versione>, come quelli caricati dal codice.
|
||||||
|
# Alla versione si aggiunge l'impronta del contenuto di assets/: uno sfondo rifatto senza cambiare versione (in
|
||||||
|
# locale, fra un bump e l'altro) ha un indirizzo nuovo, e il browser non tiene quello vecchio dalla cache lunga.
|
||||||
RUN cd /usr/share/nginx/html \
|
RUN cd /usr/share/nginx/html \
|
||||||
&& V=$(sed -n "s/^export const VERSION = '\([0-9.]*\)';$/\1/p" src/version.js) \
|
&& V=$(sed -n "s/^export const VERSION = '\([0-9.]*\)';$/\1/p" src/version.js) \
|
||||||
&& test -n "$V" \
|
&& test -n "$V" \
|
||||||
|
&& H=$(find assets -type f -exec md5sum {} + | sort -k2 | md5sum | cut -c1-8) \
|
||||||
|
&& sed -i -E 's#v=\$\{VERSION\}#v=${VERSION}-'"$H"'#' src/version.js \
|
||||||
|
&& grep -q "VERSION}-$H" src/version.js \
|
||||||
|
&& V="$V-$H" \
|
||||||
&& sed -i -E "s#url\((assets/[^)]*)\)#url(\1?v=$V)#g" style.css \
|
&& sed -i -E "s#url\((assets/[^)]*)\)#url(\1?v=$V)#g" style.css \
|
||||||
&& sed -i -E "s#src=\"(assets/[^\"]*)\"#src=\"\1?v=$V\"#g" index.html \
|
&& sed -i -E "s#src=\"(assets/[^\"]*)\"#src=\"\1?v=$V\"#g" index.html \
|
||||||
&& grep -q "?v=$V" style.css && grep -q "?v=$V" index.html
|
&& grep -q "?v=$V" style.css && grep -q "?v=$V" index.html
|
||||||
|
|||||||
@@ -23,8 +23,8 @@ DST ?= assets/scenes/$(notdir $(SRC))
|
|||||||
CROP ?=
|
CROP ?=
|
||||||
COLORS ?= 64
|
COLORS ?= 64
|
||||||
|
|
||||||
.PHONY: help serve open test browser verify check-public bump voci voci-elenco sfondi sfondi-genera sfondi-confronto background character \
|
.PHONY: help serve open test browser verify verify-browser verify-plan check-public hooks bump voci voci-elenco sfondi sfondi-genera sfondi-confronto background character \
|
||||||
build up down restart logs ps shell image-size deploy deploy-logs clean distclean
|
build up down restart logs ps shell image-size deploy deploy-logs runner clean distclean
|
||||||
|
|
||||||
## ------------------------------------------------------------ sviluppo
|
## ------------------------------------------------------------ sviluppo
|
||||||
|
|
||||||
@@ -47,14 +47,26 @@ test: ## Test della logica, della storia, della soluzione completa e del generat
|
|||||||
$(NODE) --test tests/*.test.mjs
|
$(NODE) --test tests/*.test.mjs
|
||||||
$(PYTHON) -m unittest discover -s tests -p "test_*.py" -q
|
$(PYTHON) -m unittest discover -s tests -p "test_*.py" -q
|
||||||
|
|
||||||
browser: ## Partita completa nel browser con Playwright
|
browser: ## Partita completa nel browser con Playwright (tre parti in processi paralleli, ~4,5 min)
|
||||||
$(NODE) tests/browser.mjs
|
$(NODE) tests/browser.mjs
|
||||||
|
|
||||||
verify: test browser check-public ## Tutti i controlli
|
verify: test check-public verify-browser ## Tutti i controlli: test unitari, file pubblicabili, prove nel browser cambiate (ALL=1: tutte)
|
||||||
|
|
||||||
|
# Le prove nel browser a sezioni: si rifanno solo quelle i cui ingressi sono cambiati dall'ultimo verde (.verify-ok.json,
|
||||||
|
# fuori da git); make verify-browser ALL=1 le rifà tutte, make verify-plan dice solo cosa rifarebbe; JOBS=2 in parallelo (con 4 vanno in timeout).
|
||||||
|
verify-browser: ## Le prove nel browser da rifare (ALL=1 tutte; PROVE="briscola flipper" solo quelle)
|
||||||
|
$(NODE) scripts/verify.mjs $(if $(ALL),--all,) $(PROVE)
|
||||||
|
|
||||||
|
verify-plan: ## Dice quali prove nel browser rifarebbe make verify, e perché
|
||||||
|
$(NODE) scripts/verify.mjs --plan
|
||||||
|
|
||||||
check-public: ## Prima di pubblicare: niente prompt, fogli grezzi, segreti o nomi della rete di casa (tutta la storia)
|
check-public: ## Prima di pubblicare: niente prompt, fogli grezzi, segreti o nomi della rete di casa (tutta la storia)
|
||||||
bash scripts/check-public.sh
|
bash scripts/check-public.sh
|
||||||
|
|
||||||
|
hooks: ## Attiva gli hook del repo (pre-push: check-public prima di ogni push)
|
||||||
|
git config core.hooksPath scripts/git-hooks
|
||||||
|
@echo "hook attivi da scripts/git-hooks: $$(ls scripts/git-hooks | tr '\n' ' ')"
|
||||||
|
|
||||||
bump: ## Nuova versione (PARTE=patch|minor|major): verifica, commit e tag v<versione>; poi make deploy
|
bump: ## Nuova versione (PARTE=patch|minor|major): verifica, commit e tag v<versione>; poi make deploy
|
||||||
scripts/bump.sh $(or $(PARTE),patch)
|
scripts/bump.sh $(or $(PARTE),patch)
|
||||||
|
|
||||||
@@ -87,11 +99,11 @@ background: ## Porta uno sfondo a 640x360 nel gioco (SRC=..., DST=..., CROP=x,y,
|
|||||||
@test -n "$(SRC)" || { echo "uso: make background SRC=assets/generated/nome.png [CROP=x,y,w,h]"; exit 2; }
|
@test -n "$(SRC)" || { echo "uso: make background SRC=assets/generated/nome.png [CROP=x,y,w,h]"; exit 2; }
|
||||||
$(PYTHON) tools/prepare_background.py $(SRC) $(DST) $(if $(CROP),--crop $(CROP)) --colors $(COLORS)
|
$(PYTHON) tools/prepare_background.py $(SRC) $(DST) $(if $(CROP),--crop $(CROP)) --colors $(COLORS)
|
||||||
|
|
||||||
character: ## Ritaglia un foglio sprite 4x2 e prepara il personaggio (NAME=andrea, SHEET=..., HEIGHT=120, FRAMES=..., REF=stand)
|
character: ## Ritaglia un foglio sprite 4x2 e prepara il personaggio (NAME=andrea, SHEET=..., HEIGHT=120, FRAMES=..., REF=stand, FIX=wave=1.3)
|
||||||
$(PYTHON) tools/slice_sprites.py --sheet $(SHEET) --out /tmp/regolo-$(NAME) --cols 4 --rows 2 \
|
$(PYTHON) tools/slice_sprites.py --sheet $(SHEET) --out /tmp/regolo-$(NAME) --cols 4 --rows 2 \
|
||||||
--despill --names $(FRAMES) --prefix $(NAME)_
|
--despill --names $(FRAMES) --prefix $(NAME)_
|
||||||
$(PYTHON) tools/prepare_character.py /tmp/regolo-$(NAME) $(NAME) assets/characters --height $(HEIGHT) \
|
$(PYTHON) tools/prepare_character.py /tmp/regolo-$(NAME) $(NAME) assets/characters --height $(HEIGHT) \
|
||||||
--frames $(FRAMES) --ref $(REF)
|
--frames $(FRAMES) --ref $(REF) $(if $(FIX),--fix $(FIX))
|
||||||
|
|
||||||
## ------------------------------------------------------------ docker
|
## ------------------------------------------------------------ docker
|
||||||
|
|
||||||
@@ -121,35 +133,53 @@ image-size: ## Dimensione dell'immagine
|
|||||||
|
|
||||||
## ------------------------------------------------------------ deploy su un server proprio
|
## ------------------------------------------------------------ deploy su un server proprio
|
||||||
|
|
||||||
# Host e indirizzo stanno in deploy.local.mk, fuori da git, per esempio:
|
# Host e cartella stanno in deploy.local.mk, fuori da git, per esempio:
|
||||||
# DEPLOY_HOST = root@mio-server
|
# DEPLOY_HOST = root@mio-server
|
||||||
# DEPLOY_URL = https://gioco.esempio
|
# DEPLOY_URL = https://gioco.esempio
|
||||||
|
# DEPLOY_DIR = docker/leggenda-regolo (la cartella del compose sul server)
|
||||||
|
# DEPLOY_IMAGE = registry.esempio/utente/leggenda-regolo
|
||||||
-include deploy.local.mk
|
-include deploy.local.mk
|
||||||
DEPLOY_DIR ?= /root/leggenda-regolo
|
DEPLOY_DIR ?= /root/leggenda-regolo
|
||||||
|
DEPLOY_IMAGE ?= git.manzolo.it/manzolo/leggenda-regolo
|
||||||
DEPLOY_TMP := $(shell mktemp -d -u /tmp/regolo-deploy.XXXXXX)
|
DEPLOY_TMP := $(shell mktemp -d -u /tmp/regolo-deploy.XXXXXX)
|
||||||
|
# La versione dell'ultimo commit (non della cartella di lavoro): il tag git, dell'immagine e del compose.
|
||||||
|
DEPLOY_VER := v$(shell git show HEAD:src/version.js 2>/dev/null | sed -n "s/.*VERSION = '\([^']*\)'.*/\1/p")
|
||||||
|
|
||||||
# Si pubblica l'ultimo commit (git archive HEAD), mai la cartella di lavoro: un'altra sessione può avere modifiche a
|
# Si pubblica il tag della versione dichiarata dall'ultimo commit (git archive vX.Y.Z, quello di make bump), mai la
|
||||||
# metà. Test su quella copia, immagine costruita e provata qui, poi spedita già pronta (docker save | docker load):
|
# cartella di lavoro: un'altra sessione può avere modifiche a metà, e i commit dopo il tag aspettano la versione dopo.
|
||||||
# sul server non si compila niente.
|
# Test su quella copia, immagine costruita e provata qui, spinta sul registry di Gitea come :vX.Y.Z e :latest; il
|
||||||
|
# VPS la scarica con il tag scritto nel suo compose (preso da HEAD, docker-compose.deploy.yml).
|
||||||
SMOKE_PORT ?= 18737
|
SMOKE_PORT ?= 18737
|
||||||
deploy: ## Pubblica l'ultimo commit: test, immagine costruita e provata qui, spedita al server e riavviata
|
deploy: ## Pubblica la versione dell'ultimo commit: test, immagine provata qui, push sul registry, pull e riavvio sul server
|
||||||
@test -n "$(DEPLOY_HOST)" || { echo "manca DEPLOY_HOST: scrivilo in deploy.local.mk"; exit 2; }
|
@test -n "$(DEPLOY_HOST)" || { echo "manca DEPLOY_HOST: scrivilo in deploy.local.mk"; exit 2; }
|
||||||
mkdir -p $(DEPLOY_TMP) && git archive HEAD | tar -x -C $(DEPLOY_TMP)
|
@git rev-parse -q --verify 'refs/tags/$(DEPLOY_VER)' >/dev/null || { echo "manca il tag $(DEPLOY_VER): prima make bump"; exit 2; }
|
||||||
|
mkdir -p $(DEPLOY_TMP) && git archive $(DEPLOY_VER) | tar -x -C $(DEPLOY_TMP)
|
||||||
cd $(DEPLOY_TMP) && $(NODE) --test tests/*.test.mjs
|
cd $(DEPLOY_TMP) && $(NODE) --test tests/*.test.mjs
|
||||||
docker build -q -t $(IMAGE):latest -t $(IMAGE):$$(git rev-parse --short HEAD) $(DEPLOY_TMP)
|
docker build -q -t $(DEPLOY_IMAGE):$(DEPLOY_VER) -t $(DEPLOY_IMAGE):latest $(DEPLOY_TMP)
|
||||||
@docker rm -f $(IMAGE)-prova >/dev/null 2>&1 || true
|
@docker rm -f $(IMAGE)-prova >/dev/null 2>&1 || true
|
||||||
docker run -d --rm --name $(IMAGE)-prova -p 127.0.0.1:$(SMOKE_PORT):80 $(IMAGE):latest >/dev/null
|
docker run -d --rm --name $(IMAGE)-prova -p 127.0.0.1:$(SMOKE_PORT):80 $(DEPLOY_IMAGE):$(DEPLOY_VER) >/dev/null
|
||||||
@ok=1; sleep 1; for u in / /src/main.js /assets/voices/index.json /assets/audio/cartello.mp3; do \
|
@ok=1; sleep 1; for u in / /src/main.js /assets/voices/index.json /assets/audio/cartello.mp3; do \
|
||||||
c=$$(curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1:$(SMOKE_PORT)$$u); echo " prova $$u → $$c"; [ "$$c" = 200 ] || ok=0; done; \
|
c=$$(curl -s -o /dev/null -w '%{http_code}' http://127.0.0.1:$(SMOKE_PORT)$$u); echo " prova $$u → $$c"; [ "$$c" = 200 ] || ok=0; done; \
|
||||||
docker rm -f $(IMAGE)-prova >/dev/null; [ $$ok = 1 ] || { echo "l'immagine non risponde come deve: non la spedisco"; exit 1; }
|
docker rm -f $(IMAGE)-prova >/dev/null; [ $$ok = 1 ] || { echo "l'immagine non risponde come deve: non la spedisco"; exit 1; }
|
||||||
ssh $(DEPLOY_HOST) 'mkdir -p $(DEPLOY_DIR)'
|
docker push -q $(DEPLOY_IMAGE):$(DEPLOY_VER)
|
||||||
scp -q $(DEPLOY_TMP)/docker-compose.homeserver.yml $(DEPLOY_HOST):$(DEPLOY_DIR)/docker-compose.yml
|
docker push -q $(DEPLOY_IMAGE):latest
|
||||||
docker save $(IMAGE):latest | gzip | ssh $(DEPLOY_HOST) 'gunzip | docker load -q && cd $(DEPLOY_DIR) && docker compose up -d && docker image prune -f >/dev/null'
|
git show HEAD:docker-compose.deploy.yml | sed 's|$(DEPLOY_IMAGE):VERSIONE|$(DEPLOY_IMAGE):$(DEPLOY_VER)|' | \
|
||||||
|
ssh $(DEPLOY_HOST) 'mkdir -p $(DEPLOY_DIR) && cat > $(DEPLOY_DIR)/docker-compose.yml'
|
||||||
|
ssh $(DEPLOY_HOST) 'cd $(DEPLOY_DIR) && docker compose pull -q && docker compose up -d && \
|
||||||
|
docker image ls $(DEPLOY_IMAGE) --format "{{.Repository}}:{{.Tag}}" | grep -v -x -e $(DEPLOY_IMAGE):$(DEPLOY_VER) | xargs -r docker image rm >/dev/null; \
|
||||||
|
docker image prune -f >/dev/null'
|
||||||
rm -rf $(DEPLOY_TMP)
|
rm -rf $(DEPLOY_TMP)
|
||||||
@# Sul server il prune toglie l'immagine vecchia; qui restano solo latest e quella appena pubblicata.
|
@# Qui restano solo latest e la versione appena pubblicata.
|
||||||
@docker image ls $(IMAGE) --format '{{.Tag}}' | grep -v -x -e latest -e $$(git rev-parse --short HEAD) | \
|
@docker image ls $(DEPLOY_IMAGE) --format '{{.Tag}}' | grep -v -x -e latest -e $(DEPLOY_VER) | \
|
||||||
xargs -r -I{} docker image rm -f $(IMAGE):{} >/dev/null
|
xargs -r -I{} docker image rm -f $(DEPLOY_IMAGE):{} >/dev/null
|
||||||
@echo "→ $(DEPLOY_URL) ($$(git log -1 --format='%h %s'))"
|
@# L'indirizzo pubblico deve servire la versione appena spedita.
|
||||||
|
@v=$$(git show $(DEPLOY_VER):src/version.js | grep -o "VERSION = '[^']*'"); \
|
||||||
|
for i in 1 2 3 4 5; do curl -s $(DEPLOY_URL)/src/version.js | grep -qF "$$v" && break; sleep 2; done; \
|
||||||
|
curl -s $(DEPLOY_URL)/src/version.js | grep -qF "$$v" || { echo "$(DEPLOY_URL) non serve $$v"; exit 1; }
|
||||||
|
@echo "→ $(DEPLOY_URL) ($(DEPLOY_IMAGE):$(DEPLOY_VER), $$(git log -1 --format='%h %s' $(DEPLOY_VER)))"
|
||||||
|
|
||||||
|
runner: ## Crea (se manca) e avvia sul PC il runner delle Gitea Actions (tools/gitea-runner, scripts/runner.sh)
|
||||||
|
bash scripts/runner.sh
|
||||||
|
|
||||||
deploy-logs: ## Log del container sul server di deploy
|
deploy-logs: ## Log del container sul server di deploy
|
||||||
@test -n "$(DEPLOY_HOST)" || { echo "manca DEPLOY_HOST: scrivilo in deploy.local.mk"; exit 2; }
|
@test -n "$(DEPLOY_HOST)" || { echo "manca DEPLOY_HOST: scrivilo in deploy.local.mk"; exit 2; }
|
||||||
|
|||||||
@@ -23,7 +23,9 @@ Si gioca online su **https://50037.manzolo.it** (50037 è il CAP di San Piero),
|
|||||||
|
|
||||||
## Giocare in locale
|
## Giocare in locale
|
||||||
|
|
||||||
Niente da installare e niente da compilare: HTML, CSS e moduli JavaScript ES.
|
Il gioco si scarica da **https://git.manzolo.it/manzolo/leggenda-del-regolo**: nella pagina dei
|
||||||
|
[tag](https://git.manzolo.it/manzolo/leggenda-del-regolo/tags) c'è lo zip di ogni versione (l'ultima è quella online).
|
||||||
|
Niente da installare e niente da compilare: HTML, CSS e moduli JavaScript ES. Dentro la cartella scompattata:
|
||||||
|
|
||||||
```zsh
|
```zsh
|
||||||
python3 -m http.server 8000 # poi http://localhost:8000
|
python3 -m http.server 8000 # poi http://localhost:8000
|
||||||
@@ -40,16 +42,16 @@ Oppure `make up` (Docker, su http://localhost:8080). Non aprire `index.html` con
|
|||||||
- `assets/`: sfondi, sprite, musiche, voci, carattere, video.
|
- `assets/`: sfondi, sprite, musiche, voci, carattere, video.
|
||||||
- `tools/`: gli strumenti (sprite dai fogli, voci con XTTS, musiche sintetizzate, favicon, taratura dei minigiochi).
|
- `tools/`: gli strumenti (sprite dai fogli, voci con XTTS, musiche sintetizzate, favicon, taratura dei minigiochi).
|
||||||
- `tests/`: `npm test` (unità: regole, storia coerente, voci, salvataggi) e `npm run browser` (Playwright: percorre
|
- `tests/`: `npm test` (unità: regole, storia coerente, voci, salvataggi) e `npm run browser` (Playwright: percorre
|
||||||
tutta la soluzione dell'avventura, su desktop e telefono); `npm run browser:briscola`, `:tressette`, `:scopa`,
|
tutta la soluzione dell'avventura, su desktop e telefono, in tre processi paralleli; `--parte=` per una sola);
|
||||||
`:biliardo`, `:effects` per le parti singole.
|
`npm run browser:briscola`, `:tressette`, `:scopa`, `:biliardo`, `:effects` per le parti singole.
|
||||||
- `video/`: i copioni dei video «Come si gioca» e della demo, girati in una macchina virtuale.
|
- `video/`: i copioni dei video «Come si gioca» e della demo, girati in una macchina virtuale.
|
||||||
- `docs/`: `PROGETTO.md` (l'idea, i personaggi, la mappa) e `STATO.md` (dove siamo, cosa manca).
|
- `docs/`: `PROGETTO.md` (l'idea, i personaggi, la mappa) e `STATO.md` (dove siamo, cosa manca).
|
||||||
|
|
||||||
```zsh
|
```zsh
|
||||||
make verify # sintassi, test, prova nel browser: quello che gira prima di ogni versione
|
make verify # test, file pubblicabili e le prove nel browser cambiate dall'ultimo verde (ALL=1: tutte)
|
||||||
make voci # le voci delle battute nuove (XTTS-v2 su GPU)
|
make voci # le voci delle battute nuove (XTTS-v2 su GPU)
|
||||||
make bump # nuova versione: verifica, commit e tag
|
make bump # nuova versione: verifica, commit e tag
|
||||||
make deploy # pubblica l'ultimo commit (immagine Docker spedita al server)
|
make deploy # pubblica la versione: immagine sul registry di Gitea, il server la scarica
|
||||||
```
|
```
|
||||||
|
|
||||||
## Chi ha fatto cosa
|
## Chi ha fatto cosa
|
||||||
|
|||||||
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
"image": "alpino_vino.png",
|
||||||
|
"height": 120,
|
||||||
|
"frames": {
|
||||||
|
"stand": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 69,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 28.2,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"blink": {
|
||||||
|
"x": 71,
|
||||||
|
"y": 0,
|
||||||
|
"w": 69,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 28.0,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"talk": {
|
||||||
|
"x": 142,
|
||||||
|
"y": 0,
|
||||||
|
"w": 72,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 29.4,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"explain": {
|
||||||
|
"x": 216,
|
||||||
|
"y": 0,
|
||||||
|
"w": 71,
|
||||||
|
"h": 116,
|
||||||
|
"ax": 29.3,
|
||||||
|
"ay": 116
|
||||||
|
},
|
||||||
|
"pour": {
|
||||||
|
"x": 289,
|
||||||
|
"y": 0,
|
||||||
|
"w": 72,
|
||||||
|
"h": 122,
|
||||||
|
"ax": 30.5,
|
||||||
|
"ay": 122
|
||||||
|
},
|
||||||
|
"pour2": {
|
||||||
|
"x": 363,
|
||||||
|
"y": 0,
|
||||||
|
"w": 73,
|
||||||
|
"h": 122,
|
||||||
|
"ax": 30.3,
|
||||||
|
"ay": 122
|
||||||
|
},
|
||||||
|
"give": {
|
||||||
|
"x": 438,
|
||||||
|
"y": 0,
|
||||||
|
"w": 66,
|
||||||
|
"h": 118,
|
||||||
|
"ax": 24.5,
|
||||||
|
"ay": 118
|
||||||
|
},
|
||||||
|
"cheers": {
|
||||||
|
"x": 506,
|
||||||
|
"y": 0,
|
||||||
|
"w": 72,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 33.4,
|
||||||
|
"ay": 120
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 125 KiB |
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
"image": "andrea-birra.png",
|
||||||
|
"height": 120,
|
||||||
|
"frames": {
|
||||||
|
"walk_1": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 68,
|
||||||
|
"h": 114,
|
||||||
|
"ax": 40.2,
|
||||||
|
"ay": 114
|
||||||
|
},
|
||||||
|
"walk_2": {
|
||||||
|
"x": 70,
|
||||||
|
"y": 0,
|
||||||
|
"w": 41,
|
||||||
|
"h": 114,
|
||||||
|
"ax": 20.7,
|
||||||
|
"ay": 114
|
||||||
|
},
|
||||||
|
"walk_3": {
|
||||||
|
"x": 113,
|
||||||
|
"y": 0,
|
||||||
|
"w": 67,
|
||||||
|
"h": 114,
|
||||||
|
"ax": 38.4,
|
||||||
|
"ay": 114
|
||||||
|
},
|
||||||
|
"walk_4": {
|
||||||
|
"x": 182,
|
||||||
|
"y": 0,
|
||||||
|
"w": 46,
|
||||||
|
"h": 114,
|
||||||
|
"ax": 25.3,
|
||||||
|
"ay": 114
|
||||||
|
},
|
||||||
|
"cheer_1": {
|
||||||
|
"x": 230,
|
||||||
|
"y": 0,
|
||||||
|
"w": 51,
|
||||||
|
"h": 133,
|
||||||
|
"ax": 21.1,
|
||||||
|
"ay": 133
|
||||||
|
},
|
||||||
|
"cheer_2": {
|
||||||
|
"x": 283,
|
||||||
|
"y": 0,
|
||||||
|
"w": 55,
|
||||||
|
"h": 130,
|
||||||
|
"ax": 24.5,
|
||||||
|
"ay": 130
|
||||||
|
},
|
||||||
|
"cheer_3": {
|
||||||
|
"x": 340,
|
||||||
|
"y": 0,
|
||||||
|
"w": 62,
|
||||||
|
"h": 130,
|
||||||
|
"ax": 23.8,
|
||||||
|
"ay": 130
|
||||||
|
},
|
||||||
|
"talk": {
|
||||||
|
"x": 404,
|
||||||
|
"y": 0,
|
||||||
|
"w": 58,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 21.7,
|
||||||
|
"ay": 120
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 93 KiB |
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
"image": "baldoria.png",
|
||||||
|
"height": 120,
|
||||||
|
"frames": {
|
||||||
|
"stand": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 59,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 28.6,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"blink": {
|
||||||
|
"x": 61,
|
||||||
|
"y": 0,
|
||||||
|
"w": 59,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 28.4,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"talk": {
|
||||||
|
"x": 122,
|
||||||
|
"y": 0,
|
||||||
|
"w": 59,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 28.6,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"explain": {
|
||||||
|
"x": 183,
|
||||||
|
"y": 0,
|
||||||
|
"w": 67,
|
||||||
|
"h": 122,
|
||||||
|
"ax": 29.4,
|
||||||
|
"ay": 122
|
||||||
|
},
|
||||||
|
"wave": {
|
||||||
|
"x": 252,
|
||||||
|
"y": 0,
|
||||||
|
"w": 101,
|
||||||
|
"h": 156,
|
||||||
|
"ax": 48.9,
|
||||||
|
"ay": 156
|
||||||
|
},
|
||||||
|
"wave2": {
|
||||||
|
"x": 355,
|
||||||
|
"y": 0,
|
||||||
|
"w": 127,
|
||||||
|
"h": 156,
|
||||||
|
"ax": 81.8,
|
||||||
|
"ay": 156
|
||||||
|
},
|
||||||
|
"cheer": {
|
||||||
|
"x": 484,
|
||||||
|
"y": 0,
|
||||||
|
"w": 70,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 33.6,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"laugh": {
|
||||||
|
"x": 556,
|
||||||
|
"y": 0,
|
||||||
|
"w": 78,
|
||||||
|
"h": 113,
|
||||||
|
"ax": 31.1,
|
||||||
|
"ay": 113
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 142 KiB |
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
"image": "bertovo.png",
|
||||||
|
"height": 120,
|
||||||
|
"frames": {
|
||||||
|
"stand": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 53,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 27.4,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"blink": {
|
||||||
|
"x": 55,
|
||||||
|
"y": 0,
|
||||||
|
"w": 52,
|
||||||
|
"h": 121,
|
||||||
|
"ax": 26.1,
|
||||||
|
"ay": 121
|
||||||
|
},
|
||||||
|
"talk": {
|
||||||
|
"x": 109,
|
||||||
|
"y": 0,
|
||||||
|
"w": 79,
|
||||||
|
"h": 121,
|
||||||
|
"ax": 31.3,
|
||||||
|
"ay": 121
|
||||||
|
},
|
||||||
|
"explain": {
|
||||||
|
"x": 190,
|
||||||
|
"y": 0,
|
||||||
|
"w": 58,
|
||||||
|
"h": 121,
|
||||||
|
"ax": 30.2,
|
||||||
|
"ay": 121
|
||||||
|
},
|
||||||
|
"laugh": {
|
||||||
|
"x": 250,
|
||||||
|
"y": 0,
|
||||||
|
"w": 54,
|
||||||
|
"h": 122,
|
||||||
|
"ax": 28.6,
|
||||||
|
"ay": 122
|
||||||
|
},
|
||||||
|
"chalk": {
|
||||||
|
"x": 306,
|
||||||
|
"y": 0,
|
||||||
|
"w": 55,
|
||||||
|
"h": 121,
|
||||||
|
"ax": 25.0,
|
||||||
|
"ay": 121
|
||||||
|
},
|
||||||
|
"shrug": {
|
||||||
|
"x": 363,
|
||||||
|
"y": 0,
|
||||||
|
"w": 91,
|
||||||
|
"h": 122,
|
||||||
|
"ax": 45.4,
|
||||||
|
"ay": 122
|
||||||
|
},
|
||||||
|
"cheer": {
|
||||||
|
"x": 456,
|
||||||
|
"y": 0,
|
||||||
|
"w": 58,
|
||||||
|
"h": 125,
|
||||||
|
"ax": 31.0,
|
||||||
|
"ay": 125
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 95 KiB |
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
"image": "chiaru.png",
|
||||||
|
"height": 120,
|
||||||
|
"frames": {
|
||||||
|
"explain": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 56,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 31.5,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"talk": {
|
||||||
|
"x": 58,
|
||||||
|
"y": 0,
|
||||||
|
"w": 64,
|
||||||
|
"h": 119,
|
||||||
|
"ax": 38.5,
|
||||||
|
"ay": 119
|
||||||
|
},
|
||||||
|
"blink": {
|
||||||
|
"x": 124,
|
||||||
|
"y": 0,
|
||||||
|
"w": 44,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 24.2,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"stand": {
|
||||||
|
"x": 170,
|
||||||
|
"y": 0,
|
||||||
|
"w": 44,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 24.2,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"cheer": {
|
||||||
|
"x": 216,
|
||||||
|
"y": 0,
|
||||||
|
"w": 66,
|
||||||
|
"h": 118,
|
||||||
|
"ax": 31.5,
|
||||||
|
"ay": 118
|
||||||
|
},
|
||||||
|
"shrug": {
|
||||||
|
"x": 284,
|
||||||
|
"y": 0,
|
||||||
|
"w": 79,
|
||||||
|
"h": 119,
|
||||||
|
"ax": 42.2,
|
||||||
|
"ay": 119
|
||||||
|
},
|
||||||
|
"watch": {
|
||||||
|
"x": 365,
|
||||||
|
"y": 0,
|
||||||
|
"w": 63,
|
||||||
|
"h": 98,
|
||||||
|
"ax": 30.3,
|
||||||
|
"ay": 98
|
||||||
|
},
|
||||||
|
"laugh": {
|
||||||
|
"x": 430,
|
||||||
|
"y": 0,
|
||||||
|
"w": 52,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 30.3,
|
||||||
|
"ay": 120
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 100 KiB |
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
"image": "cuochi.png",
|
||||||
|
"height": 120,
|
||||||
|
"frames": {
|
||||||
|
"stand": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 95,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 41.9,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"blink": {
|
||||||
|
"x": 97,
|
||||||
|
"y": 0,
|
||||||
|
"w": 95,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 42.6,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"talk": {
|
||||||
|
"x": 194,
|
||||||
|
"y": 0,
|
||||||
|
"w": 96,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 44.4,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"explain": {
|
||||||
|
"x": 292,
|
||||||
|
"y": 0,
|
||||||
|
"w": 95,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 44.5,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"work": {
|
||||||
|
"x": 389,
|
||||||
|
"y": 0,
|
||||||
|
"w": 101,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 46.7,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"work2": {
|
||||||
|
"x": 492,
|
||||||
|
"y": 0,
|
||||||
|
"w": 101,
|
||||||
|
"h": 119,
|
||||||
|
"ax": 45.9,
|
||||||
|
"ay": 119
|
||||||
|
},
|
||||||
|
"give": {
|
||||||
|
"x": 595,
|
||||||
|
"y": 0,
|
||||||
|
"w": 104,
|
||||||
|
"h": 121,
|
||||||
|
"ax": 43.1,
|
||||||
|
"ay": 121
|
||||||
|
},
|
||||||
|
"laugh": {
|
||||||
|
"x": 701,
|
||||||
|
"y": 0,
|
||||||
|
"w": 92,
|
||||||
|
"h": 117,
|
||||||
|
"ax": 43.7,
|
||||||
|
"ay": 117
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 191 KiB |
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
"image": "fanfara.png",
|
||||||
|
"height": 120,
|
||||||
|
"frames": {
|
||||||
|
"stand": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 107,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 47.1,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"blink": {
|
||||||
|
"x": 109,
|
||||||
|
"y": 0,
|
||||||
|
"w": 106,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 47.1,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"talk": {
|
||||||
|
"x": 217,
|
||||||
|
"y": 0,
|
||||||
|
"w": 110,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 50.3,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"laugh": {
|
||||||
|
"x": 329,
|
||||||
|
"y": 0,
|
||||||
|
"w": 107,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 47.0,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"play": {
|
||||||
|
"x": 438,
|
||||||
|
"y": 0,
|
||||||
|
"w": 112,
|
||||||
|
"h": 113,
|
||||||
|
"ax": 50.3,
|
||||||
|
"ay": 113
|
||||||
|
},
|
||||||
|
"play2": {
|
||||||
|
"x": 552,
|
||||||
|
"y": 0,
|
||||||
|
"w": 114,
|
||||||
|
"h": 118,
|
||||||
|
"ax": 51.8,
|
||||||
|
"ay": 118
|
||||||
|
},
|
||||||
|
"play3": {
|
||||||
|
"x": 668,
|
||||||
|
"y": 0,
|
||||||
|
"w": 111,
|
||||||
|
"h": 115,
|
||||||
|
"ax": 51.6,
|
||||||
|
"ay": 115
|
||||||
|
},
|
||||||
|
"bow": {
|
||||||
|
"x": 781,
|
||||||
|
"y": 0,
|
||||||
|
"w": 110,
|
||||||
|
"h": 104,
|
||||||
|
"ax": 51.2,
|
||||||
|
"ay": 104
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 222 KiB |
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
"image": "gente.png",
|
||||||
|
"height": 115,
|
||||||
|
"frames": {
|
||||||
|
"stand": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 126,
|
||||||
|
"h": 115,
|
||||||
|
"ax": 62.9,
|
||||||
|
"ay": 115
|
||||||
|
},
|
||||||
|
"blink": {
|
||||||
|
"x": 128,
|
||||||
|
"y": 0,
|
||||||
|
"w": 125,
|
||||||
|
"h": 115,
|
||||||
|
"ax": 62.8,
|
||||||
|
"ay": 115
|
||||||
|
},
|
||||||
|
"talk": {
|
||||||
|
"x": 255,
|
||||||
|
"y": 0,
|
||||||
|
"w": 126,
|
||||||
|
"h": 115,
|
||||||
|
"ax": 62.9,
|
||||||
|
"ay": 115
|
||||||
|
},
|
||||||
|
"talk2": {
|
||||||
|
"x": 383,
|
||||||
|
"y": 0,
|
||||||
|
"w": 126,
|
||||||
|
"h": 115,
|
||||||
|
"ax": 63.9,
|
||||||
|
"ay": 115
|
||||||
|
},
|
||||||
|
"eat": {
|
||||||
|
"x": 511,
|
||||||
|
"y": 0,
|
||||||
|
"w": 128,
|
||||||
|
"h": 117,
|
||||||
|
"ax": 62.9,
|
||||||
|
"ay": 117
|
||||||
|
},
|
||||||
|
"eat2": {
|
||||||
|
"x": 641,
|
||||||
|
"y": 0,
|
||||||
|
"w": 128,
|
||||||
|
"h": 117,
|
||||||
|
"ax": 63.0,
|
||||||
|
"ay": 117
|
||||||
|
},
|
||||||
|
"laugh": {
|
||||||
|
"x": 771,
|
||||||
|
"y": 0,
|
||||||
|
"w": 127,
|
||||||
|
"h": 117,
|
||||||
|
"ax": 62.0,
|
||||||
|
"ay": 117
|
||||||
|
},
|
||||||
|
"toast": {
|
||||||
|
"x": 900,
|
||||||
|
"y": 0,
|
||||||
|
"w": 127,
|
||||||
|
"h": 116,
|
||||||
|
"ax": 62.5,
|
||||||
|
"ay": 116
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 271 KiB |
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
"image": "liscio.png",
|
||||||
|
"height": 115,
|
||||||
|
"frames": {
|
||||||
|
"stand": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 108,
|
||||||
|
"h": 115,
|
||||||
|
"ax": 54.5,
|
||||||
|
"ay": 115
|
||||||
|
},
|
||||||
|
"blink": {
|
||||||
|
"x": 110,
|
||||||
|
"y": 0,
|
||||||
|
"w": 108,
|
||||||
|
"h": 115,
|
||||||
|
"ax": 54.3,
|
||||||
|
"ay": 115
|
||||||
|
},
|
||||||
|
"talk": {
|
||||||
|
"x": 220,
|
||||||
|
"y": 0,
|
||||||
|
"w": 111,
|
||||||
|
"h": 115,
|
||||||
|
"ax": 57.2,
|
||||||
|
"ay": 115
|
||||||
|
},
|
||||||
|
"laugh": {
|
||||||
|
"x": 333,
|
||||||
|
"y": 0,
|
||||||
|
"w": 110,
|
||||||
|
"h": 115,
|
||||||
|
"ax": 55.6,
|
||||||
|
"ay": 115
|
||||||
|
},
|
||||||
|
"dance1": {
|
||||||
|
"x": 445,
|
||||||
|
"y": 0,
|
||||||
|
"w": 117,
|
||||||
|
"h": 112,
|
||||||
|
"ax": 57.2,
|
||||||
|
"ay": 112
|
||||||
|
},
|
||||||
|
"dance2": {
|
||||||
|
"x": 564,
|
||||||
|
"y": 0,
|
||||||
|
"w": 115,
|
||||||
|
"h": 111,
|
||||||
|
"ax": 57.0,
|
||||||
|
"ay": 111
|
||||||
|
},
|
||||||
|
"dance3": {
|
||||||
|
"x": 681,
|
||||||
|
"y": 0,
|
||||||
|
"w": 115,
|
||||||
|
"h": 112,
|
||||||
|
"ax": 56.5,
|
||||||
|
"ay": 112
|
||||||
|
},
|
||||||
|
"dance4": {
|
||||||
|
"x": 798,
|
||||||
|
"y": 0,
|
||||||
|
"w": 113,
|
||||||
|
"h": 113,
|
||||||
|
"ax": 54.4,
|
||||||
|
"ay": 113
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 230 KiB |
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
"image": "pierino_parigi.png",
|
||||||
|
"height": 120,
|
||||||
|
"frames": {
|
||||||
|
"explain": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 61,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 29.3,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"talk": {
|
||||||
|
"x": 63,
|
||||||
|
"y": 0,
|
||||||
|
"w": 69,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 26.6,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"blink": {
|
||||||
|
"x": 134,
|
||||||
|
"y": 0,
|
||||||
|
"w": 44,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 25.0,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"stand": {
|
||||||
|
"x": 180,
|
||||||
|
"y": 0,
|
||||||
|
"w": 44,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 24.9,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"cheer": {
|
||||||
|
"x": 226,
|
||||||
|
"y": 0,
|
||||||
|
"w": 66,
|
||||||
|
"h": 128,
|
||||||
|
"ax": 34.6,
|
||||||
|
"ay": 128
|
||||||
|
},
|
||||||
|
"shrug": {
|
||||||
|
"x": 294,
|
||||||
|
"y": 0,
|
||||||
|
"w": 89,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 43.8,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"cards": {
|
||||||
|
"x": 385,
|
||||||
|
"y": 0,
|
||||||
|
"w": 50,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 26.2,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"laugh": {
|
||||||
|
"x": 437,
|
||||||
|
"y": 0,
|
||||||
|
"w": 54,
|
||||||
|
"h": 123,
|
||||||
|
"ax": 24.4,
|
||||||
|
"ay": 123
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 105 KiB |
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
"image": "taglia.png",
|
||||||
|
"height": 120,
|
||||||
|
"frames": {
|
||||||
|
"stand": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 54,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 27.7,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"blink": {
|
||||||
|
"x": 56,
|
||||||
|
"y": 0,
|
||||||
|
"w": 54,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 27.7,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"talk": {
|
||||||
|
"x": 112,
|
||||||
|
"y": 0,
|
||||||
|
"w": 75,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 32.2,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"explain": {
|
||||||
|
"x": 189,
|
||||||
|
"y": 0,
|
||||||
|
"w": 64,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 33.6,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"laugh": {
|
||||||
|
"x": 255,
|
||||||
|
"y": 0,
|
||||||
|
"w": 59,
|
||||||
|
"h": 121,
|
||||||
|
"ax": 25.2,
|
||||||
|
"ay": 121
|
||||||
|
},
|
||||||
|
"aim": {
|
||||||
|
"x": 316,
|
||||||
|
"y": 0,
|
||||||
|
"w": 97,
|
||||||
|
"h": 114,
|
||||||
|
"ax": 55.6,
|
||||||
|
"ay": 114
|
||||||
|
},
|
||||||
|
"shrug": {
|
||||||
|
"x": 415,
|
||||||
|
"y": 0,
|
||||||
|
"w": 91,
|
||||||
|
"h": 117,
|
||||||
|
"ax": 44.2,
|
||||||
|
"ay": 117
|
||||||
|
},
|
||||||
|
"throw": {
|
||||||
|
"x": 508,
|
||||||
|
"y": 0,
|
||||||
|
"w": 71,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 30.3,
|
||||||
|
"ay": 120
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 102 KiB |
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
"image": "vannino.png",
|
||||||
|
"height": 120,
|
||||||
|
"frames": {
|
||||||
|
"explain": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 56,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 28.6,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"talk": {
|
||||||
|
"x": 58,
|
||||||
|
"y": 0,
|
||||||
|
"w": 64,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 25.6,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"blink": {
|
||||||
|
"x": 124,
|
||||||
|
"y": 0,
|
||||||
|
"w": 45,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 25.0,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"stand": {
|
||||||
|
"x": 171,
|
||||||
|
"y": 0,
|
||||||
|
"w": 46,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 25.3,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"cheer": {
|
||||||
|
"x": 219,
|
||||||
|
"y": 0,
|
||||||
|
"w": 52,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 26.8,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"shrug": {
|
||||||
|
"x": 273,
|
||||||
|
"y": 0,
|
||||||
|
"w": 80,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 40.7,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"cards": {
|
||||||
|
"x": 355,
|
||||||
|
"y": 0,
|
||||||
|
"w": 45,
|
||||||
|
"h": 121,
|
||||||
|
"ax": 22.7,
|
||||||
|
"ay": 121
|
||||||
|
},
|
||||||
|
"laugh": {
|
||||||
|
"x": 402,
|
||||||
|
"y": 0,
|
||||||
|
"w": 46,
|
||||||
|
"h": 121,
|
||||||
|
"ax": 22.7,
|
||||||
|
"ay": 121
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 76 KiB |
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
"image": "volontari.png",
|
||||||
|
"height": 120,
|
||||||
|
"frames": {
|
||||||
|
"stand": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 102,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 48.3,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"blink": {
|
||||||
|
"x": 104,
|
||||||
|
"y": 0,
|
||||||
|
"w": 102,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 48.3,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"talk": {
|
||||||
|
"x": 208,
|
||||||
|
"y": 0,
|
||||||
|
"w": 101,
|
||||||
|
"h": 121,
|
||||||
|
"ax": 47.4,
|
||||||
|
"ay": 121
|
||||||
|
},
|
||||||
|
"explain": {
|
||||||
|
"x": 311,
|
||||||
|
"y": 0,
|
||||||
|
"w": 100,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 47.4,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"work": {
|
||||||
|
"x": 413,
|
||||||
|
"y": 0,
|
||||||
|
"w": 107,
|
||||||
|
"h": 112,
|
||||||
|
"ax": 49.0,
|
||||||
|
"ay": 112
|
||||||
|
},
|
||||||
|
"work2": {
|
||||||
|
"x": 522,
|
||||||
|
"y": 0,
|
||||||
|
"w": 104,
|
||||||
|
"h": 111,
|
||||||
|
"ax": 47.4,
|
||||||
|
"ay": 111
|
||||||
|
},
|
||||||
|
"give": {
|
||||||
|
"x": 628,
|
||||||
|
"y": 0,
|
||||||
|
"w": 100,
|
||||||
|
"h": 121,
|
||||||
|
"ax": 47.8,
|
||||||
|
"ay": 121
|
||||||
|
},
|
||||||
|
"laugh": {
|
||||||
|
"x": 730,
|
||||||
|
"y": 0,
|
||||||
|
"w": 100,
|
||||||
|
"h": 119,
|
||||||
|
"ax": 48.2,
|
||||||
|
"ay": 119
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 195 KiB |
@@ -0,0 +1,70 @@
|
|||||||
|
{
|
||||||
|
"image": "zio_mario.png",
|
||||||
|
"height": 120,
|
||||||
|
"frames": {
|
||||||
|
"explain": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"w": 67,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 33.8,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"talk": {
|
||||||
|
"x": 69,
|
||||||
|
"y": 0,
|
||||||
|
"w": 79,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 44.8,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"blink": {
|
||||||
|
"x": 150,
|
||||||
|
"y": 0,
|
||||||
|
"w": 57,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 28.1,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"stand": {
|
||||||
|
"x": 209,
|
||||||
|
"y": 0,
|
||||||
|
"w": 57,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 27.8,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"shrug": {
|
||||||
|
"x": 268,
|
||||||
|
"y": 0,
|
||||||
|
"w": 94,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 48.1,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"point": {
|
||||||
|
"x": 364,
|
||||||
|
"y": 0,
|
||||||
|
"w": 87,
|
||||||
|
"h": 120,
|
||||||
|
"ax": 51.0,
|
||||||
|
"ay": 120
|
||||||
|
},
|
||||||
|
"think": {
|
||||||
|
"x": 453,
|
||||||
|
"y": 0,
|
||||||
|
"w": 58,
|
||||||
|
"h": 121,
|
||||||
|
"ax": 29.2,
|
||||||
|
"ay": 121
|
||||||
|
},
|
||||||
|
"laugh": {
|
||||||
|
"x": 513,
|
||||||
|
"y": 0,
|
||||||
|
"w": 59,
|
||||||
|
"h": 121,
|
||||||
|
"ax": 30.1,
|
||||||
|
"ay": 121
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
After Width: | Height: | Size: 115 KiB |
|
After Width: | Height: | Size: 324 KiB |
|
After Width: | Height: | Size: 537 KiB |
|
After Width: | Height: | Size: 188 KiB |
|
After Width: | Height: | Size: 233 KiB |
|
After Width: | Height: | Size: 526 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 6.8 KiB |
|
After Width: | Height: | Size: 7.1 KiB |
|
After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 16 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 28 KiB |
|
After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 75 KiB |
|
After Width: | Height: | Size: 56 KiB |
|
After Width: | Height: | Size: 71 KiB |
|
After Width: | Height: | Size: 317 KiB |
|
After Width: | Height: | Size: 270 KiB |
|
After Width: | Height: | Size: 388 KiB |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 6.5 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 6.2 KiB |
|
After Width: | Height: | Size: 1006 B |
|
After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 6.4 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 316 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
After Width: | Height: | Size: 208 KiB |
|
After Width: | Height: | Size: 239 KiB |
|
After Width: | Height: | Size: 226 KiB |
|
After Width: | Height: | Size: 130 KiB |
@@ -0,0 +1,57 @@
|
|||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta http-equiv="Content-Language" content="it">
|
||||||
|
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
|
||||||
|
<meta name="ProgId" content="FrontPage.Editor.Document">
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
||||||
|
<title>Responsabilità degli Iscritti</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<center>
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="600">
|
||||||
|
<tr>
|
||||||
|
<td width="100%">
|
||||||
|
<p align="center" style="margin-top: 0; margin-bottom: 0"><b>
|
||||||
|
<font size="6" face="Arial">Responsabilità degli Iscritti</font></b></p>
|
||||||
|
<p align="center" style="margin-top: 0; margin-bottom: 0"> </p>
|
||||||
|
<p align="justify" style="margin-top: 0; margin-bottom: 0">
|
||||||
|
<font face="Arial">Si fa presente che lo <b>Staff di WWW.SANPIERO50037.IT</b>,
|
||||||
|
non effettuerà controllo preventivo sul contenuto dei commenti e degli
|
||||||
|
interventi sul "MURO DEL SANPIERINO", ma, <b><u>vista la possibilità di
|
||||||
|
risalire agli autori degli stessi</u></b>, si sentirà autorizzato alla
|
||||||
|
comunicazione di tali dati ai <b>Soggetti Interessati e all'Autorità
|
||||||
|
Giudiziaria</b> in caso di violazione di qualsiasi articolo del C.C. e del
|
||||||
|
C.P., si invita pertanto a prendere coscienza delle<b> responsabilità
|
||||||
|
civili e penali </b>che l'utente si assume in prima persona per il
|
||||||
|
contenuto di ciò che scrive.</font></p>
|
||||||
|
<p align="justify" style="margin-top: 0; margin-bottom: 0"> </p>
|
||||||
|
<p align="justify" style="margin-top: 0; margin-bottom: 0"><b>
|
||||||
|
<font face="Arial">E' pertanto necessario che tutti gli utenti garantiscano il contenuto:</font></b></p>
|
||||||
|
<p align="justify" style="margin-top: 0; margin-bottom: 0">
|
||||||
|
<font face="Arial"><b>1 -</b> Non sia volgare, diffamatorio e
|
||||||
|
pregiudizievole;</font></p>
|
||||||
|
<p align="justify" style="margin-top: 0; margin-bottom: 0">
|
||||||
|
<font face="Arial"><b>2 -</b> Non violi in alcun modo i diritti di terzi;</font></p>
|
||||||
|
<p align="justify" style="margin-top: 0; margin-bottom: 0">
|
||||||
|
<font face="Arial"><b>3 -</b> Non violi i diritti stabiliti dal
|
||||||
|
<a href="Privacy.htm">D.Lgs. 30.06.2003 n°196</a> e ogni altra normativa
|
||||||
|
in</font></p>
|
||||||
|
<p align="justify" style="margin-top: 0; margin-bottom: 0">
|
||||||
|
<font face="Arial"> materia di Privacy;</font></p>
|
||||||
|
<p align="justify" style="margin-top: 0; margin-bottom: 0">
|
||||||
|
<font face="Arial"><b>4 -</b> Non violi la vigente normativa in materia di
|
||||||
|
Pubblica Sicurezza e Buon Costume e/o altre norme imperative;</font></p>
|
||||||
|
<p align="justify" style="margin-top: 0; margin-bottom: 0">
|
||||||
|
<font face="Arial"><b>5 -</b> Non venga inserito per fini di "Spamming".</font></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</center>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p align="center"><a href="index.html" style="font: bold 14px Tahoma; color: #800000">« Torna al Muro</a></p></body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
<html>
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta name="GENERATOR" content="Microsoft FrontPage 5.0">
|
||||||
|
<meta name="ProgId" content="FrontPage.Editor.Document">
|
||||||
|
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
|
||||||
|
<title>Guida al Muro del Sanpierino</title>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
|
||||||
|
<div align="center">
|
||||||
|
<center>
|
||||||
|
<table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="1024">
|
||||||
|
<tr>
|
||||||
|
<td width="100%">
|
||||||
|
<p class="MsoNormal" align="center" style="text-align: center; margin-top: 0; margin-bottom: 0">
|
||||||
|
<b><span style="font-size: 22.0pt">Guida al Muro del Sanpierino</span></b></p>
|
||||||
|
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
|
||||||
|
<b><u><span style="text-decoration: none; font-size: 18.0pt"> </span></u></b></p>
|
||||||
|
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
|
||||||
|
<b><u><span style="font-size: 18.0pt">1 – Iscrizione</span></u></b></p>
|
||||||
|
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
|
||||||
|
<span style="font-size: 14.0pt">Se vuoi scrivere un messaggio sul Muro del
|
||||||
|
Sanpierino adesso dovrai prima essere iscritto. Iscriversi è gratuito e
|
||||||
|
semplicissimo, sarà sufficiente andare sul Muro e cliccare sull’icona
|
||||||
|
“Scrivi”, da lì verrai inviato nella pagina di “Login” dove troverai il
|
||||||
|
tasto “Iscriviti”, cliccandolo ti troverai direttamente nella pagina
|
||||||
|
d’Iscrizione. Appena riceveremo la tua richiesta attiveremo il tuo account
|
||||||
|
e riceverai una mail, all’indirizzo inserito, a conferma dell’attivazione.
|
||||||
|
A quel punto potrai scrivere sempre e in qualunque momento sul Muro.</span></p>
|
||||||
|
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
|
||||||
|
<span style="font-size: 14.0pt"> </span></p>
|
||||||
|
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
|
||||||
|
<b><u><span style="font-size: 18.0pt">2 – Scrivere</span></u></b></p>
|
||||||
|
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
|
||||||
|
<span style="font-size: 14.0pt">Per scrivere sul Muro sarà sufficiente
|
||||||
|
cliccare sul tasto “Scrivi” e inserire il proprio Nickname e Password (se
|
||||||
|
non si è iscritti segui le istruzioni al paragrafo 1- Iscrizione). Vi
|
||||||
|
troverete nella pagina di scrittura vera e propria dove potrete scegliere
|
||||||
|
se mantenere il vostro Nickname d’iscrizione o variarlo, se rendere
|
||||||
|
visibile il vostro indirizzo e-mail oppure no e ancora scegliere fra le
|
||||||
|
oltre 470 smiles disponibili e ancora variare l’aspetto grafico del vostro
|
||||||
|
messaggio consultando la pagiana di aiuto per la personalizzazione… tante
|
||||||
|
alternative che sicuramente saranno di vostro gradimento!</span></p>
|
||||||
|
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
|
||||||
|
<span style="font-size: 14.0pt"> </span></p>
|
||||||
|
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
|
||||||
|
<b><u><span style="font-size: 18.0pt">3 – Privacy & Responsabilità</span></u></b></p>
|
||||||
|
<p class="MsoNormal" style="text-align: justify; margin-top: 0; margin-bottom: 0">
|
||||||
|
<span style="font-size: 14.0pt">L’aspetto più importante di questo Nuovo
|
||||||
|
Muro del Sanpierino è proprio quello relativo alle Resposabilità che ogni
|
||||||
|
utente si assume nei post inseriti. Ogni Utente, pur facendo salva la
|
||||||
|
propria Privacy, non dovrà in alcun modo ledere gli altrui diritti e
|
||||||
|
quindi:</span></p>
|
||||||
|
<p style="text-align: justify; margin: 0 0cm">
|
||||||
|
<span style="font-size: 14.0pt"> <b>1 -</b> Non dovrà essere
|
||||||
|
volgare, diffamatorio e pregiudizievole;</span></p>
|
||||||
|
<p style="text-align: justify; text-indent: 35.4pt; margin: 0 0cm"><b>
|
||||||
|
<span style="font-size: 14.0pt">2 -</span></b><span style="font-size: 14.0pt">
|
||||||
|
Non dovrà violare in alcun modo i diritti di terzi;</span></p>
|
||||||
|
<p style="text-align: justify; text-indent: 35.4pt; margin: 0 0cm"><b>
|
||||||
|
<span style="font-size: 14.0pt">3 -</span></b><span style="font-size: 14.0pt">
|
||||||
|
Non dovrà violare i diritti stabiliti dal
|
||||||
|
<a href="http://www.sanpiero50037.it/spswall/Privacy.htm" style="color: blue; text-decoration: underline; text-underline: single">
|
||||||
|
D.Lgs. 30.06.2003 n°196</a> e ogni altra </span></p>
|
||||||
|
<p style="text-align: justify; text-indent: 35.4pt; margin: 0 0cm">
|
||||||
|
<span style="font-size: 14.0pt"> normativa in materia di Privacy;</span></p>
|
||||||
|
<p style="text-align: justify; margin-left: 35.4pt; margin-right: 0cm; margin-top: 0; margin-bottom: 0">
|
||||||
|
<b><span style="font-size: 14.0pt">4 -</span></b><span style="font-size: 14.0pt">
|
||||||
|
Non dovrà violare la vigente normativa in materia di Pubblica Sicurezza e
|
||||||
|
</span></p>
|
||||||
|
<p style="text-align: justify; margin-left: 35.4pt; margin-right: 0cm; margin-top: 0; margin-bottom: 0">
|
||||||
|
<b><span style="font-size: 14.0pt"> </span></b>
|
||||||
|
<span style="font-size: 14.0pt">Buon Costume e/o altre norme imperative;</span></p>
|
||||||
|
<p style="text-align: justify; text-indent: 35.4pt; margin: 0 0cm"><b>
|
||||||
|
<span style="font-size: 14.0pt">5 -</span></b><span style="font-size: 14.0pt">
|
||||||
|
Non dovrà inserire post per fini di "Spamming".</span></p>
|
||||||
|
<p style="text-align: justify; margin: 0 0cm">
|
||||||
|
<span style="font-size: 14.0pt">In caso di violazione di una delle regole
|
||||||
|
descritte qui sopra il messaggio verrà cancellato quanto prima e, in caso
|
||||||
|
di richiesta da parte del Soggetto interessato o dell’Autorità
|
||||||
|
Giudiziaria, verranno comunicati i suoi dati oltre, naturalmente, al
|
||||||
|
blocco dell’Utente che si renderà responsabile di tale messaggio. Per
|
||||||
|
tutti gli altri messaggi la Privacy dei nostri Utenti sarà tutelata come
|
||||||
|
descritto dal
|
||||||
|
<a href="http://www.sanpiero50037.it/spswall/Privacy.htm" style="color: blue; text-decoration: underline; text-underline: single">
|
||||||
|
D.Lgs. 30.06.2003 n°196</a>, tranne nei caso di violazione dei nostri Data
|
||||||
|
Base da attacchi esterni.</span></td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
|
</center>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<p align="center"><a href="index.html" style="font: bold 14px Tahoma; color: #800000">« Torna al Muro</a></p></body>
|
||||||
|
|
||||||
|
</html>
|
||||||
|
After Width: | Height: | Size: 177 B |
|
After Width: | Height: | Size: 173 B |
|
After Width: | Height: | Size: 202 B |
|
After Width: | Height: | Size: 284 B |
|
After Width: | Height: | Size: 278 B |