refactor: clean up
This commit is contained in:
parent
2036121926
commit
f82de52fda
|
@ -1,8 +1,10 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<title>Scuti Renderer</title>
|
||||
|
||||
<meta charset="utf-8" />
|
||||
|
||||
<style>
|
||||
body {
|
||||
margin: 0;
|
||||
|
@ -10,22 +12,12 @@
|
|||
overflow: hidden;
|
||||
image-rendering: pixelated;
|
||||
}
|
||||
div#stats {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
right: 0;
|
||||
z-index: 500;
|
||||
width: max(200px, 10vw, 10vh);
|
||||
height: max(100px, 6vh, 6vw);
|
||||
opacity: 0.8;
|
||||
user-select: none;
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="app"></div>
|
||||
|
||||
<script type="module" src="script4.js"></script>
|
||||
<script type="module" src="script.ts"></script>
|
||||
</body>
|
||||
</html>
|
||||
|
|
233
public/script.js
233
public/script.js
|
@ -2,60 +2,183 @@ import { Scuti } from '../src/Scuti';
|
|||
import { Room } from '../src/objects/rooms/Room';
|
||||
import { FloorMaterial } from '../src/objects/rooms/materials/FloorMaterial';
|
||||
import { WallMaterial } from '../src/objects/rooms/materials/WallMaterial';
|
||||
import { Avatar } from '../src/objects/avatars/Avatar';
|
||||
import { AvatarAction } from '../src/objects/avatars/actions/AvatarAction';
|
||||
|
||||
import { FloorFurniture } from '../src/objects/furnitures/FloorFurniture';
|
||||
import { WiredSelectionFilter } from '../src/objects/filters/WiredSelectionFilter';
|
||||
import { WallFurniture } from '../src';
|
||||
(async () => {
|
||||
const renderer = new Scuti({
|
||||
canvas: document.getElementById('app'),
|
||||
width: window.innerWidth,
|
||||
height: window.innerHeight,
|
||||
resources: './resources'
|
||||
});
|
||||
await renderer.loadResources();
|
||||
|
||||
const tileMap =
|
||||
'x0000000000000000x\n' +
|
||||
'x0000000000000000x\n' +
|
||||
'x0000000000000000x\n' +
|
||||
'00000000000000000x\n' +
|
||||
'x0000000000000000x\n' +
|
||||
'x0000000000000000x\n' +
|
||||
'x0000000000000000x\n' +
|
||||
'x0000000000000000x\n' +
|
||||
'x0000000000000000x\n' +
|
||||
'x0000000000000000x\n';
|
||||
|
||||
const room = new Room(renderer, {
|
||||
tileMap: tileMap,
|
||||
/*floorMaterial: new FloorMaterial(renderer, 110),
|
||||
wallMaterial: new WallMaterial(renderer, 1501)*/
|
||||
//floorMaterial: new FloorMaterial(renderer, 307),
|
||||
floorMaterial: new FloorMaterial(renderer, 110),
|
||||
wallMaterial: new WallMaterial(renderer, 1601)
|
||||
});
|
||||
avatar(room, 2, 1, 0, 0);
|
||||
avatar(room, 4, 1, 0, 1);
|
||||
avatar(room, 6, 1, 0, 2);
|
||||
avatar(room, 8, 1, 0, 3);
|
||||
avatar(room, 10, 1, 0, 4);
|
||||
avatar(room, 12, 1, 0, 5);
|
||||
avatar(room, 14, 1, 0, 6);
|
||||
avatar(room, 16, 1, 0, 7);
|
||||
})();
|
||||
|
||||
function avatar(room, x, y, z, direction) {
|
||||
const avatar = new Avatar({
|
||||
figure: 'hr-100-61.hd-180-7.ch-210-66.lg-270-82.sh-290-80',
|
||||
position: {
|
||||
x: x,
|
||||
y: y,
|
||||
z: z
|
||||
},
|
||||
bodyDirection: direction,
|
||||
headDirection: direction,
|
||||
actions: [AvatarAction.Talk, AvatarAction.Wave, AvatarAction.Walk, AvatarAction.CarryItem],
|
||||
handItem: 55
|
||||
});
|
||||
room.objects.add(avatar);
|
||||
const renderer = new Scuti({
|
||||
canvas: document.getElementById('app'),
|
||||
width: window.innerWidth,
|
||||
height: window.innerHeight
|
||||
});
|
||||
await renderer.loadResources('https://kozennnn.github.io/scuti-resources/');
|
||||
const tileMap = 'xxxxxxxxxxxxxxxxxxxxxx\n' +
|
||||
'xxxxxxxxxxxxxxxxxxxxxx\n' +
|
||||
'xxxxxxxxxxxxxxxxxxxxxx\n' +
|
||||
'xxxx11100001xxxxxxxxxx\n' +
|
||||
'xxxx00000000xxxxxxxx0x\n' +
|
||||
'xxx0000000000000xxxx00\n' +
|
||||
'xxxx00000000xxxxxxxx00\n' +
|
||||
'xxxx000xxx00xxxxxxxx00\n' +
|
||||
'xxxx00000x00xx0xxxxx0x\n' +
|
||||
'xxxxx00xxx00xx0000xx00\n' +
|
||||
'xxxxx0000000xx0xx0xx0x\n' +
|
||||
'xxxxx0000000xx0x0000x0\n' +
|
||||
'xxxxx0000000xx0xx000x0\n' +
|
||||
'xxxxxxxxx00xxx00000x00\n' +
|
||||
'xxxxxxxxxxxxxxx000xx0x\n' +
|
||||
'xxxxxxxxxxxxxxxxxxxxxx\n' +
|
||||
'xxxxxxxxxxxxxxxxxxxxxx\n' +
|
||||
'xxxxxx00x00xxxxxxxxxxx\n' +
|
||||
'xxxxxxxxxxxxxxxxxxxxxx\n' +
|
||||
'xxxxxxxxxxxxxxxxxxxxxx\n' +
|
||||
'xxxxxxxx00xxxxxxxxxxxx\n' +
|
||||
'xxxxx00000x0xxxxxxxxxx\n' +
|
||||
'xxxxxxx00000000000xxxx\n' +
|
||||
'xxxxxxxx0xx000000x00xx\n' +
|
||||
'xxxxxxxxxxxxxxxx00xxxx\n';
|
||||
const room = new Room(renderer, {
|
||||
tileMap,
|
||||
floorMaterial: new FloorMaterial(renderer, 110),
|
||||
wallMaterial: new WallMaterial(renderer, 2301)
|
||||
});
|
||||
const furniture = new FloorFurniture({
|
||||
id: 4967,
|
||||
position: {
|
||||
x: 5,
|
||||
y: 4,
|
||||
z: 0
|
||||
},
|
||||
direction: 2,
|
||||
state: 1
|
||||
});
|
||||
room.objects.add(furniture);
|
||||
furniture.onPointerDown = () => {
|
||||
console.log('clicked');
|
||||
};
|
||||
const furniture3 = new FloorFurniture({
|
||||
id: 8916,
|
||||
position: {
|
||||
x: 10,
|
||||
y: 10,
|
||||
z: 0
|
||||
},
|
||||
direction: 2,
|
||||
state: 1
|
||||
});
|
||||
const furniture2 = new FloorFurniture({
|
||||
id: 8916,
|
||||
position: {
|
||||
x: 8,
|
||||
y: 10,
|
||||
z: 0
|
||||
},
|
||||
direction: 2,
|
||||
state: 1
|
||||
});
|
||||
const wallFurniture = new WallFurniture({
|
||||
id: 4625,
|
||||
position: {
|
||||
x: -1,
|
||||
y: 2,
|
||||
offsetX: 2,
|
||||
offsetY: -25
|
||||
},
|
||||
direction: 2,
|
||||
state: 2
|
||||
});
|
||||
const wallFurniture2 = new WallFurniture({
|
||||
id: 4032,
|
||||
position: {
|
||||
x: 3,
|
||||
y: -1,
|
||||
offsetX: 4,
|
||||
offsetY: -30
|
||||
},
|
||||
direction: 4,
|
||||
state: 1
|
||||
});
|
||||
room.objects.add(furniture3);
|
||||
room.objects.add(furniture2);
|
||||
room.objects.add(wallFurniture);
|
||||
room.objects.add(wallFurniture2);
|
||||
setTimeout(() => {
|
||||
return wallFurniture.move({
|
||||
x: -1,
|
||||
y: 3,
|
||||
offsetX: 2,
|
||||
offsetY: -25
|
||||
});
|
||||
}, 3000);
|
||||
setTimeout(() => {
|
||||
return wallFurniture.move({
|
||||
x: -1,
|
||||
y: 5,
|
||||
offsetX: 2,
|
||||
offsetY: -25
|
||||
});
|
||||
}, 5000);
|
||||
furniture3.onLoadComplete = () => {
|
||||
console.log('loaded!');
|
||||
};
|
||||
room.tiles.onPointerDown = (event) => {
|
||||
furniture.move(event.position);
|
||||
};
|
||||
document.onkeydown = (e) => {
|
||||
e = e || window.event;
|
||||
if (e.keyCode == '38') {
|
||||
if (room.camera.zoomLevel <= 1) {
|
||||
room.camera.zoomLevel = room.camera.zoomLevel * 2;
|
||||
}
|
||||
else {
|
||||
room.camera.zoomLevel += 1;
|
||||
}
|
||||
}
|
||||
else if (e.keyCode == '40') {
|
||||
if (room.camera.zoomLevel <= 1) {
|
||||
room.camera.zoomLevel = room.camera.zoomLevel / 2;
|
||||
}
|
||||
else {
|
||||
room.camera.zoomLevel -= 1;
|
||||
}
|
||||
}
|
||||
else if (e.keyCode == '37') {
|
||||
furniture.rotate(4);
|
||||
}
|
||||
else if (e.keyCode == '39') {
|
||||
const filter = new WiredSelectionFilter(0xffffff, 0x999999);
|
||||
furniture.addFilter(filter);
|
||||
}
|
||||
};
|
||||
})().catch((error) => {
|
||||
return console.error(error);
|
||||
});
|
||||
function dice(room, x, y, z) {
|
||||
const furni5 = new FloorFurniture({
|
||||
position: {
|
||||
x,
|
||||
y,
|
||||
z
|
||||
},
|
||||
direction: 0,
|
||||
id: 284,
|
||||
state: 1
|
||||
});
|
||||
room.objects.add(furni5);
|
||||
let timeout;
|
||||
furni5.onDoubleClick = (event) => {
|
||||
console.log(event);
|
||||
console.log('clicked furni5', event);
|
||||
if (event.tag === 'activate') {
|
||||
clearTimeout(timeout);
|
||||
furni5.state = -1;
|
||||
timeout = setTimeout(() => {
|
||||
furni5.state = Math.floor(Math.random() * 6) + 1;
|
||||
}, 1000);
|
||||
}
|
||||
else {
|
||||
clearTimeout(timeout);
|
||||
furni5.state = 0;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,27 +1,43 @@
|
|||
import { Scuti } from '../src/Scuti';
|
||||
import { Room } from '../src/objects/rooms/Room';
|
||||
import { FloorMaterial } from '../src/objects/rooms/materials/FloorMaterial';
|
||||
import { WallMaterial } from '../src/objects/rooms/materials/WallMaterial';
|
||||
import { FloorFurniture } from '../src/objects/furnitures/FloorFurniture';
|
||||
import {WiredSelectionFilter} from "../src/objects/filters/WiredSelectionFilter";
|
||||
import {WallFurniture} from "../src";
|
||||
import { Scuti } from '../src/Scuti'
|
||||
import { Room } from '../src/objects/rooms/Room'
|
||||
import { FloorMaterial } from '../src/objects/rooms/materials/FloorMaterial'
|
||||
import { WallMaterial } from '../src/objects/rooms/materials/WallMaterial'
|
||||
import { FloorFurniture } from '../src/objects/furnitures/FloorFurniture'
|
||||
import { WiredSelectionFilter } from '../src/objects/filters/WiredSelectionFilter'
|
||||
import { WallFurniture } from '../src'
|
||||
|
||||
(async () => {
|
||||
// Initialising Scuti Engine
|
||||
;(async () => {
|
||||
const renderer = new Scuti({
|
||||
canvas: document.getElementById('app'),
|
||||
canvas: document.getElementById('app') as HTMLElement,
|
||||
width: window.innerWidth,
|
||||
height: window.innerHeight,
|
||||
resources: 'https://kozennnn.github.io/scuti-resources/'
|
||||
});
|
||||
await renderer.loadResources('https://kozennnn.github.io/scuti-resources/');
|
||||
height: window.innerHeight
|
||||
})
|
||||
|
||||
const tileMap = 'x1110001\n' + 'x0000000\n' + '00000000\n' + 'x0000000\n' + 'x0000000\n';
|
||||
await renderer.loadResources('https://kozennnn.github.io/scuti-resources/')
|
||||
|
||||
const tileMap =
|
||||
'xxxxxxxx000000xxxxx\n' +
|
||||
'xxxxxxx000000000xxx\n' +
|
||||
'xxxxxx000000000000x\n' +
|
||||
'xxx0x000xx0xxxx0000\n' +
|
||||
'xxx0x000x00x0000000\n' +
|
||||
'xxx0x000xx0x0000000\n' +
|
||||
'xxx0x000000x0000000\n' +
|
||||
'xxx0x000xx0x0000000\n' +
|
||||
'xxx0x000x00x0000000\n' +
|
||||
'xxx00000xx0x0000000\n' +
|
||||
'xxxxxx00000x0000000\n' +
|
||||
'xxxxxx0000000000000\n' +
|
||||
'xxxxxx0000000000000\n' +
|
||||
'xxxxxx00000x0000000\n'
|
||||
|
||||
const room = new Room(renderer, {
|
||||
tileMap: tileMap,
|
||||
tileMap,
|
||||
floorMaterial: new FloorMaterial(renderer, 110),
|
||||
wallMaterial: new WallMaterial(renderer, 2301)
|
||||
});
|
||||
})
|
||||
|
||||
const furniture = new FloorFurniture({
|
||||
//id: 4950,
|
||||
//id: 1619,
|
||||
|
@ -33,11 +49,11 @@ import {WallFurniture} from "../src";
|
|||
},
|
||||
direction: 2,
|
||||
state: 1
|
||||
});
|
||||
room.objects.add(furniture);
|
||||
})
|
||||
room.objects.add(furniture)
|
||||
furniture.onPointerDown = () => {
|
||||
console.log('clicked');
|
||||
};
|
||||
console.log('clicked')
|
||||
}
|
||||
const furniture3 = new FloorFurniture({
|
||||
id: 8916,
|
||||
position: {
|
||||
|
@ -47,7 +63,7 @@ import {WallFurniture} from "../src";
|
|||
},
|
||||
direction: 2,
|
||||
state: 1
|
||||
});
|
||||
})
|
||||
const furniture2 = new FloorFurniture({
|
||||
id: 8916,
|
||||
position: {
|
||||
|
@ -57,7 +73,7 @@ import {WallFurniture} from "../src";
|
|||
},
|
||||
direction: 2,
|
||||
state: 1
|
||||
});
|
||||
})
|
||||
const wallFurniture = new WallFurniture({
|
||||
id: 4625,
|
||||
position: {
|
||||
|
@ -68,7 +84,7 @@ import {WallFurniture} from "../src";
|
|||
},
|
||||
direction: 2,
|
||||
state: 2
|
||||
});
|
||||
})
|
||||
const wallFurniture2 = new WallFurniture({
|
||||
id: 4032,
|
||||
position: {
|
||||
|
@ -79,88 +95,94 @@ import {WallFurniture} from "../src";
|
|||
},
|
||||
direction: 4,
|
||||
state: 1
|
||||
});
|
||||
room.objects.add(furniture3);
|
||||
room.objects.add(furniture2);
|
||||
room.objects.add(wallFurniture);
|
||||
room.objects.add(wallFurniture2);
|
||||
setTimeout(() => wallFurniture.move({
|
||||
x: -1,
|
||||
y: 3,
|
||||
offsetX: 2,
|
||||
offsetY: -25
|
||||
}), 3000);
|
||||
setTimeout(() => wallFurniture.move({
|
||||
x: -1,
|
||||
y: 5,
|
||||
offsetX: 2,
|
||||
offsetY: -25
|
||||
}), 5000);
|
||||
})
|
||||
room.objects.add(furniture3)
|
||||
room.objects.add(furniture2)
|
||||
room.objects.add(wallFurniture)
|
||||
room.objects.add(wallFurniture2)
|
||||
setTimeout(() => {
|
||||
return wallFurniture.move({
|
||||
x: -1,
|
||||
y: 3,
|
||||
offsetX: 2,
|
||||
offsetY: -25
|
||||
})
|
||||
}, 3000)
|
||||
setTimeout(() => {
|
||||
return wallFurniture.move({
|
||||
x: -1,
|
||||
y: 5,
|
||||
offsetX: 2,
|
||||
offsetY: -25
|
||||
})
|
||||
}, 5000)
|
||||
//setTimeout(() => room.objects.add(furniture), 6000);
|
||||
furniture3.onLoadComplete = () => {
|
||||
console.log('loaded!');
|
||||
};
|
||||
console.log('loaded!')
|
||||
}
|
||||
room.tiles.onPointerDown = (event) => {
|
||||
furniture.move(event.position);
|
||||
furniture.move(event.position)
|
||||
//room.tileMap = tileMap;
|
||||
};
|
||||
}
|
||||
//dice(room, 5, 5, 2);
|
||||
document.onkeydown = (e) => {
|
||||
e = e || window.event;
|
||||
e = e || window.event
|
||||
|
||||
if (e.keyCode == '38') {
|
||||
if (room.camera.zoomLevel <= 1) {
|
||||
room.camera.zoomLevel = room.camera.zoomLevel * 2;
|
||||
room.camera.zoomLevel = room.camera.zoomLevel * 2
|
||||
} else {
|
||||
room.camera.zoomLevel += 1;
|
||||
room.camera.zoomLevel += 1
|
||||
}
|
||||
} else if (e.keyCode == '40') {
|
||||
if (room.camera.zoomLevel <= 1) {
|
||||
room.camera.zoomLevel = room.camera.zoomLevel / 2;
|
||||
room.camera.zoomLevel = room.camera.zoomLevel / 2
|
||||
} else {
|
||||
room.camera.zoomLevel -= 1;
|
||||
room.camera.zoomLevel -= 1
|
||||
}
|
||||
} else if (e.keyCode == '37') {
|
||||
furniture.rotate(4);
|
||||
furniture.rotate(4)
|
||||
} else if (e.keyCode == '39') {
|
||||
const filter = new WiredSelectionFilter(0xffffff, 0x999999);
|
||||
furniture.addFilter(filter);
|
||||
const filter = new WiredSelectionFilter(0xffffff, 0x999999)
|
||||
furniture.addFilter(filter)
|
||||
}
|
||||
};
|
||||
})();
|
||||
}
|
||||
})().catch((error) => {
|
||||
return console.error(error)
|
||||
})
|
||||
|
||||
function dice(room, x, y, z) {
|
||||
let furni5 = new FloorFurniture({
|
||||
const furni5 = new FloorFurniture({
|
||||
position: {
|
||||
x: x,
|
||||
y: y,
|
||||
z: z
|
||||
x,
|
||||
y,
|
||||
z
|
||||
},
|
||||
//direction: randomRotation[Math.floor(Math.random() * randomRotation.length)],
|
||||
direction: 0,
|
||||
//id: furniId[Math.floor(Math.random() * furniId.length)],
|
||||
id: 284,
|
||||
state: 1
|
||||
});
|
||||
room.objects.add(furni5);
|
||||
let timeout = undefined;
|
||||
})
|
||||
room.objects.add(furni5)
|
||||
let timeout
|
||||
furni5.onDoubleClick = (event) => {
|
||||
console.log(event);
|
||||
console.log(event)
|
||||
//if(furni5.infos.logic === "furniture_dice") {
|
||||
console.log('clicked furni5', event);
|
||||
console.log('clicked furni5', event)
|
||||
if (event.tag === 'activate') {
|
||||
clearTimeout(timeout);
|
||||
furni5.state = -1;
|
||||
clearTimeout(timeout)
|
||||
furni5.state = -1
|
||||
timeout = setTimeout(() => {
|
||||
furni5.state = Math.floor(Math.random() * 6) + 1;
|
||||
}, 1000);
|
||||
furni5.state = Math.floor(Math.random() * 6) + 1
|
||||
}, 1000)
|
||||
/*setTimeout(() => {
|
||||
furni5.state = 0
|
||||
}, 2000);*/
|
||||
} else {
|
||||
clearTimeout(timeout);
|
||||
furni5.state = 0;
|
||||
clearTimeout(timeout)
|
||||
furni5.state = 0
|
||||
}
|
||||
//x@}
|
||||
};
|
||||
}
|
||||
}
|
18
src/Scuti.ts
18
src/Scuti.ts
|
@ -11,6 +11,7 @@ import { AssetLoader } from './utilities/AssetLoader'
|
|||
* Convenience class to create a new Scuti renderer.
|
||||
*
|
||||
* This class automatically load all the needed resources and initialise the PixiJS application.
|
||||
*
|
||||
* @example
|
||||
* import { Scuti } from 'scuti-renderer';
|
||||
*
|
||||
|
@ -21,10 +22,10 @@ import { AssetLoader } from './utilities/AssetLoader'
|
|||
* height: window.innerHeight,
|
||||
* resources: './resources'
|
||||
* });
|
||||
*
|
||||
* await renderer.loadResources();
|
||||
*
|
||||
* @class
|
||||
* @memberof Scuti
|
||||
*/
|
||||
export class Scuti {
|
||||
/**
|
||||
|
@ -49,7 +50,7 @@ export class Scuti {
|
|||
* @member {Logger}
|
||||
* @private
|
||||
*/
|
||||
private readonly _logger: Logger = new Logger('Scuti')
|
||||
private readonly _logger = new Logger('Scuti')
|
||||
|
||||
/**
|
||||
* @param {IRendererConfiguration} [configuration] - The renderer configuration.
|
||||
|
@ -93,7 +94,7 @@ export class Scuti {
|
|||
* @member {Promise<void>}
|
||||
* @public
|
||||
*/
|
||||
public async loadResources(domain: string = 'http://127.0.0.1:8081/'): Promise<void> {
|
||||
public async loadResources(domain: string): Promise<void> {
|
||||
AssetLoader.domain = domain
|
||||
|
||||
/** And now load them */
|
||||
|
@ -123,4 +124,15 @@ export class Scuti {
|
|||
public get application(): Application {
|
||||
return this._application
|
||||
}
|
||||
|
||||
/**
|
||||
* Reference to the renderer logger instance.
|
||||
*
|
||||
* @member {Logger}
|
||||
* @readonly
|
||||
* @public
|
||||
*/
|
||||
public get logger(): Logger {
|
||||
return this._logger
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,12 +5,12 @@
|
|||
* @memberof Scuti
|
||||
*/
|
||||
export enum Direction {
|
||||
NORTH /** Direction 0 */,
|
||||
NORTH_EAST /** Direction 1 */,
|
||||
EAST /** Direction 2 */,
|
||||
SOUTH_EAST /** Direction 3 */,
|
||||
SOUTH /** Direction 4 */,
|
||||
SOUTH_WEST /** Direction 5 */,
|
||||
WEST /** Direction 6 */,
|
||||
NORTH_WEST /** Direction 7 */
|
||||
NORTH,
|
||||
NORTH_EAST,
|
||||
EAST,
|
||||
SOUTH_EAST,
|
||||
SOUTH,
|
||||
SOUTH_WEST,
|
||||
WEST,
|
||||
NORTH_WEST
|
||||
}
|
||||
|
|
16
src/index.ts
16
src/index.ts
|
@ -1,8 +1,8 @@
|
|||
export { Scuti } from './Scuti';
|
||||
export { Room } from './objects/rooms/Room';
|
||||
export { FloorMaterial } from './objects/rooms/materials/FloorMaterial';
|
||||
export { FloorFurniture } from './objects/furnitures/FloorFurniture';
|
||||
export { WallMaterial } from './objects/rooms/materials/WallMaterial';
|
||||
export { WallFurniture } from './objects/furnitures/WallFurniture';
|
||||
export { Avatar } from './objects/avatars/Avatar';
|
||||
export { AvatarAction } from './objects/avatars/actions/AvatarAction';
|
||||
export { Scuti } from './Scuti'
|
||||
export { Room } from './objects/rooms/Room'
|
||||
export { FloorMaterial } from './objects/rooms/materials/FloorMaterial'
|
||||
export { FloorFurniture } from './objects/furnitures/FloorFurniture'
|
||||
export { WallMaterial } from './objects/rooms/materials/WallMaterial'
|
||||
export { WallFurniture } from './objects/furnitures/WallFurniture'
|
||||
export { Avatar } from './objects/avatars/Avatar'
|
||||
export { AvatarAction } from './objects/avatars/actions/AvatarAction'
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
import { Container } from 'pixi.js';
|
||||
import { Container } from 'pixi.js'
|
||||
|
||||
import type { Scuti } from '../../Scuti';
|
||||
import { RoomVisualization } from './RoomVisualization';
|
||||
import { RoomTileMap } from './RoomTileMap';
|
||||
import type { Material } from './materials/Material';
|
||||
import { WallMaterial } from './materials/WallMaterial';
|
||||
import { FloorMaterial } from './materials/FloorMaterial';
|
||||
import { RoomCamera } from './RoomCamera';
|
||||
import type { EventManager } from '../interactions/EventManager';
|
||||
import type { IRoomConfig } from '../../types/Room';
|
||||
import type { RoomPartLayer } from './layers/RoomPartLayer';
|
||||
import type { RoomObjectLayer } from './layers/RoomObjectLayer';
|
||||
import type { Scuti } from '../../Scuti'
|
||||
import { RoomVisualization } from './RoomVisualization'
|
||||
import { RoomTileMap } from './RoomTileMap'
|
||||
import type { Material } from './materials/Material'
|
||||
import { WallMaterial } from './materials/WallMaterial'
|
||||
import { FloorMaterial } from './materials/FloorMaterial'
|
||||
import { RoomCamera } from './RoomCamera'
|
||||
import type { EventManager } from '../interactions/EventManager'
|
||||
import type { IRoomConfig } from '../../types/Room'
|
||||
import type { RoomPartLayer } from './layers/RoomPartLayer'
|
||||
import type { RoomObjectLayer } from './layers/RoomObjectLayer'
|
||||
|
||||
/**
|
||||
* Room class for rendering rooms like the ones on Habbo Hotel.
|
||||
|
@ -25,7 +25,7 @@ export class Room extends Container {
|
|||
* @member {Scuti}
|
||||
* @private
|
||||
*/
|
||||
private readonly _engine: Scuti;
|
||||
private readonly _engine: Scuti
|
||||
|
||||
/**
|
||||
* The room tile map where every informations about the room model is stored.
|
||||
|
@ -33,7 +33,7 @@ export class Room extends Container {
|
|||
* @member {RoomTileMap}
|
||||
* @private
|
||||
*/
|
||||
private _tileMap: RoomTileMap;
|
||||
private _tileMap: RoomTileMap
|
||||
|
||||
/**
|
||||
* The wall material that will be applied in the room, it contains the color and the texture of the wall.
|
||||
|
@ -41,7 +41,7 @@ export class Room extends Container {
|
|||
* @member {Material}
|
||||
* @private
|
||||
*/
|
||||
private _wallMaterial: Material;
|
||||
private _wallMaterial: Material
|
||||
|
||||
/**
|
||||
* The floor material that will be applied in the room, it contains the color and the texture of the wall.
|
||||
|
@ -49,7 +49,7 @@ export class Room extends Container {
|
|||
* @member {Material}
|
||||
* @private
|
||||
*/
|
||||
private _floorMaterial: Material;
|
||||
private _floorMaterial: Material
|
||||
|
||||
/**
|
||||
* The wall thickness of the room.
|
||||
|
@ -57,7 +57,7 @@ export class Room extends Container {
|
|||
* @member {number}
|
||||
* @private
|
||||
*/
|
||||
private _wallThickness: number;
|
||||
private _wallThickness: number
|
||||
|
||||
/**
|
||||
* The floor thickness of the room.
|
||||
|
@ -65,7 +65,7 @@ export class Room extends Container {
|
|||
* @member {number}
|
||||
* @private
|
||||
*/
|
||||
private _floorThickness: number;
|
||||
private _floorThickness: number
|
||||
|
||||
/**
|
||||
* The wall height of the room, the height is added to the base height of the room.
|
||||
|
@ -73,7 +73,7 @@ export class Room extends Container {
|
|||
* @member {number}
|
||||
* @private
|
||||
*/
|
||||
private _wallHeight: number;
|
||||
private _wallHeight: number
|
||||
|
||||
/**
|
||||
* The room view instance, where all the objects like furnitures, avatars or the tiles, walls and stairs are stored.
|
||||
|
@ -81,7 +81,7 @@ export class Room extends Container {
|
|||
* @member {RoomVisualization}
|
||||
* @private
|
||||
*/
|
||||
private readonly _visualization: RoomVisualization;
|
||||
private readonly _visualization: RoomVisualization
|
||||
|
||||
/**
|
||||
* The room camera, it manage the room dragging and centering the room when it's out of bounds.
|
||||
|
@ -89,7 +89,7 @@ export class Room extends Container {
|
|||
* @member {RoomCamera}
|
||||
* @private
|
||||
*/
|
||||
private readonly _camera: RoomCamera;
|
||||
private readonly _camera: RoomCamera
|
||||
|
||||
/**
|
||||
* @param {Scuti} [engine] - The Scuti instance that will be used to render the room.
|
||||
|
@ -102,24 +102,24 @@ export class Room extends Container {
|
|||
* @param {number} [config.wallThickness] - The room wall thickness.
|
||||
**/
|
||||
constructor(engine: Scuti, config: IRoomConfig) {
|
||||
super();
|
||||
super()
|
||||
|
||||
/** Store variables */
|
||||
this._engine = engine;
|
||||
this._wallMaterial = config.wallMaterial ?? new WallMaterial(this._engine);
|
||||
this._floorMaterial = config.floorMaterial ?? new FloorMaterial(this._engine);
|
||||
this._wallThickness = config.wallThickness ?? 8;
|
||||
this._floorThickness = config.floorThickness ?? 8;
|
||||
this._wallHeight = config.wallHeight ?? 0;
|
||||
this._engine = engine
|
||||
this._wallMaterial = config.wallMaterial ?? new WallMaterial(this._engine)
|
||||
this._floorMaterial = config.floorMaterial ?? new FloorMaterial(this._engine)
|
||||
this._wallThickness = config.wallThickness ?? 8
|
||||
this._floorThickness = config.floorThickness ?? 8
|
||||
this._wallHeight = config.wallHeight ?? 0
|
||||
|
||||
/** Initialise everything */
|
||||
this._tileMap = new RoomTileMap(config.tileMap);
|
||||
this._visualization = new RoomVisualization(this);
|
||||
this._camera = new RoomCamera(this);
|
||||
this._tileMap = new RoomTileMap(config.tileMap)
|
||||
this._visualization = new RoomVisualization(this)
|
||||
this._camera = new RoomCamera(this)
|
||||
|
||||
/** Add the room view and then the room camera to the PixiJS application */
|
||||
this.addChild(this._visualization);
|
||||
this._engine.application.stage.addChild(this._camera);
|
||||
/** Add the room view and then the room camera to the Application */
|
||||
this.addChild(this._visualization)
|
||||
this._engine.application.stage.addChild(this._camera)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -130,7 +130,7 @@ export class Room extends Container {
|
|||
* @public
|
||||
*/
|
||||
public get engine(): Scuti {
|
||||
return this._engine;
|
||||
return this._engine
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -141,7 +141,7 @@ export class Room extends Container {
|
|||
* @public
|
||||
*/
|
||||
public get visualization(): RoomVisualization {
|
||||
return this._visualization;
|
||||
return this._visualization
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -152,7 +152,7 @@ export class Room extends Container {
|
|||
* @public
|
||||
*/
|
||||
public get tileMap(): RoomTileMap {
|
||||
return this._tileMap;
|
||||
return this._tileMap
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -162,8 +162,8 @@ export class Room extends Container {
|
|||
* @public
|
||||
*/
|
||||
public set tileMap(tileMap: RoomTileMap) {
|
||||
this._tileMap = tileMap;
|
||||
this._visualization.update();
|
||||
this._tileMap = tileMap
|
||||
this._visualization.update()
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -174,7 +174,7 @@ export class Room extends Container {
|
|||
* @public
|
||||
*/
|
||||
public get wallMaterial(): Material {
|
||||
return this._wallMaterial;
|
||||
return this._wallMaterial
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -184,8 +184,8 @@ export class Room extends Container {
|
|||
* @public
|
||||
*/
|
||||
public set wallMaterial(material: Material) {
|
||||
this._wallMaterial = material;
|
||||
this._visualization.update();
|
||||
this._wallMaterial = material
|
||||
this._visualization.update()
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -196,7 +196,7 @@ export class Room extends Container {
|
|||
* @public
|
||||
*/
|
||||
public get floorMaterial(): Material {
|
||||
return this._floorMaterial;
|
||||
return this._floorMaterial
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -206,8 +206,8 @@ export class Room extends Container {
|
|||
* @public
|
||||
*/
|
||||
public set floorMaterial(material: Material) {
|
||||
this._floorMaterial = material;
|
||||
this._visualization.update();
|
||||
this._floorMaterial = material
|
||||
this._visualization.update()
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -218,7 +218,7 @@ export class Room extends Container {
|
|||
* @public
|
||||
*/
|
||||
public get wallThickness(): number {
|
||||
return this._wallThickness;
|
||||
return this._wallThickness
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -228,8 +228,8 @@ export class Room extends Container {
|
|||
* @public
|
||||
*/
|
||||
public set wallThickness(thickness: number) {
|
||||
this._wallThickness = thickness;
|
||||
this._visualization.update();
|
||||
this._wallThickness = thickness
|
||||
this._visualization.update()
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -240,7 +240,7 @@ export class Room extends Container {
|
|||
* @public
|
||||
*/
|
||||
public get floorThickness(): number {
|
||||
return this._floorThickness;
|
||||
return this._floorThickness
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -250,8 +250,8 @@ export class Room extends Container {
|
|||
* @public
|
||||
*/
|
||||
public set floorThickness(thickness: number) {
|
||||
this._floorThickness = thickness;
|
||||
this._visualization.update();
|
||||
this._floorThickness = thickness
|
||||
this._visualization.update()
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -262,7 +262,7 @@ export class Room extends Container {
|
|||
* @public
|
||||
*/
|
||||
public get wallHeight(): number {
|
||||
return this._wallHeight;
|
||||
return this._wallHeight
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -272,8 +272,8 @@ export class Room extends Container {
|
|||
* @public
|
||||
*/
|
||||
public set wallHeight(height: number) {
|
||||
this._wallHeight = height;
|
||||
this._visualization.update();
|
||||
this._wallHeight = height
|
||||
this._visualization.update()
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -284,7 +284,7 @@ export class Room extends Container {
|
|||
* @public
|
||||
*/
|
||||
public get tiles(): EventManager {
|
||||
return this._visualization.partLayer.tiles;
|
||||
return this._visualization.partLayer.tiles
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -295,7 +295,7 @@ export class Room extends Container {
|
|||
* @public
|
||||
*/
|
||||
public get walls(): EventManager {
|
||||
return this._visualization.partLayer.walls;
|
||||
return this._visualization.partLayer.walls
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -306,7 +306,7 @@ export class Room extends Container {
|
|||
* @public
|
||||
*/
|
||||
public get objects(): RoomObjectLayer {
|
||||
return this._visualization.objectLayer;
|
||||
return this._visualization.objectLayer
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -317,7 +317,7 @@ export class Room extends Container {
|
|||
* @public
|
||||
*/
|
||||
public get parts(): RoomPartLayer {
|
||||
return this._visualization.partLayer;
|
||||
return this._visualization.partLayer
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -328,6 +328,6 @@ export class Room extends Container {
|
|||
* @public
|
||||
*/
|
||||
public get camera(): RoomCamera {
|
||||
return this._camera;
|
||||
return this._camera
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
import type { Spritesheet } from 'pixi.js';
|
||||
import { Container, Assets, Sprite } from 'pixi.js';
|
||||
import type { Spritesheet } from 'pixi.js'
|
||||
import { Container, Assets, Sprite } from 'pixi.js'
|
||||
|
||||
import type { Room } from '../Room';
|
||||
import type { ICursorConfiguration, IPosition3D } from '../../../types/Room';
|
||||
import { ZOrder } from '../../../utilities/ZOrder';
|
||||
import type { Room } from '../Room'
|
||||
import type { ICursorConfiguration, IPosition3D } from '../../../types/Room'
|
||||
import { ZOrder } from '../../../utilities/ZOrder'
|
||||
|
||||
/**
|
||||
* Cursor class that show up when we move the cursor on a room tile.
|
||||
|
@ -18,19 +18,19 @@ export class Cursor extends Container {
|
|||
* @member {IPosition3D}
|
||||
* @private
|
||||
*/
|
||||
private _position: IPosition3D;
|
||||
private _position: IPosition3D
|
||||
|
||||
/**
|
||||
* @param {Room} [_room] - The room instance where the cursor will be drawn.
|
||||
* @param {ICursorConfiguration} [configuration] - The tile configuration.
|
||||
**/
|
||||
constructor(_room: Room, configuration: ICursorConfiguration) {
|
||||
super();
|
||||
super()
|
||||
|
||||
this._position = configuration.position;
|
||||
this._position = configuration.position
|
||||
|
||||
/** Draw the cursor */
|
||||
this._draw();
|
||||
this._draw()
|
||||
// todo!(): create the blue circle 'cursor_64_b' cursor when needed
|
||||
}
|
||||
|
||||
|
@ -42,15 +42,15 @@ export class Cursor extends Container {
|
|||
*/
|
||||
private _draw(): void {
|
||||
/** Creating the sprite */
|
||||
const texture = Assets.get<Spritesheet>('room/cursors').textures['tile_cursor_64_a_0_0.png'];
|
||||
const sprite = new Sprite(texture);
|
||||
const texture = Assets.get<Spritesheet>('room/cursors').textures['tile_cursor_64_a_0_0.png']
|
||||
const sprite = new Sprite(texture)
|
||||
|
||||
sprite.y = -20;
|
||||
this.addChild(sprite);
|
||||
sprite.y = -20
|
||||
this.addChild(sprite)
|
||||
|
||||
/** Positionate the cursor and its zIndex */
|
||||
this.moveTo(this._position);
|
||||
this.zIndex = ZOrder.tileCursor(this._position);
|
||||
this.moveTo(this._position)
|
||||
this.zIndex = ZOrder.tileCursor(this._position)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -62,8 +62,8 @@ export class Cursor extends Container {
|
|||
*/
|
||||
public moveTo(position: IPosition3D): void {
|
||||
// this.zOrder = ZOrder.tileCursor(position);
|
||||
this._position = position;
|
||||
this.x = 32 * this._position.x - 32 * this._position.y;
|
||||
this.y = 16 * this._position.x + 16 * this._position.y - 32 * this._position.z;
|
||||
this._position = position
|
||||
this.x = 32 * this._position.x - 32 * this._position.y
|
||||
this.y = 16 * this._position.x + 16 * this._position.y - 32 * this._position.z
|
||||
}
|
||||
}
|
||||
|
|
13
src/types/Configuration.d.ts
vendored
13
src/types/Configuration.d.ts
vendored
|
@ -1,14 +1,13 @@
|
|||
import type { Spritesheet } from 'pixi.js';
|
||||
import type { Spritesheet } from 'pixi.js'
|
||||
|
||||
export interface IRendererConfiguration {
|
||||
canvas: HTMLElement;
|
||||
width: number;
|
||||
height: number;
|
||||
resources: string;
|
||||
canvas: HTMLElement
|
||||
width: number
|
||||
height: number
|
||||
}
|
||||
|
||||
export interface ScutiSpritesheet extends Omit<Spritesheet, 'data'> {
|
||||
data: {
|
||||
partsType: { [key: string]: { gestures: string[] } };
|
||||
};
|
||||
partsType: { [key: string]: { gestures: string[] } }
|
||||
}
|
||||
}
|
||||
|
|
134
src/types/Room.d.ts
vendored
134
src/types/Room.d.ts
vendored
|
@ -1,108 +1,108 @@
|
|||
import type { StairType } from '../enums/StairType';
|
||||
import type { Direction } from '../enums/Direction';
|
||||
import type { WallType } from '../enums/WallType';
|
||||
import type { Material } from '../objects/rooms/materials/Material';
|
||||
import type { IFloorPosition, IWallPosition } from './Furniture';
|
||||
import type { IAvatarPosition } from './Avatar';
|
||||
import type { StairType } from '../enums/StairType'
|
||||
import type { Direction } from '../enums/Direction'
|
||||
import type { WallType } from '../enums/WallType'
|
||||
import type { Material } from '../objects/rooms/materials/Material'
|
||||
import type { IFloorPosition, IWallPosition } from './Furniture'
|
||||
import type { IAvatarPosition } from './Avatar'
|
||||
|
||||
export type TileMap = string[][];
|
||||
export type TileMap = string[][]
|
||||
|
||||
export interface IRoomConfig {
|
||||
tileMap: string;
|
||||
floorMaterial?: Material;
|
||||
floorThickness?: number;
|
||||
wallMaterial?: Material;
|
||||
wallHeight?: number;
|
||||
wallThickness?: number;
|
||||
tileMap: string
|
||||
floorMaterial?: Material
|
||||
floorThickness?: number
|
||||
wallMaterial?: Material
|
||||
wallHeight?: number
|
||||
wallThickness?: number
|
||||
}
|
||||
|
||||
export interface IRoomObjectConfig {
|
||||
position: IWallPosition | IFloorPosition | IAvatarPosition;
|
||||
direction: Direction;
|
||||
position: IWallPosition | IFloorPosition | IAvatarPosition
|
||||
direction: Direction
|
||||
}
|
||||
|
||||
export interface ITileConfiguration {
|
||||
material?: Material;
|
||||
thickness?: number;
|
||||
position: IPosition3D;
|
||||
material?: Material
|
||||
thickness?: number
|
||||
position: IPosition3D
|
||||
}
|
||||
|
||||
export interface IStairConfiguration {
|
||||
material?: Material;
|
||||
thickness?: number;
|
||||
type: StairType;
|
||||
position: IPosition3D;
|
||||
material?: Material
|
||||
thickness?: number
|
||||
type: StairType
|
||||
position: IPosition3D
|
||||
}
|
||||
|
||||
export interface IWallConfiguration {
|
||||
material?: Material;
|
||||
thickness?: number;
|
||||
height?: number;
|
||||
position: IPosition3D;
|
||||
type: WallType;
|
||||
door?: boolean;
|
||||
material?: Material
|
||||
thickness?: number
|
||||
height?: number
|
||||
position: IPosition3D
|
||||
type: WallType
|
||||
door?: boolean
|
||||
}
|
||||
|
||||
export interface ICursorConfiguration {
|
||||
position: IPosition3D;
|
||||
position: IPosition3D
|
||||
}
|
||||
|
||||
export interface IPosition3D {
|
||||
x: number;
|
||||
y: number;
|
||||
z: number;
|
||||
direction?: number;
|
||||
x: number
|
||||
y: number
|
||||
z: number
|
||||
direction?: number
|
||||
}
|
||||
|
||||
export interface IPosition2D {
|
||||
x: number;
|
||||
y: number;
|
||||
x: number
|
||||
y: number
|
||||
}
|
||||
|
||||
export interface ITileInfo {
|
||||
tile: boolean;
|
||||
door: boolean;
|
||||
height: number;
|
||||
stairType?: { type: StairType; direction: Direction };
|
||||
wallType?: WallType;
|
||||
tile: boolean
|
||||
door: boolean
|
||||
height: number
|
||||
stairType?: { type: StairType; direction: Direction }
|
||||
wallType?: WallType
|
||||
}
|
||||
|
||||
// missing types here
|
||||
export interface RoomMaterial {
|
||||
assets: { x: string; y: string; source?: string; flipH?: boolean };
|
||||
assets: { x: string; y: string; source?: string; flipH?: boolean }
|
||||
floorData: {
|
||||
floors: Array<{
|
||||
id: string;
|
||||
visualizations: Array<{ size: number; layers: Array<{ color: number; materialId: string }> }>;
|
||||
}>;
|
||||
};
|
||||
id: string
|
||||
visualizations: Array<{ size: number; layers: Array<{ color: number; materialId: string }> }>
|
||||
}>
|
||||
}
|
||||
materials: Array<{
|
||||
id: string;
|
||||
matrices: Array<{ columns: Array<{ width: number; cells: Array<{ textureId: string }> }> }>;
|
||||
}>;
|
||||
textures: Array<{ id: string; bitmaps: Array<{ assetName: string }> }>;
|
||||
id: string
|
||||
matrices: Array<{ columns: Array<{ width: number; cells: Array<{ textureId: string }> }> }>
|
||||
}>
|
||||
textures: Array<{ id: string; bitmaps: Array<{ assetName: string }> }>
|
||||
wallData: Array<{
|
||||
materials: Array<{
|
||||
id: string;
|
||||
matrices: Array<{ columns: Array<{ width: number; cells: Array<{ textureId: string }> }> }>;
|
||||
}>;
|
||||
textures: Array<{ id: string; bitmaps: Array<{ assetName: string }> }>;
|
||||
id: string
|
||||
matrices: Array<{ columns: Array<{ width: number; cells: Array<{ textureId: string }> }> }>
|
||||
}>
|
||||
textures: Array<{ id: string; bitmaps: Array<{ assetName: string }> }>
|
||||
walls: Array<{
|
||||
id: string;
|
||||
visualizations: Array<{ size: number; layers: Array<{ color: number; materialId: string }> }>;
|
||||
}>;
|
||||
}>;
|
||||
landscapeData: object;
|
||||
id: string
|
||||
visualizations: Array<{ size: number; layers: Array<{ color: number; materialId: string }> }>
|
||||
}>
|
||||
}>
|
||||
landscapeData: object
|
||||
// ...
|
||||
visualizationType: string;
|
||||
type: string;
|
||||
logicType: string;
|
||||
spritesheet: string;
|
||||
name: string;
|
||||
visualizationType: string
|
||||
type: string
|
||||
logicType: string
|
||||
spritesheet: string
|
||||
name: string
|
||||
maskData: {
|
||||
masks: Array<{
|
||||
id: string;
|
||||
visualizations: Array<{ size: number; layers: Array<{ color: number; materialId: string }> }>;
|
||||
}>;
|
||||
};
|
||||
id: string
|
||||
visualizations: Array<{ size: number; layers: Array<{ color: number; materialId: string }> }>
|
||||
}>
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,26 +1,26 @@
|
|||
import { Assets, Cache } from 'pixi.js';
|
||||
import { Assets, Cache } from 'pixi.js'
|
||||
|
||||
const domain = 'http://localhost:8081/';
|
||||
const domain = 'http://localhost:8081/'
|
||||
|
||||
interface LoadedKeys {
|
||||
[key: string]: Promise<any>;
|
||||
[key: string]: Promise<any>
|
||||
}
|
||||
const loadedKeys: LoadedKeys = {};
|
||||
const loadedKeys: LoadedKeys = {}
|
||||
|
||||
const load = async (key: string, url: string, onUncached?: () => void): Promise<void> => {
|
||||
if (loadedKeys[key] !== undefined) return await loadedKeys[key];
|
||||
if (loadedKeys[key] !== undefined) return await loadedKeys[key]
|
||||
|
||||
if (!Cache.has(key)) {
|
||||
if (onUncached != null) onUncached();
|
||||
Assets.add(key, AssetLoader.domain + url);
|
||||
loadedKeys[key] = Assets.load(key);
|
||||
await loadedKeys[key];
|
||||
if (onUncached != null) onUncached()
|
||||
Assets.add(key, AssetLoader.domain + url)
|
||||
loadedKeys[key] = Assets.load(key)
|
||||
await loadedKeys[key]
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Loads assets from a certain domain
|
||||
*
|
||||
* @memberof Scuti
|
||||
*/
|
||||
export const AssetLoader = { domain, load };
|
||||
export const AssetLoader = { domain, load }
|
||||
|
|
|
@ -11,13 +11,13 @@ export class Logger {
|
|||
* @member {string}
|
||||
* @private
|
||||
*/
|
||||
private readonly _name: string;
|
||||
private readonly _name: string
|
||||
|
||||
/**
|
||||
* @param {string} [name] - The logger name.
|
||||
*/
|
||||
constructor(name: string) {
|
||||
this._name = name;
|
||||
this._name = name
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -28,7 +28,7 @@ export class Logger {
|
|||
* @public
|
||||
*/
|
||||
public log(message: string): void {
|
||||
this._log('#078000', '#FFFFFF', message);
|
||||
this._log('#078000', '#FFFFFF', message)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -39,7 +39,7 @@ export class Logger {
|
|||
* @public
|
||||
*/
|
||||
public error(message: string): void {
|
||||
this._log('#E86C5D', '#FFFFFF', message);
|
||||
this._log('#E86C5D', '#FFFFFF', message)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -50,7 +50,7 @@ export class Logger {
|
|||
* @public
|
||||
*/
|
||||
public warn(message: string): void {
|
||||
this._log('#FFD100', '#000000', message);
|
||||
this._log('#FFD100', '#000000', message)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -61,7 +61,7 @@ export class Logger {
|
|||
* @public
|
||||
*/
|
||||
public info(message: string): void {
|
||||
this._log('#EC3262', '#FFFFFF', message);
|
||||
this._log('#EC3262', '#FFFFFF', message)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -79,7 +79,7 @@ export class Logger {
|
|||
`background: #FFFFFF; color: #000000;`,
|
||||
`background: #000000; color: #FFFFFF`,
|
||||
`background: ${backgroundColor}; color: ${textColor};`
|
||||
);
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -90,8 +90,8 @@ export class Logger {
|
|||
* @public
|
||||
*/
|
||||
public get time(): string {
|
||||
const date = new Date();
|
||||
return String(date.getHours()) + ':' + String(date.getMinutes()) + ':' + String(date.getSeconds());
|
||||
const date = new Date()
|
||||
return String(date.getHours()) + ':' + String(date.getMinutes()) + ':' + String(date.getSeconds())
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -102,6 +102,6 @@ export class Logger {
|
|||
* @public
|
||||
*/
|
||||
public get name(): string {
|
||||
return this._name;
|
||||
return this._name
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
import type { IPosition2D, IPosition3D } from '../types/Room';
|
||||
import type { IFloorPosition, IWallPosition } from '../types/Furniture';
|
||||
import type { IPosition2D, IPosition3D } from '../types/Room'
|
||||
import type { IFloorPosition, IWallPosition } from '../types/Furniture'
|
||||
|
||||
/**
|
||||
* Priority values
|
||||
*/
|
||||
const PRIORITY_WALL = 6;
|
||||
const PRIORITY_FLOOR = 7;
|
||||
const PRIORITY_TILE_CURSOR = 11;
|
||||
const PRIORITY_ROOM_AVATAR = 11;
|
||||
const PRIORITY_ROOM_ITEM = 11;
|
||||
const PRIORITY_WALL_ITEM = 9;
|
||||
const PRIORITY_MULTIPLIER = 10000000;
|
||||
const PRIORITY_WALL = 6
|
||||
// const PRIORITY_FLOOR = 7
|
||||
const PRIORITY_TILE_CURSOR = 11
|
||||
const PRIORITY_ROOM_AVATAR = 11
|
||||
const PRIORITY_ROOM_ITEM = 11
|
||||
const PRIORITY_WALL_ITEM = 9
|
||||
const PRIORITY_MULTIPLIER = 10000000
|
||||
|
||||
/**
|
||||
* Comparable values
|
||||
*/
|
||||
const COMPARABLE_X_Y = 1000000;
|
||||
const COMPARABLE_Z = 10000;
|
||||
const COMPARABLE_X_Y = 1000000
|
||||
const COMPARABLE_Z = 10000
|
||||
|
||||
/**
|
||||
* Return the zOrder of an avatar by it's position in the room.
|
||||
|
@ -31,8 +31,8 @@ const avatar = function (position: IPosition3D, z: number): number {
|
|||
(position.z + 0.001 * COMPARABLE_Z) +
|
||||
PRIORITY_MULTIPLIER * PRIORITY_ROOM_AVATAR +
|
||||
z
|
||||
);
|
||||
};
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the zOrder of the floor by it's position in the room.
|
||||
|
@ -42,8 +42,8 @@ const avatar = function (position: IPosition3D, z: number): number {
|
|||
* @private
|
||||
*/
|
||||
const floor = function (position: IPosition2D): number {
|
||||
return (position.x + position.y) * COMPARABLE_X_Y + PRIORITY_MULTIPLIER * PRIORITY_WALL;
|
||||
};
|
||||
return (position.x + position.y) * COMPARABLE_X_Y + PRIORITY_MULTIPLIER * PRIORITY_WALL
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the zOrder of the wall by it's position in the room.
|
||||
|
@ -53,8 +53,8 @@ const floor = function (position: IPosition2D): number {
|
|||
* @private
|
||||
*/
|
||||
const wall = function (position: IPosition2D): number {
|
||||
return (position.x + position.y) * COMPARABLE_X_Y + PRIORITY_MULTIPLIER * PRIORITY_WALL;
|
||||
};
|
||||
return (position.x + position.y) * COMPARABLE_X_Y + PRIORITY_MULTIPLIER * PRIORITY_WALL
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the zOrder of the tile cursor by it's position in the room.
|
||||
|
@ -64,8 +64,8 @@ const wall = function (position: IPosition2D): number {
|
|||
* @private
|
||||
*/
|
||||
const tileCursor = function (position: IPosition2D): number {
|
||||
return (position.x + position.y) * COMPARABLE_X_Y + PRIORITY_MULTIPLIER * PRIORITY_TILE_CURSOR;
|
||||
};
|
||||
return (position.x + position.y) * COMPARABLE_X_Y + PRIORITY_MULTIPLIER * PRIORITY_TILE_CURSOR
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the zOrder of a floor item by it's position in the room.
|
||||
|
@ -76,13 +76,13 @@ const tileCursor = function (position: IPosition2D): number {
|
|||
* @private
|
||||
*/
|
||||
const floorItem = function (position: IFloorPosition, z: number): number {
|
||||
const compareY = Math.trunc(z / 100) / 10;
|
||||
const compareY = Math.trunc(z / 100) / 10
|
||||
return (
|
||||
(position.x + position.y + compareY) * COMPARABLE_X_Y +
|
||||
position.z * COMPARABLE_Z +
|
||||
PRIORITY_MULTIPLIER * PRIORITY_ROOM_ITEM
|
||||
);
|
||||
};
|
||||
)
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the zOrder of a wall item by it's position in the room.
|
||||
|
@ -93,10 +93,10 @@ const floorItem = function (position: IFloorPosition, z: number): number {
|
|||
* @private
|
||||
*/
|
||||
const wallItem = function (position: IWallPosition, z: number): number {
|
||||
return (position.x + position.y) * COMPARABLE_X_Y + z * COMPARABLE_Z + PRIORITY_MULTIPLIER * PRIORITY_WALL_ITEM;
|
||||
};
|
||||
return (position.x + position.y) * COMPARABLE_X_Y + z * COMPARABLE_Z + PRIORITY_MULTIPLIER * PRIORITY_WALL_ITEM
|
||||
}
|
||||
|
||||
/**
|
||||
* ZOrder variable that manage the z ordering of room objects.
|
||||
*/
|
||||
export const ZOrder = { avatar, tileCursor, floorItem, wallItem, floor, wall };
|
||||
export const ZOrder = { avatar, tileCursor, floorItem, wallItem, floor, wall }
|
||||
|
|
Loading…
Reference in New Issue
Block a user