Commit 36f088e4 authored by wildfirecode's avatar wildfirecode

1

parent 5f979348
{"currentScene":"assets/scenes/main.scene"}
\ No newline at end of file
{"currentScene":"assets/prefabs/PurepleFire.pfb"}
\ No newline at end of file
......@@ -22,7 +22,8 @@
{
"script": "./scripts/scenes/RocketItem",
"properties": {
"type": "blue"
"type": "blue",
"text": "entity|b15d2107-ed6f-4784-a704-7852968d9baa"
}
}
],
......@@ -42,6 +43,32 @@
}
],
"uuid": "8880bafc-d2cd-4e48-bd4d-4b0db91e23c8"
},
{
"name": "Label",
"components": [
{
"script": "components/base/Transform",
"properties": {
"position": {
"x": 46,
"y": 0
}
}
},
{
"script": "components/renderer/TextRenderer",
"properties": {
"text": "+1",
"fillColor": "rgba(102, 202, 235, 1)",
"textStyle": {
"fontSize": 35,
"fontWeight": "bold"
}
}
}
],
"uuid": "b15d2107-ed6f-4784-a704-7852968d9baa"
}
]
}
......
{
"name": "PurepleFire",
"root": {
"uuid": "20190301114308",
"components": [
{
"script": "components/base/Transform"
},
{
"script": "components/other/CameraController"
}
],
"children": [
{
"uuid": "20190301114245",
"name": "PurepleFire",
"components": [
{
"script": "components/base/Transform",
"properties": {}
},
{
"script": "./scripts/scenes/RocketItem",
"properties": {
"text": "entity|f5c662d6-44c8-4cb3-9871-47f9b1174a29",
"type": "purple"
}
}
],
"children": [
{
"name": "pic",
"components": [
{
"script": "components/base/Transform",
"properties": {}
},
{
"script": "components/renderer/TextureRenderer",
"properties": {
"texture": "res|18af58d7-34ef-469b-a769-dec15fb0e908"
}
}
],
"uuid": "18ac6b51-b4ef-4144-94f1-d9ff09bad4d2"
},
{
"name": "Label",
"components": [
{
"script": "components/base/Transform",
"properties": {
"position": {
"x": 58,
"y": 0
}
}
},
{
"script": "components/renderer/TextRenderer",
"properties": {
"text": "20%",
"fillColor": "rgba(179, 66, 228, 1)",
"textStyle": {
"fontSize": 35,
"fontStyle": "normal",
"fontWeight": "bold",
"fontVariant": "normal"
}
}
}
],
"uuid": "f5c662d6-44c8-4cb3-9871-47f9b1174a29"
}
]
}
]
}
}
\ No newline at end of file
{"ver":"1.0.1","uuid":"2be6a616-f50b-402e-b10f-8aacca0b3a9f","subMetas":{},"type":"prefab"}
......@@ -22,7 +22,8 @@
{
"script": "./scripts/scenes/RocketItem",
"properties": {
"type": "red"
"type": "red",
"text": "entity|8146b5f9-8c56-4edb-9dbb-93bd44951fcd"
}
}
],
......@@ -42,6 +43,32 @@
}
],
"uuid": "35827ccd-03af-42fd-868b-5ba42f8ee992"
},
{
"name": "Label",
"components": [
{
"script": "components/base/Transform",
"properties": {
"position": {
"x": 64,
"y": 0
}
}
},
{
"script": "components/renderer/TextRenderer",
"properties": {
"text": "30%",
"fillColor": "rgba(242, 106, 57, 1)",
"textStyle": {
"fontSize": 35,
"fontWeight": "bold"
}
}
}
],
"uuid": "8146b5f9-8c56-4edb-9dbb-93bd44951fcd"
}
]
}
......
......@@ -22,7 +22,8 @@
{
"script": "./scripts/scenes/RocketItem",
"properties": {
"type": "yellow"
"type": "yellow",
"text": "entity|cb2bcda7-70e8-494e-a23a-ad65ee024e79"
}
}
],
......@@ -42,6 +43,31 @@
}
],
"uuid": "76605a9b-9864-4e67-be3a-a223039f4aa5"
},
{
"name": "Label",
"components": [
{
"script": "components/base/Transform",
"properties": {
"position": {
"x": 58,
"y": 0
}
}
},
{
"script": "components/renderer/TextRenderer",
"properties": {
"text": "10%",
"fillColor": "rgba(255, 234, 0, 1)",
"textStyle": {
"fontSize": 35
}
}
}
],
"uuid": "cb2bcda7-70e8-494e-a23a-ad65ee024e79"
}
]
}
......
......@@ -395,7 +395,8 @@
"getNgameStartStatus": "dynamic|API|ngameSubmit",
"bottomline": "entity|791444c1-84e8-4455-9fb1-c1b2691c6cc0",
"topline": "entity|9f9bfbf2-4f77-4a1b-b1b5-42b6784e0c8c",
"carInner": "entity|a5b807ba-098f-4b6e-b0da-e42b6324f62a"
"carInner": "entity|a5b807ba-098f-4b6e-b0da-e42b6324f62a",
"scoreTxt": "entity|0d036e4a-6a18-4147-8669-eedf9b0a6f7a"
}
},
{
......@@ -439,7 +440,8 @@
"properties": {
"BlueRocketPrefab": "res|b5185698-ef74-4855-95b9-813e187f6ee7",
"RedFirePrefab": "res|8a61e34c-bdba-4dbe-813a-68c562e7ecbd",
"YellowRocketPrefab": "res|51834a6b-5880-41df-81d9-beaef804a919"
"YellowRocketPrefab": "res|51834a6b-5880-41df-81d9-beaef804a919",
"PurpleRocketPrefab": "res|2be6a616-f50b-402e-b10f-8aacca0b3a9f"
}
}
],
......@@ -1416,6 +1418,10 @@
"uuid": "df59e078-e7b7-4fbb-a1aa-8b291284c39f",
"url": "prefabs/bullet.pfb"
},
{
"uuid": "2be6a616-f50b-402e-b10f-8aacca0b3a9f",
"url": "prefabs/PurepleFire.pfb"
},
{
"uuid": "8a61e34c-bdba-4dbe-813a-68c562e7ecbd",
"url": "prefabs/RedFire.pfb"
......@@ -1520,6 +1526,10 @@
{
"name": "火yellow-1.png",
"uuid": "12a92a67-b5b7-472c-8c4c-95d8eefa1c82"
},
{
"name": "火purple-1.png",
"uuid": "18af58d7-34ef-469b-a769-dec15fb0e908"
}
]
}
......
import { Transform } from 'scilla-components/src';
import { Transform, ScillaComponent } from 'scilla-components/src';
import { createTween } from 'scilla/src';
import { createTween, Entity } from 'scilla/src';
export const getTween = (context, target: Transform, obj, duration, ease?) => {
export const getTween = (context, val: Transform | Entity | ScillaComponent, obj, duration, ease?) => {
return new Promise((r) => {
let target: Transform;
if (val instanceof Transform) {
target = val;
} else {
target = val.getComponent(Transform)
}
const postionObj = {};
for (const key in obj) {
if (key == 'x' || key == 'y') {
......@@ -11,7 +17,7 @@ export const getTween = (context, target: Transform, obj, duration, ease?) => {
delete obj[key];
}
}
createTween(context, target.position, true).to(postionObj,duration, ease);
createTween(context, target.position, true).to(postionObj, duration, ease);
createTween(context, target, true).to(obj, duration, ease).call(r);
});
}
\ No newline at end of file
......@@ -18,12 +18,17 @@ export default class BallItem extends Body {
super.onAwake();
}
reduceScore() {
this._currentScore--;
reduceScore(score: number) {
let result = 0;
if (this._currentScore <= score)
result = this._currentScore;
else
result = score;
this._currentScore -= score;
if (this._currentScore < 0)
this._currentScore = 0;
this.updateScoreTxt();
return this._currentScore;
return result;
}
resetScore(score) {
......@@ -49,7 +54,7 @@ export default class BallItem extends Body {
const child = this.entity.getChildrenByName(color)[0];
child.enabled = true;
}
get currentScore() { return this._currentScore }
get storedScore() { return this._storedScore }
}
......
import Body from './Body';
import { DropType } from './scenePlay/DropManager';
import { Entity } from 'scilla/src';
export default class RocketItem extends Body {
type: DropType;
text: Entity;
constructor() {
super();
this.gravity = 1.5;
this.bounceY = 0.8;
this.velocityX = 1;
this.bounceY = 0.6;
this.velocityX = 1; this.rotationSpeed = 0;
}
onAwake() {
super.onAwake();
this.text.enabled = false;
}
reset(){
reset() {
super.reset();
this.velocityX = 1;
this.rotationSpeed = 0;
}
getCarFire() {
if (this.type == DropType.red) return 30;
if (this.type == DropType.yellow) return 10;
if (this.type == DropType.purple) return 20;
return 0;
}
getCarBullet() {
if (this.type == DropType.blue) return 1;
return 0;
}
}
\ No newline at end of file
......@@ -3,7 +3,7 @@ import Transform from "scilla-components/src/base/Transform";
import { Entity } from "scilla/src";
import { alien } from "../navigator/StackNavigator";
import { INavigatorViewBase } from "../navigator/VirtualNavigator";
import { getScale, getX, getY, setX } from "../transformUtils";
import { getScale, getX, getY, setX, setText } from "../transformUtils";
import BallItem from "./BallItem";
import BallManager from "./scenePlay/BallManager";
import CarBulletAni from "./scenePlay/CarBulletAni";
......@@ -13,6 +13,7 @@ import ngameSubmit from "./scenePlay/ngameSubmit";
import { RectRenderer } from "scilla-components/src";
export default class ScenePlay extends InteractComponent implements INavigatorViewBase {
scoreTxt: Entity;
bulletNumTxt: Entity;
strengthNumTxt: Entity;
car: Entity;
......@@ -20,6 +21,9 @@ export default class ScenePlay extends InteractComponent implements INavigatorVi
bottomline: Entity;
score = 0;
private _carBullet: number;
private _carFire: number;
private _pause = false;
_carShootAni: CarShootAni;
......@@ -29,6 +33,12 @@ export default class ScenePlay extends InteractComponent implements INavigatorVi
private _ngameSubmitApi: ngameSubmit;
updateScoreTxt() {
setText(this.bulletNumTxt, `${this._carBullet}`);
setText(this.strengthNumTxt, `${this._carFire}%`);
setText(this.scoreTxt, `${this.score}`);
}
onGlobalTouchBegin(e): any {
this._lastTouchMoveX = -1;
return super.onGlobalTouchBegin(e);
......@@ -70,6 +80,10 @@ export default class ScenePlay extends InteractComponent implements INavigatorVi
const y1 = r + height / 2;
if (x0 < x1 && y0 < y1) {
this._dropManager.removeDrop(drop);
this._carFire += drop.getCarFire();
this._carBullet += drop.getCarBullet();
this.updateScoreTxt();
this._bulletManager.updateLines(this._carBullet);
i--;
}
}
......@@ -110,15 +124,21 @@ export default class ScenePlay extends InteractComponent implements INavigatorVi
this._bulletManager.removeBullet(bullet);
this._bulletManager.bullets.splice(i, 1);
i--;
if (ball.reduceScore() == 0) { //破裂
const resultScore = ball.reduceScore(this.getBulletStren());
if ( ball.currentScore == 0) { //破裂
this.checkBallSplit(ball);
}
this.score += resultScore;
console.log(this.getBulletStren(),resultScore);
this.updateScoreTxt();
break;
}
}
}
}
getBulletStren() { return Math.floor(this._carFire / 100); }
checkBallSplit(ball: BallItem) {
this._ballManager.checkBallSplit(ball);
}
......@@ -181,7 +201,11 @@ export default class ScenePlay extends InteractComponent implements INavigatorVi
this._ballManager = this.getComponent(BallManager);
this._dropManager = this.getComponent(DropManager);
}
this._pause=false;
this.score = 0;
this._carBullet = 0;
this._carFire = 100*10;
this.updateScoreTxt();
this._pause = false;
this._carShootAni.enabled = true;
console.log('sceneplay onAwake');
......
......@@ -71,7 +71,7 @@ export default class BallManager extends ScillaComponent {
ball.reset();
ball.resetScore(score);
ball.updateColor(pickFromList(ball.childNames))
// setScale(ball, scale);
setScale(ball, 1);
let dir = Math.random() > 0.5 ? -1 : 1;
setXY(ball.entity, -375, getY(this.topline));
ball.enabled = false;
......
......@@ -24,7 +24,7 @@ export default class CarBulletAni extends ScillaComponent {
private _interval = 3;
//等级1 2 3 4
private _lines = 4;
private _lines = 1;
private _offsetList: number[][] = [];
bullets: Body[] = [];
private _freeBullets: Body[];
......@@ -63,8 +63,8 @@ export default class CarBulletAni extends ScillaComponent {
this._pause = false;
}
updateLines(X) {
this._lines = getLines(x);
updateLines(carbullet) {
this._lines = getLines(carbullet);
}
_counter = 0;
......
import { getX, getY, setXY } from 'assets/scripts/transformUtils';
import { getTween } from 'assets/scripts/getTween';
import { getX, getY, setAlpha, setXY } from 'assets/scripts/transformUtils';
import ScillaComponent from 'components/base/ScillaComponent';
import { instantiate, resource } from 'scilla/src';
import Body from '../Body';
import RocketItem from '../RocketItem';
import { removeFromList } from '../_';
export enum DropType {
red = 'red', blue = 'blue', yellow = 'yellow'
red = 'red', blue = 'blue', yellow = 'yellow', purple = 'purple'
}
export default class DropManager extends ScillaComponent {
RedFirePrefab: resource;
BlueRocketPrefab: resource;
YellowRocketPrefab: resource;
PurpleRocketPrefab: resource;
onGameOver() {
this.disableBalls();
......@@ -33,12 +35,16 @@ export default class DropManager extends ScillaComponent {
this._dropList = [];
}
removeDrop(drop: RocketItem) {
this.entity.removeChild(drop.entity);
async removeDrop(drop: RocketItem) {
drop.enabled = false;
drop.text.enabled = true;
removeFromList(drop, this._dropList);
const frees = this._freeDic[drop.type];
const y = getY(drop);
await getTween(this, drop, { y: y - 200, alpha: 0 }, 1000);
frees.push(drop);
this.entity.removeChild(drop.entity);
setAlpha(drop, 1);
}
createDrop(ball: Body) {
......@@ -46,10 +52,12 @@ export default class DropManager extends ScillaComponent {
if (Math.random() > 0.7) {
item = this.getFireItem(this.BlueRocketPrefab, DropType.blue);
} else {
if (Math.random() > 0.5)
if (Math.random() > 0.7)
item = this.getFireItem(this.RedFirePrefab, DropType.red);
else
else if (Math.random() > 0.3)
item = this.getFireItem(this.YellowRocketPrefab, DropType.yellow);
else
item = this.getFireItem(this.PurpleRocketPrefab, DropType.purple);
}
setXY(item, getX(ball), getY(ball));
return item;
......@@ -75,7 +83,7 @@ export default class DropManager extends ScillaComponent {
private _dropList: RocketItem[] = [];
get dropList() { return this._dropList }
private _freeDic: { [key: string]: RocketItem[]; } = {
'red': [], 'blue': [], 'yellow': []
'red': [], 'blue': [],'purple': [], 'yellow': []
};
oncreate() {
......
import ScillaComponent from 'components/base/ScillaComponent';
import { Transform } from 'scilla-components/src';
import { Transform, TextRenderer } from 'scilla-components/src';
import { Entity } from 'scilla/src';
export const setX = (entity: Entity, x) => {
entity.getComponent(Transform).position.x = x;
}
export const setAlpha = (val: Entity | ScillaComponent, alpha: number) => {
if (val instanceof Entity) {
val.getComponent(Transform).alpha = alpha;
} else if (val instanceof ScillaComponent) {
val.entity.getComponent(Transform).alpha = alpha;
}
}
export const setScale = (val: Entity | ScillaComponent, x) => {
if (val instanceof Entity) {
val.getComponent(Transform).scale.x = x;
......@@ -17,6 +25,10 @@ export const setScale = (val: Entity | ScillaComponent, x) => {
}
}
export const setText = (entity: Entity, text: string) => {
entity.getComponent(TextRenderer).text = text;
}
export const getScale = (val: Entity | ScillaComponent) => {
if (val instanceof Entity) {
return val.getComponent(Transform).scale;
......
No preview for this file type
{"ver":"1.0.1","uuid":"707b0618-36e7-4fee-a68b-12157b07f102","subMetas":{"1-1-1.png":{"ver":"1.0.1","uuid":"b00c51e6-497c-43d9-82f7-404a75d20be4","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"red20.png":{"ver":"1.0.1","uuid":"86bf904f-c870-44c5-b2e1-16e511c63eff","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"发弹雾气-1.png":{"ver":"1.0.1","uuid":"6985d3f7-d1cc-432d-b6bb-d3775718f823","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"大炮板子-1.png":{"ver":"1.0.1","uuid":"d58b17d5-52a7-4464-93d6-314396fb2cf2","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"大炮的头-1.png":{"ver":"1.0.1","uuid":"38e8a63e-37e3-4e11-a641-384bbf0223bb","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"子弹-1.png":{"ver":"1.0.1","uuid":"a0310a43-fc21-44d6-b32b-a8406fe10e03","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"淡蓝-1.png":{"ver":"1.0.1","uuid":"5367ae30-00ee-4296-8779-158f8fbd68f2","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"淡蓝火箭-1.png":{"ver":"1.0.1","uuid":"b08e8d70-e3cd-48b4-81b5-61196aafdc7b","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"火-1.png":{"ver":"1.0.1","uuid":"86a1d006-76e2-4101-b4ba-60fbf96d25a6","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"火箭-1.png":{"ver":"1.0.1","uuid":"42d4b3ff-b9a9-4688-8d02-10d9e9c0dcf6","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"紫-1.png":{"ver":"1.0.1","uuid":"3aad1b7b-89ec-4565-afa2-a16d36d7b721","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"红-1.png":{"ver":"1.0.1","uuid":"e624e863-53d4-41f7-bc95-924579fe8025","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"绿-1.png":{"ver":"1.0.1","uuid":"853cc248-89dc-40f1-8f16-48007e6d8ef3","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"蓝-1.png":{"ver":"1.0.1","uuid":"9cc48379-a01c-4cd1-9196-220016eb9797","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"黄-1.png":{"ver":"1.0.1","uuid":"24c66e95-12ff-4bea-b4be-aa8554eea39f","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"火yellow-1.png":{"ver":"1.0.1","uuid":"12a92a67-b5b7-472c-8c4c-95d8eefa1c82","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"}},"type":"sheet"}
{"ver":"1.0.1","uuid":"707b0618-36e7-4fee-a68b-12157b07f102","subMetas":{"1-1-1.png":{"ver":"1.0.1","uuid":"b00c51e6-497c-43d9-82f7-404a75d20be4","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"red20.png":{"ver":"1.0.1","uuid":"86bf904f-c870-44c5-b2e1-16e511c63eff","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"发弹雾气-1.png":{"ver":"1.0.1","uuid":"6985d3f7-d1cc-432d-b6bb-d3775718f823","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"大炮板子-1.png":{"ver":"1.0.1","uuid":"d58b17d5-52a7-4464-93d6-314396fb2cf2","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"大炮的头-1.png":{"ver":"1.0.1","uuid":"38e8a63e-37e3-4e11-a641-384bbf0223bb","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"子弹-1.png":{"ver":"1.0.1","uuid":"a0310a43-fc21-44d6-b32b-a8406fe10e03","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"淡蓝-1.png":{"ver":"1.0.1","uuid":"5367ae30-00ee-4296-8779-158f8fbd68f2","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"淡蓝火箭-1.png":{"ver":"1.0.1","uuid":"b08e8d70-e3cd-48b4-81b5-61196aafdc7b","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"火-1.png":{"ver":"1.0.1","uuid":"86a1d006-76e2-4101-b4ba-60fbf96d25a6","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"火箭-1.png":{"ver":"1.0.1","uuid":"42d4b3ff-b9a9-4688-8d02-10d9e9c0dcf6","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"紫-1.png":{"ver":"1.0.1","uuid":"3aad1b7b-89ec-4565-afa2-a16d36d7b721","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"红-1.png":{"ver":"1.0.1","uuid":"e624e863-53d4-41f7-bc95-924579fe8025","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"绿-1.png":{"ver":"1.0.1","uuid":"853cc248-89dc-40f1-8f16-48007e6d8ef3","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"蓝-1.png":{"ver":"1.0.1","uuid":"9cc48379-a01c-4cd1-9196-220016eb9797","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"黄-1.png":{"ver":"1.0.1","uuid":"24c66e95-12ff-4bea-b4be-aa8554eea39f","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"火yellow-1.png":{"ver":"1.0.1","uuid":"12a92a67-b5b7-472c-8c4c-95d8eefa1c82","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"},"火purple-1.png":{"ver":"1.0.1","uuid":"18af58d7-34ef-469b-a769-dec15fb0e908","rawTextureUuid":"707b0618-36e7-4fee-a68b-12157b07f102","type":"texture"}},"type":"sheet"}
assets/sheets/play.sht/red20.png

2.07 KB | W: | H:

assets/sheets/play.sht/red20.png

5.03 KB | W: | H:

assets/sheets/play.sht/red20.png
assets/sheets/play.sht/red20.png
assets/sheets/play.sht/red20.png
assets/sheets/play.sht/red20.png
  • 2-up
  • Swipe
  • Onion skin
assets/sheets/play.sht/火yellow-1.png

2.09 KB | W: | H:

assets/sheets/play.sht/火yellow-1.png

4.73 KB | W: | H:

assets/sheets/play.sht/火yellow-1.png
assets/sheets/play.sht/火yellow-1.png
assets/sheets/play.sht/火yellow-1.png
assets/sheets/play.sht/火yellow-1.png
  • 2-up
  • Swipe
  • Onion skin
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment