Merge pull request #797 from ClementVieilly75/FTUEPopup
Popup early dev
22
front/dist/resources/style/style.css
vendored
@ -1176,27 +1176,27 @@ div.action p.action-body{
|
|||||||
border-radius: 15px;
|
border-radius: 15px;
|
||||||
}
|
}
|
||||||
.popUpElement{
|
.popUpElement{
|
||||||
animation-duration: 1s;
|
|
||||||
animation-delay: 3s;
|
|
||||||
animation-name: slidein;
|
|
||||||
}
|
|
||||||
.popUpElement p {
|
|
||||||
font-family: 'Press Start 2P';
|
font-family: 'Press Start 2P';
|
||||||
text-align: left;
|
text-align: left;
|
||||||
font-size: 10px;
|
|
||||||
background-color: #727678;
|
|
||||||
color: white;
|
color: white;
|
||||||
}
|
}
|
||||||
.popUpElement div {
|
.popUpElement div {
|
||||||
width: 300px;
|
font-family: 'Press Start 2P';
|
||||||
height: 120px;
|
font-size: 10px;
|
||||||
background-color: #727678;
|
background-color: #727678;
|
||||||
}
|
}
|
||||||
|
|
||||||
.popUpElement button {
|
.popUpElement button {
|
||||||
font-family: 'Press Start 2P';
|
position: relative;
|
||||||
position: center;
|
|
||||||
font-size: 10px;
|
font-size: 10px;
|
||||||
|
border-image-repeat: revert;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.popUpElement .buttonContainer {
|
||||||
|
float: right;
|
||||||
|
background-color: inherit;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -336,7 +336,7 @@ export class ConsoleGlobalMessageManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
active(){
|
active(){
|
||||||
this.userInputManager.clearAllKeys();
|
this.userInputManager.disableControls();
|
||||||
this.divMainConsole.style.top = '0';
|
this.divMainConsole.style.top = '0';
|
||||||
this.activeConsole = true;
|
this.activeConsole = true;
|
||||||
}
|
}
|
||||||
|
13
front/src/Api/Events/GoToPageEvent.ts
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
import * as tg from "generic-type-guard";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export const isGoToPageEvent =
|
||||||
|
new tg.IsInterface().withProperties({
|
||||||
|
url: tg.isString,
|
||||||
|
}).get();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A message sent from the iFrame to the game to add a message in the chat.
|
||||||
|
*/
|
||||||
|
export type GoToPageEvent = tg.GuardedType<typeof isGoToPageEvent>;
|
@ -4,4 +4,4 @@ export interface IframeEvent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
||||||
export const isIframeEventWrapper = (event: any): event is IframeEvent => typeof event.type === 'string' && typeof event.data === 'object';
|
export const isIframeEventWrapper = (event: any): event is IframeEvent => typeof event.type === 'string';
|
||||||
|
13
front/src/Api/Events/OpenCoWebSiteEvent.ts
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
import * as tg from "generic-type-guard";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export const isOpenCoWebsite =
|
||||||
|
new tg.IsInterface().withProperties({
|
||||||
|
url: tg.isString,
|
||||||
|
}).get();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A message sent from the iFrame to the game to add a message in the chat.
|
||||||
|
*/
|
||||||
|
export type OpenCoWebSiteEvent = tg.GuardedType<typeof isOpenCoWebsite>;
|
13
front/src/Api/Events/OpenTabEvent.ts
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
import * as tg from "generic-type-guard";
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
export const isOpenTabEvent =
|
||||||
|
new tg.IsInterface().withProperties({
|
||||||
|
url: tg.isString,
|
||||||
|
}).get();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A message sent from the iFrame to the game to add a message in the chat.
|
||||||
|
*/
|
||||||
|
export type OpenTabEvent = tg.GuardedType<typeof isOpenTabEvent>;
|
@ -6,9 +6,12 @@ import * as crypto from "crypto";
|
|||||||
import {HtmlUtils} from "../WebRtc/HtmlUtils";
|
import {HtmlUtils} from "../WebRtc/HtmlUtils";
|
||||||
import {EnterLeaveEvent} from "./Events/EnterLeaveEvent";
|
import {EnterLeaveEvent} from "./Events/EnterLeaveEvent";
|
||||||
import {isOpenPopupEvent, OpenPopupEvent} from "./Events/OpenPopupEvent";
|
import {isOpenPopupEvent, OpenPopupEvent} from "./Events/OpenPopupEvent";
|
||||||
|
import {isOpenTabEvent, OpenTabEvent} from "./Events/OpenTabEvent";
|
||||||
import {ButtonClickedEvent} from "./Events/ButtonClickedEvent";
|
import {ButtonClickedEvent} from "./Events/ButtonClickedEvent";
|
||||||
import {ClosePopupEvent, isClosePopupEvent} from "./Events/ClosePopupEvent";
|
import {ClosePopupEvent, isClosePopupEvent} from "./Events/ClosePopupEvent";
|
||||||
|
import {scriptUtils} from "./ScriptUtils";
|
||||||
|
import {GoToPageEvent, isGoToPageEvent} from "./Events/GoToPageEvent";
|
||||||
|
import {isOpenCoWebsite, OpenCoWebSiteEvent} from "./Events/OpenCoWebSiteEvent";
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -22,9 +25,33 @@ class IframeListener {
|
|||||||
private readonly _openPopupStream: Subject<OpenPopupEvent> = new Subject();
|
private readonly _openPopupStream: Subject<OpenPopupEvent> = new Subject();
|
||||||
public readonly openPopupStream = this._openPopupStream.asObservable();
|
public readonly openPopupStream = this._openPopupStream.asObservable();
|
||||||
|
|
||||||
|
private readonly _openTabStream: Subject<OpenTabEvent> = new Subject();
|
||||||
|
public readonly openTabStream = this._openTabStream.asObservable();
|
||||||
|
|
||||||
|
private readonly _goToPageStream: Subject<GoToPageEvent> = new Subject();
|
||||||
|
public readonly goToPageStream = this._goToPageStream.asObservable();
|
||||||
|
|
||||||
|
private readonly _openCoWebSiteStream: Subject<OpenCoWebSiteEvent> = new Subject();
|
||||||
|
public readonly openCoWebSiteStream = this._openCoWebSiteStream.asObservable();
|
||||||
|
|
||||||
|
private readonly _closeCoWebSiteStream: Subject<void> = new Subject();
|
||||||
|
public readonly closeCoWebSiteStream = this._closeCoWebSiteStream.asObservable();
|
||||||
|
|
||||||
|
private readonly _disablePlayerControlStream: Subject<void> = new Subject();
|
||||||
|
public readonly disablePlayerControlStream = this._disablePlayerControlStream.asObservable();
|
||||||
|
|
||||||
|
private readonly _enablePlayerControlStream: Subject<void> = new Subject();
|
||||||
|
public readonly enablePlayerControlStream = this._enablePlayerControlStream.asObservable();
|
||||||
|
|
||||||
private readonly _closePopupStream: Subject<ClosePopupEvent> = new Subject();
|
private readonly _closePopupStream: Subject<ClosePopupEvent> = new Subject();
|
||||||
public readonly closePopupStream = this._closePopupStream.asObservable();
|
public readonly closePopupStream = this._closePopupStream.asObservable();
|
||||||
|
|
||||||
|
private readonly _displayBubbleStream: Subject<void> = new Subject();
|
||||||
|
public readonly displayBubbleStream = this._displayBubbleStream.asObservable();
|
||||||
|
|
||||||
|
private readonly _removeBubbleStream: Subject<void> = new Subject();
|
||||||
|
public readonly removeBubbleStream = this._removeBubbleStream.asObservable();
|
||||||
|
|
||||||
private readonly iframes = new Set<HTMLIFrameElement>();
|
private readonly iframes = new Set<HTMLIFrameElement>();
|
||||||
private readonly scripts = new Map<string, HTMLIFrameElement>();
|
private readonly scripts = new Map<string, HTMLIFrameElement>();
|
||||||
|
|
||||||
@ -53,6 +80,30 @@ class IframeListener {
|
|||||||
} else if (payload.type === 'closePopup' && isClosePopupEvent(payload.data)) {
|
} else if (payload.type === 'closePopup' && isClosePopupEvent(payload.data)) {
|
||||||
this._closePopupStream.next(payload.data);
|
this._closePopupStream.next(payload.data);
|
||||||
}
|
}
|
||||||
|
else if(payload.type === 'openTab' && isOpenTabEvent(payload.data)) {
|
||||||
|
scriptUtils.openTab(payload.data.url);
|
||||||
|
}
|
||||||
|
else if(payload.type === 'goToPage' && isGoToPageEvent(payload.data)) {
|
||||||
|
scriptUtils.goToPage(payload.data.url);
|
||||||
|
}
|
||||||
|
else if(payload.type === 'openCoWebSite' && isOpenCoWebsite(payload.data)) {
|
||||||
|
scriptUtils.openCoWebsite(payload.data.url);
|
||||||
|
}
|
||||||
|
else if(payload.type === 'closeCoWebSite') {
|
||||||
|
scriptUtils.closeCoWebSite();
|
||||||
|
}
|
||||||
|
else if (payload.type === 'disablePlayerControl'){
|
||||||
|
this._disablePlayerControlStream.next();
|
||||||
|
}
|
||||||
|
else if (payload.type === 'restorePlayerControl'){
|
||||||
|
this._enablePlayerControlStream.next();
|
||||||
|
}
|
||||||
|
else if (payload.type === 'displayBubble'){
|
||||||
|
this._displayBubbleStream.next();
|
||||||
|
}
|
||||||
|
else if (payload.type === 'removeBubble'){
|
||||||
|
this._removeBubbleStream.next();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
23
front/src/Api/ScriptUtils.ts
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
import {coWebsiteManager} from "../WebRtc/CoWebsiteManager";
|
||||||
|
|
||||||
|
class ScriptUtils {
|
||||||
|
|
||||||
|
public openTab(url : string){
|
||||||
|
window.open(url);
|
||||||
|
}
|
||||||
|
|
||||||
|
public goToPage(url : string){
|
||||||
|
window.location.href = url;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public openCoWebsite(url : string){
|
||||||
|
coWebsiteManager.loadCoWebsite(url,url);
|
||||||
|
}
|
||||||
|
|
||||||
|
public closeCoWebSite(){
|
||||||
|
coWebsiteManager.closeCoWebsite();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export const scriptUtils = new ScriptUtils();
|
@ -58,14 +58,13 @@ import {addLoader} from "../Components/Loader";
|
|||||||
import {ErrorSceneName} from "../Reconnecting/ErrorScene";
|
import {ErrorSceneName} from "../Reconnecting/ErrorScene";
|
||||||
import {localUserStore} from "../../Connexion/LocalUserStore";
|
import {localUserStore} from "../../Connexion/LocalUserStore";
|
||||||
import {iframeListener} from "../../Api/IframeListener";
|
import {iframeListener} from "../../Api/IframeListener";
|
||||||
import DOMElement = Phaser.GameObjects.DOMElement;
|
|
||||||
import Tween = Phaser.Tweens.Tween;
|
|
||||||
import {HtmlUtils} from "../../WebRtc/HtmlUtils";
|
import {HtmlUtils} from "../../WebRtc/HtmlUtils";
|
||||||
import Texture = Phaser.Textures.Texture;
|
import Texture = Phaser.Textures.Texture;
|
||||||
import Sprite = Phaser.GameObjects.Sprite;
|
import Sprite = Phaser.GameObjects.Sprite;
|
||||||
import CanvasTexture = Phaser.Textures.CanvasTexture;
|
import CanvasTexture = Phaser.Textures.CanvasTexture;
|
||||||
import GameObject = Phaser.GameObjects.GameObject;
|
import GameObject = Phaser.GameObjects.GameObject;
|
||||||
import FILE_LOAD_ERROR = Phaser.Loader.Events.FILE_LOAD_ERROR;
|
import FILE_LOAD_ERROR = Phaser.Loader.Events.FILE_LOAD_ERROR;
|
||||||
|
import DOMElement = Phaser.GameObjects.DOMElement;
|
||||||
import {Subscription} from "rxjs";
|
import {Subscription} from "rxjs";
|
||||||
|
|
||||||
export interface GameSceneInitInterface {
|
export interface GameSceneInitInterface {
|
||||||
@ -588,7 +587,7 @@ export class GameScene extends ResizableScene implements CenterListener {
|
|||||||
const contextRed = this.circleRedTexture.context;
|
const contextRed = this.circleRedTexture.context;
|
||||||
contextRed.beginPath();
|
contextRed.beginPath();
|
||||||
contextRed.arc(48, 48, 48, 0, 2 * Math.PI, false);
|
contextRed.arc(48, 48, 48, 0, 2 * Math.PI, false);
|
||||||
// context.lineWidth = 5;
|
//context.lineWidth = 5;
|
||||||
contextRed.strokeStyle = '#ff0000';
|
contextRed.strokeStyle = '#ff0000';
|
||||||
contextRed.stroke();
|
contextRed.stroke();
|
||||||
this.circleRedTexture.refresh();
|
this.circleRedTexture.refresh();
|
||||||
@ -684,30 +683,45 @@ export class GameScene extends ResizableScene implements CenterListener {
|
|||||||
this.gameMap.onPropertyChange('zone', (newValue, oldValue) => {
|
this.gameMap.onPropertyChange('zone', (newValue, oldValue) => {
|
||||||
if (newValue === undefined || newValue === false || newValue === '') {
|
if (newValue === undefined || newValue === false || newValue === '') {
|
||||||
iframeListener.sendLeaveEvent(oldValue as string);
|
iframeListener.sendLeaveEvent(oldValue as string);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
iframeListener.sendEnterEvent(newValue as string);
|
iframeListener.sendEnterEvent(newValue as string);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private listenToIframeEvents(): void {
|
private listenToIframeEvents(): void {
|
||||||
iframeListener.openPopupStream.subscribe((openPopupEvent) => {
|
iframeListener.openPopupStream.subscribe((openPopupEvent) => {
|
||||||
const escapedMessage = HtmlUtils.escapeHtml(openPopupEvent.message);
|
|
||||||
|
|
||||||
let html = `<div class="nes-container with-title is-centered">
|
let objectLayerSquare : ITiledMapObject;
|
||||||
|
const targetObjectData = this.getObjectLayerData(openPopupEvent.targetObject);
|
||||||
|
if (targetObjectData !== undefined){
|
||||||
|
objectLayerSquare = targetObjectData;
|
||||||
|
} else {
|
||||||
|
console.error("Error while opening a popup. Cannot find an object on the map with name '" + openPopupEvent.targetObject + "'. The first parameter of WA.openPopup() must be the name of a rectangle object in your map.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const escapedMessage = HtmlUtils.escapeHtml(openPopupEvent.message);
|
||||||
|
let html = `<div id="container"><div class="nes-container with-title is-centered">
|
||||||
${escapedMessage}
|
${escapedMessage}
|
||||||
</div>`;
|
</div> </div>`;
|
||||||
|
const buttonContainer = `<div class="buttonContainer"</div>`;
|
||||||
|
html += buttonContainer;
|
||||||
let id = 0;
|
let id = 0;
|
||||||
for (const button of openPopupEvent.buttons) {
|
for (const button of openPopupEvent.buttons) {
|
||||||
html += `<button type="button" class="nes-btn is-${HtmlUtils.escapeHtml(button.className ?? '')}" id="popup-${openPopupEvent.popupId}-${id}">${HtmlUtils.escapeHtml(button.label)}</button>`;
|
html += `<button type="button" class="nes-btn is-${HtmlUtils.escapeHtml(button.className ?? '')}" id="popup-${openPopupEvent.popupId}-${id}">${HtmlUtils.escapeHtml(button.label)}</button>`;
|
||||||
id++;
|
id++;
|
||||||
}
|
}
|
||||||
|
const domElement = this.add.dom(objectLayerSquare.x + objectLayerSquare.width/2 ,
|
||||||
|
objectLayerSquare.y + objectLayerSquare.height/2).createFromHTML(html);
|
||||||
|
|
||||||
const domElement = this.add.dom(150, 150).createFromHTML(html);
|
const container : HTMLDivElement = domElement.getChildByID("container") as HTMLDivElement;
|
||||||
|
container.style.width = objectLayerSquare.width + "px";
|
||||||
domElement.scale = 0;
|
domElement.scale = 0;
|
||||||
domElement.setClassName('popUpElement');
|
domElement.setClassName('popUpElement');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
id = 0;
|
id = 0;
|
||||||
for (const button of openPopupEvent.buttons) {
|
for (const button of openPopupEvent.buttons) {
|
||||||
const button = HtmlUtils.getElementByIdOrFail<HTMLButtonElement>(`popup-${openPopupEvent.popupId}-${id}`);
|
const button = HtmlUtils.getElementByIdOrFail<HTMLButtonElement>(`popup-${openPopupEvent.popupId}-${id}`);
|
||||||
@ -745,6 +759,23 @@ ${escapedMessage}
|
|||||||
},
|
},
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
iframeListener.disablePlayerControlStream.subscribe(()=>{
|
||||||
|
this.userInputManager.disableControls();
|
||||||
|
})
|
||||||
|
iframeListener.enablePlayerControlStream.subscribe(()=>{
|
||||||
|
this.userInputManager.restoreControls();
|
||||||
|
})
|
||||||
|
let scriptedBubbleSprite : Sprite;
|
||||||
|
iframeListener.displayBubbleStream.subscribe(()=>{
|
||||||
|
scriptedBubbleSprite = new Sprite(this,this.CurrentPlayer.x + 25,this.CurrentPlayer.y,'circleSprite-white');
|
||||||
|
scriptedBubbleSprite.setDisplayOrigin(48, 48);
|
||||||
|
this.add.existing(scriptedBubbleSprite);
|
||||||
|
})
|
||||||
|
iframeListener.removeBubbleStream.subscribe(()=>{
|
||||||
|
scriptedBubbleSprite.destroy();
|
||||||
|
})
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private getMapDirUrl(): string {
|
private getMapDirUrl(): string {
|
||||||
@ -1267,7 +1298,19 @@ ${escapedMessage}
|
|||||||
bottom: camera.scrollY + camera.height,
|
bottom: camera.scrollY + camera.height,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
private getObjectLayerData(objectName : string) : ITiledMapObject| undefined{
|
||||||
|
for (const layer of this.mapFile.layers) {
|
||||||
|
if (layer.type === 'objectgroup' && layer.name === 'floorLayer') {
|
||||||
|
for (const object of layer.objects) {
|
||||||
|
if (object.name === objectName) {
|
||||||
|
return object;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return undefined;
|
||||||
|
|
||||||
|
}
|
||||||
private reposition(): void {
|
private reposition(): void {
|
||||||
this.presentationModeSprite.setY(this.game.renderer.height - 2);
|
this.presentationModeSprite.setY(this.game.renderer.height - 2);
|
||||||
this.chatModeSprite.setY(this.game.renderer.height - 2);
|
this.chatModeSprite.setY(this.game.renderer.height - 2);
|
||||||
@ -1323,7 +1366,7 @@ ${escapedMessage}
|
|||||||
//todo: into onConnexionMessage
|
//todo: into onConnexionMessage
|
||||||
private bannedUser(){
|
private bannedUser(){
|
||||||
this.cleanupClosingScene();
|
this.cleanupClosingScene();
|
||||||
this.userInputManager.clearAllKeys();
|
this.userInputManager.disableControls();
|
||||||
this.scene.start(ErrorSceneName, {
|
this.scene.start(ErrorSceneName, {
|
||||||
title: 'Banned',
|
title: 'Banned',
|
||||||
subTitle: 'You were banned from WorkAdventure',
|
subTitle: 'You were banned from WorkAdventure',
|
||||||
@ -1335,7 +1378,7 @@ ${escapedMessage}
|
|||||||
if (event.type === ConnexionMessageEventTypes.worldFull) {
|
if (event.type === ConnexionMessageEventTypes.worldFull) {
|
||||||
this.cleanupClosingScene();
|
this.cleanupClosingScene();
|
||||||
this.scene.stop(ReconnectingSceneName);
|
this.scene.stop(ReconnectingSceneName);
|
||||||
this.userInputManager.clearAllKeys();
|
this.userInputManager.disableControls();
|
||||||
this.scene.start(ErrorSceneName, {
|
this.scene.start(ErrorSceneName, {
|
||||||
title: 'Connection rejected',
|
title: 'Connection rejected',
|
||||||
subTitle: 'The world you are trying to join is full. Try again later.',
|
subTitle: 'The world you are trying to join is full. Try again later.',
|
||||||
|
@ -61,7 +61,7 @@ export class ReportMenu extends Phaser.GameObjects.DOMElement {
|
|||||||
|
|
||||||
this.opened = true;
|
this.opened = true;
|
||||||
|
|
||||||
gameManager.getCurrentGameScene(this.scene).userInputManager.clearAllKeys();
|
gameManager.getCurrentGameScene(this.scene).userInputManager.disableControls();
|
||||||
|
|
||||||
this.scene.tweens.add({
|
this.scene.tweens.add({
|
||||||
targets: this,
|
targets: this,
|
||||||
|
@ -31,10 +31,11 @@ export class ActiveEventList {
|
|||||||
export class UserInputManager {
|
export class UserInputManager {
|
||||||
private KeysCode!: UserInputManagerDatum[];
|
private KeysCode!: UserInputManagerDatum[];
|
||||||
private Scene: GameScene;
|
private Scene: GameScene;
|
||||||
|
private isInputDisabled : boolean;
|
||||||
constructor(Scene : GameScene) {
|
constructor(Scene : GameScene) {
|
||||||
this.Scene = Scene;
|
this.Scene = Scene;
|
||||||
this.initKeyBoardEvent();
|
this.initKeyBoardEvent();
|
||||||
|
this.isInputDisabled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
initKeyBoardEvent(){
|
initKeyBoardEvent(){
|
||||||
@ -63,16 +64,25 @@ export class UserInputManager {
|
|||||||
this.Scene.input.keyboard.removeAllListeners();
|
this.Scene.input.keyboard.removeAllListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
clearAllKeys(){
|
disableControls(){
|
||||||
this.Scene.input.keyboard.removeAllKeys();
|
this.Scene.input.keyboard.removeAllKeys();
|
||||||
|
this.isInputDisabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
restoreControls(){
|
||||||
|
this.initKeyBoardEvent();
|
||||||
|
this.isInputDisabled = false;
|
||||||
|
}
|
||||||
getEventListForGameTick(): ActiveEventList {
|
getEventListForGameTick(): ActiveEventList {
|
||||||
const eventsMap = new ActiveEventList();
|
const eventsMap = new ActiveEventList();
|
||||||
|
if (this.isInputDisabled) {
|
||||||
|
return eventsMap;
|
||||||
|
}
|
||||||
this.KeysCode.forEach(d => {
|
this.KeysCode.forEach(d => {
|
||||||
if (d. keyInstance.isDown) {
|
if (d. keyInstance.isDown) {
|
||||||
eventsMap.set(d.event, true);
|
eventsMap.set(d.event, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
return eventsMap;
|
return eventsMap;
|
||||||
}
|
}
|
||||||
|
@ -70,12 +70,12 @@ export class DiscussionManager {
|
|||||||
const inputMessage: HTMLInputElement = document.createElement('input');
|
const inputMessage: HTMLInputElement = document.createElement('input');
|
||||||
inputMessage.onfocus = () => {
|
inputMessage.onfocus = () => {
|
||||||
if(this.userInputManager) {
|
if(this.userInputManager) {
|
||||||
this.userInputManager.clearAllKeys();
|
this.userInputManager.disableControls();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
inputMessage.onblur = () => {
|
inputMessage.onblur = () => {
|
||||||
if(this.userInputManager) {
|
if(this.userInputManager) {
|
||||||
this.userInputManager.initKeyBoardEvent();
|
this.userInputManager.restoreControls();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
inputMessage.type = "text";
|
inputMessage.type = "text";
|
||||||
|
@ -6,6 +6,9 @@ import {EnterLeaveEvent, isEnterLeaveEvent} from "./Api/Events/EnterLeaveEvent";
|
|||||||
import {OpenPopupEvent} from "./Api/Events/OpenPopupEvent";
|
import {OpenPopupEvent} from "./Api/Events/OpenPopupEvent";
|
||||||
import {isButtonClickedEvent} from "./Api/Events/ButtonClickedEvent";
|
import {isButtonClickedEvent} from "./Api/Events/ButtonClickedEvent";
|
||||||
import {ClosePopupEvent} from "./Api/Events/ClosePopupEvent";
|
import {ClosePopupEvent} from "./Api/Events/ClosePopupEvent";
|
||||||
|
import {OpenTabEvent} from "./Api/Events/OpenTabEvent";
|
||||||
|
import {GoToPageEvent} from "./Api/Events/GoToPageEvent";
|
||||||
|
import {OpenCoWebSiteEvent} from "./Api/Events/OpenCoWebSiteEvent";
|
||||||
|
|
||||||
interface WorkAdventureApi {
|
interface WorkAdventureApi {
|
||||||
sendChatMessage(message: string, author: string): void;
|
sendChatMessage(message: string, author: string): void;
|
||||||
@ -13,11 +16,20 @@ interface WorkAdventureApi {
|
|||||||
onEnterZone(name: string, callback: () => void): void;
|
onEnterZone(name: string, callback: () => void): void;
|
||||||
onLeaveZone(name: string, callback: () => void): void;
|
onLeaveZone(name: string, callback: () => void): void;
|
||||||
openPopup(targetObject: string, message: string, buttons: ButtonDescriptor[]): Popup;
|
openPopup(targetObject: string, message: string, buttons: ButtonDescriptor[]): Popup;
|
||||||
|
openTab(url : string): void;
|
||||||
|
goToPage(url : string): void;
|
||||||
|
openCoWebSite(url : string): void;
|
||||||
|
closeCoWebSite(): void;
|
||||||
|
disablePlayerControl() : void;
|
||||||
|
restorePlayerControl() : void;
|
||||||
|
displayBubble() : void;
|
||||||
|
removeBubble() : void;
|
||||||
}
|
}
|
||||||
|
|
||||||
declare global {
|
declare global {
|
||||||
// eslint-disable-next-line no-var
|
// eslint-disable-next-line no-var
|
||||||
var WA: WorkAdventureApi
|
var WA: WorkAdventureApi
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
type ChatMessageCallback = (message: string) => void;
|
type ChatMessageCallback = (message: string) => void;
|
||||||
@ -62,7 +74,6 @@ class Popup {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
window.WA = {
|
window.WA = {
|
||||||
/**
|
/**
|
||||||
* Send a message in the chat.
|
* Send a message in the chat.
|
||||||
@ -77,14 +88,60 @@ window.WA = {
|
|||||||
} as ChatEvent
|
} as ChatEvent
|
||||||
}, '*');
|
}, '*');
|
||||||
},
|
},
|
||||||
|
disablePlayerControl() : void {
|
||||||
|
window.parent.postMessage({'type' : 'disablePlayerControl'},'*');
|
||||||
|
},
|
||||||
|
|
||||||
|
restorePlayerControl() : void {
|
||||||
|
window.parent.postMessage({'type' : 'restorePlayerControl'},'*');
|
||||||
|
},
|
||||||
|
|
||||||
|
displayBubble() : void {
|
||||||
|
window.parent.postMessage({'type' : 'displayBubble'},'*');
|
||||||
|
},
|
||||||
|
|
||||||
|
removeBubble() : void {
|
||||||
|
window.parent.postMessage({'type' : 'removeBubble'},'*');
|
||||||
|
},
|
||||||
|
|
||||||
|
openTab(url : string) : void{
|
||||||
|
window.parent.postMessage({
|
||||||
|
"type" : 'openTab',
|
||||||
|
"data" : {
|
||||||
|
url
|
||||||
|
} as OpenTabEvent
|
||||||
|
},'*');
|
||||||
|
},
|
||||||
|
|
||||||
|
goToPage(url : string) : void{
|
||||||
|
window.parent.postMessage({
|
||||||
|
"type" : 'goToPage',
|
||||||
|
"data" : {
|
||||||
|
url
|
||||||
|
} as GoToPageEvent
|
||||||
|
},'*');
|
||||||
|
},
|
||||||
|
|
||||||
|
openCoWebSite(url : string) : void{
|
||||||
|
window.parent.postMessage({
|
||||||
|
"type" : 'openCoWebSite',
|
||||||
|
"data" : {
|
||||||
|
url
|
||||||
|
} as OpenCoWebSiteEvent
|
||||||
|
},'*');
|
||||||
|
},
|
||||||
|
|
||||||
|
closeCoWebSite() : void{
|
||||||
|
window.parent.postMessage({
|
||||||
|
"type" : 'closeCoWebSite'
|
||||||
|
},'*');
|
||||||
|
},
|
||||||
|
|
||||||
openPopup(targetObject: string, message: string, buttons: ButtonDescriptor[]): Popup {
|
openPopup(targetObject: string, message: string, buttons: ButtonDescriptor[]): Popup {
|
||||||
popupId++;
|
popupId++;
|
||||||
|
|
||||||
const popup = new Popup(popupId);
|
const popup = new Popup(popupId);
|
||||||
|
|
||||||
const btnMap = new Map<number, () => void>();
|
const btnMap = new Map<number, () => void>();
|
||||||
popupCallbacks.set(popupId, btnMap);
|
popupCallbacks.set(popupId, btnMap);
|
||||||
|
|
||||||
let id = 0;
|
let id = 0;
|
||||||
for (const button of buttons) {
|
for (const button of buttons) {
|
||||||
const callback = button.callback;
|
const callback = button.callback;
|
||||||
@ -96,6 +153,7 @@ window.WA = {
|
|||||||
id++;
|
id++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
window.parent.postMessage({
|
window.parent.postMessage({
|
||||||
'type': 'openPopup',
|
'type': 'openPopup',
|
||||||
'data': {
|
'data': {
|
||||||
@ -167,6 +225,7 @@ window.addEventListener('message', message => {
|
|||||||
callback(popup);
|
callback(popup);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// ...
|
// ...
|
||||||
|
25
maps/Tuto/Attribution-tilesets.txt
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
License
|
||||||
|
-------
|
||||||
|
|
||||||
|
CC-BY-SA 3.0:
|
||||||
|
- http://creativecommons.org/licenses/by-sa/3.0/
|
||||||
|
- See the file: cc-by-sa-3.0.txt
|
||||||
|
GNU GPL 3.0:
|
||||||
|
- http://www.gnu.org/licenses/gpl-3.0.html
|
||||||
|
- See the file: gpl-3.0.txt
|
||||||
|
|
||||||
|
Assets from: workadventure@thecodingmachine.com
|
||||||
|
|
||||||
|
BASE assets:
|
||||||
|
------------
|
||||||
|
|
||||||
|
- le-coq.png
|
||||||
|
- logotcm.png
|
||||||
|
- pin.png
|
||||||
|
- tileset1-repositioning.png
|
||||||
|
- tileset1.png
|
||||||
|
- tileset2.2.png
|
||||||
|
- tileset2.png
|
||||||
|
- tileset3.2.png
|
||||||
|
- tileset3.png
|
||||||
|
- walls2.png
|
BIN
maps/Tuto/Male 13-4.png
Normal file
After Width: | Height: | Size: 2.1 KiB |
BIN
maps/Tuto/fantasy.png
Normal file
After Width: | Height: | Size: 395 KiB |
74
maps/Tuto/scriptTuto.js
Normal file
@ -0,0 +1,74 @@
|
|||||||
|
var isFirstTimeTuto = false;
|
||||||
|
var textFirstPopup = 'Hey ! This is how to start a discussion with someone ! You can be 4 max in a bubble.';
|
||||||
|
var textSecondPopup = 'You can also use the chat to communicate ! ';
|
||||||
|
var targetObjectTutoBubble ='Tutobubble';
|
||||||
|
var targetObjectTutoChat ='tutoChat';
|
||||||
|
var targetObjectTutoExplanation ='tutoExplanation';
|
||||||
|
var popUpExplanation = undefined;
|
||||||
|
function launchTuto (){
|
||||||
|
WA.openPopup(targetObjectTutoBubble, textFirstPopup, [
|
||||||
|
{
|
||||||
|
label: "Next",
|
||||||
|
className: "popUpElement",
|
||||||
|
callback: (popup) => {
|
||||||
|
popup.close();
|
||||||
|
|
||||||
|
WA.openPopup(targetObjectTutoChat, textSecondPopup, [
|
||||||
|
{
|
||||||
|
label: "Open Chat",
|
||||||
|
className: "popUpElement",
|
||||||
|
callback: (popup1) => {
|
||||||
|
WA.sendChatMessage("Hey you can talk here too!", 'WA Guide');
|
||||||
|
popup1.close();
|
||||||
|
WA.openPopup("TutoFinal","You are good to go! You can meet the dev team and discover the features in the next room!",[
|
||||||
|
{
|
||||||
|
label: "Got it!",
|
||||||
|
className : "success",callback:(popup2 => {
|
||||||
|
popup2.close();
|
||||||
|
WA.restorePlayerControl();
|
||||||
|
})
|
||||||
|
}
|
||||||
|
])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
WA.disablePlayerControl();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
WA.onEnterZone('popupZone', () => {
|
||||||
|
WA.displayBubble();
|
||||||
|
if (!isFirstTimeTuto) {
|
||||||
|
isFirstTimeTuto = true;
|
||||||
|
launchTuto();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
popUpExplanation = WA.openPopup(targetObjectTutoExplanation, 'Do you want to review the explanation?', [
|
||||||
|
{
|
||||||
|
label: "No",
|
||||||
|
className: "error",
|
||||||
|
callback: (popup) => {
|
||||||
|
popup.close();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "Yes",
|
||||||
|
className: "success",
|
||||||
|
callback: (popup) => {
|
||||||
|
popup.close();
|
||||||
|
launchTuto();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
])
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
WA.onLeaveZone('popupZone', () => {
|
||||||
|
if (popUpExplanation !== undefined) popUpExplanation.close();
|
||||||
|
WA.removeBubble();
|
||||||
|
})
|
BIN
maps/Tuto/shift.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
maps/Tuto/textTuto3.png
Normal file
After Width: | Height: | Size: 33 KiB |
4
maps/Tuto/tilesets/Atlas-refs-opengameart.txt
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
LPC Atlas :
|
||||||
|
https://opengameart.org/content/lpc-tile-atlas
|
||||||
|
LPC Atlas 2 :
|
||||||
|
https://opengameart.org/content/lpc-tile-atlas2
|
139
maps/Tuto/tilesets/LPC-Atlas-Attribution.txt
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
License
|
||||||
|
-------
|
||||||
|
|
||||||
|
CC-BY-SA 3.0:
|
||||||
|
- http://creativecommons.org/licenses/by-sa/3.0/
|
||||||
|
- See the file: cc-by-sa-3.0.txt
|
||||||
|
GNU GPL 3.0:
|
||||||
|
- http://www.gnu.org/licenses/gpl-3.0.html
|
||||||
|
- See the file: gpl-3.0.txt
|
||||||
|
|
||||||
|
Note the file is based on the LCP contest readme so don't expect the exact little pieces used like the base one.
|
||||||
|
*Additional license information.
|
||||||
|
|
||||||
|
Assets from:
|
||||||
|
|
||||||
|
LPC participants:
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Casper Nilsson
|
||||||
|
*GNU GPL 3.0 or later
|
||||||
|
email: casper.nilsson@gmail.com
|
||||||
|
Freenode: CasperN
|
||||||
|
OpenGameArt.org: C.Nilsson
|
||||||
|
|
||||||
|
- LPC C.Nilsson (2D art)
|
||||||
|
|
||||||
|
Daniel Eddeland
|
||||||
|
*GNU GPL 3.0 or later
|
||||||
|
- Tilesets of plants, props, food and environments, suitable for farming / fishing sims and other games.
|
||||||
|
- Includes wheat, grass, sand tilesets, fence tilesets and plants such as corn and tomato.
|
||||||
|
|
||||||
|
|
||||||
|
Johann CHARLOT
|
||||||
|
*GNU LGPL Version 3.
|
||||||
|
*Later versions are permitted.
|
||||||
|
Homepage http://poufpoufproduction.fr
|
||||||
|
Email johannc@poufpoufproduction.fr
|
||||||
|
|
||||||
|
- Shoot'em up graphic kit
|
||||||
|
|
||||||
|
Skyler Robert Colladay
|
||||||
|
|
||||||
|
- FeralFantom's Entry (2D art)
|
||||||
|
|
||||||
|
BASE assets:
|
||||||
|
------------
|
||||||
|
|
||||||
|
Lanea Zimmerman (AKA Sharm)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- barrel.png
|
||||||
|
- brackish.png
|
||||||
|
- buckets.png
|
||||||
|
- bridges.png
|
||||||
|
- cabinets.png
|
||||||
|
- cement.png
|
||||||
|
- cementstair.png
|
||||||
|
- chests.png
|
||||||
|
- country.png
|
||||||
|
- cup.png
|
||||||
|
- dirt2.png
|
||||||
|
- dirt.png
|
||||||
|
- dungeon.png
|
||||||
|
- grassalt.png
|
||||||
|
- grass.png
|
||||||
|
- holek.png
|
||||||
|
- holemid.png
|
||||||
|
- hole.png
|
||||||
|
- house.png
|
||||||
|
- inside.png
|
||||||
|
- kitchen.png
|
||||||
|
- lava.png
|
||||||
|
- lavarock.png
|
||||||
|
- mountains.png
|
||||||
|
- rock.png
|
||||||
|
- shadow.png
|
||||||
|
- signs.png
|
||||||
|
- stairs.png
|
||||||
|
- treetop.png
|
||||||
|
- trunk.png
|
||||||
|
- waterfall.png
|
||||||
|
- watergrass.png
|
||||||
|
- water.png
|
||||||
|
- princess.png and princess.xcf
|
||||||
|
|
||||||
|
|
||||||
|
Stephen Challener (AKA Redshrike)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- female_walkcycle.png
|
||||||
|
- female_hurt.png
|
||||||
|
- female_slash.png
|
||||||
|
- female_spellcast.png
|
||||||
|
- male_walkcycle.png
|
||||||
|
- male_hurt.png
|
||||||
|
- male_slash.png
|
||||||
|
- male_spellcast.png
|
||||||
|
- male_pants.png
|
||||||
|
- male_hurt_pants.png
|
||||||
|
- male_fall_down_pants.png
|
||||||
|
- male_slash_pants.png
|
||||||
|
|
||||||
|
|
||||||
|
Charles Sanchez (AKA CharlesGabriel)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- bat.png
|
||||||
|
- bee.png
|
||||||
|
- big_worm.png
|
||||||
|
- eyeball.png
|
||||||
|
- ghost.png
|
||||||
|
- man_eater_flower.png
|
||||||
|
- pumpking.png
|
||||||
|
- slime.png
|
||||||
|
- small_worm.png
|
||||||
|
- snake.png
|
||||||
|
|
||||||
|
|
||||||
|
Manuel Riecke (AKA MrBeast)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- hairfemale.png and hairfemale.xcf
|
||||||
|
- hairmale.png and hairmale.xcf
|
||||||
|
- soldier.png
|
||||||
|
- soldier_altcolor.png
|
||||||
|
|
||||||
|
|
||||||
|
Daniel Armstrong (AKA HughSpectrum)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Castle work:
|
||||||
|
|
||||||
|
- castlewalls.png
|
||||||
|
- castlefloors.png
|
||||||
|
- castle_outside.png
|
||||||
|
- castlefloors_outside.png
|
||||||
|
- castle_lightsources.png
|
||||||
|
|
||||||
|
|
166
maps/Tuto/tilesets/LPC-Atlas2-Attribution2.txt
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
License
|
||||||
|
-------
|
||||||
|
|
||||||
|
CC-BY-SA 3.0:
|
||||||
|
- http://creativecommons.org/licenses/by-sa/3.0/
|
||||||
|
- See the file: cc-by-sa-3.0.txt
|
||||||
|
GNU GPL 3.0:
|
||||||
|
- http://www.gnu.org/licenses/gpl-3.0.html
|
||||||
|
- See the file: gpl-3.0.txt
|
||||||
|
|
||||||
|
Note only some files from the entries are selected.
|
||||||
|
*Additional license information.
|
||||||
|
|
||||||
|
Assets from:
|
||||||
|
|
||||||
|
LPC participants:
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Barbara Rivera
|
||||||
|
|
||||||
|
- tree,tombstone
|
||||||
|
|
||||||
|
Casper Nilsson
|
||||||
|
*GNU GPL 3.0 or later
|
||||||
|
email: casper.nilsson@gmail.com
|
||||||
|
Freenode: CasperN
|
||||||
|
OpenGameArt.org: C.Nilsson
|
||||||
|
|
||||||
|
- LPC C.Nilsson (2D art)
|
||||||
|
|
||||||
|
Chris Phillips
|
||||||
|
|
||||||
|
- tree
|
||||||
|
|
||||||
|
Daniel Eddeland
|
||||||
|
*GNU GPL 3.0 or later
|
||||||
|
|
||||||
|
- Tilesets of plants, props, food and environments, suitable for farming / fishing sims and other games.
|
||||||
|
- Includes wheat, grass, sand tilesets, fence tilesets and plants such as corn and tomato.
|
||||||
|
- Also includes village/marketplace objects like sacks, food, some smithing equipment, tables and stalls.
|
||||||
|
|
||||||
|
|
||||||
|
Anamaris and Krusmira (aka? Emilio J Sanchez)
|
||||||
|
|
||||||
|
- Sierra__Steampun-a-fy (with concept art)
|
||||||
|
|
||||||
|
Jonas Klinger
|
||||||
|
|
||||||
|
- Skorpio's SciFi Sprite Pack
|
||||||
|
|
||||||
|
Joshua Taylor
|
||||||
|
|
||||||
|
- Fruit and Veggie Inventory
|
||||||
|
|
||||||
|
Leo Villeveygoux
|
||||||
|
|
||||||
|
- Limestone Wall
|
||||||
|
|
||||||
|
Mark Weyer
|
||||||
|
|
||||||
|
- signpost+shadow
|
||||||
|
|
||||||
|
Matthew Nash
|
||||||
|
|
||||||
|
- Public Toilet Tileset
|
||||||
|
|
||||||
|
Skyler Robert Colladay
|
||||||
|
|
||||||
|
- FeralFantom's Entry
|
||||||
|
|
||||||
|
|
||||||
|
BASE assets:
|
||||||
|
------------
|
||||||
|
|
||||||
|
Lanea Zimmerman (AKA Sharm)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- barrel.png
|
||||||
|
- brackish.png
|
||||||
|
- buckets.png
|
||||||
|
- bridges.png
|
||||||
|
- cabinets.png
|
||||||
|
- cement.png
|
||||||
|
- cementstair.png
|
||||||
|
- chests.png
|
||||||
|
- country.png
|
||||||
|
- cup.png
|
||||||
|
- dirt2.png
|
||||||
|
- dirt.png
|
||||||
|
- dungeon.png
|
||||||
|
- grassalt.png
|
||||||
|
- grass.png
|
||||||
|
- holek.png
|
||||||
|
- holemid.png
|
||||||
|
- hole.png
|
||||||
|
- house.png
|
||||||
|
- inside.png
|
||||||
|
- kitchen.png
|
||||||
|
- lava.png
|
||||||
|
- lavarock.png
|
||||||
|
- mountains.png
|
||||||
|
- rock.png
|
||||||
|
- shadow.png
|
||||||
|
- signs.png
|
||||||
|
- stairs.png
|
||||||
|
- treetop.png
|
||||||
|
- trunk.png
|
||||||
|
- waterfall.png
|
||||||
|
- watergrass.png
|
||||||
|
- water.png
|
||||||
|
- princess.png and princess.xcf
|
||||||
|
|
||||||
|
|
||||||
|
Stephen Challener (AKA Redshrike)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- female_walkcycle.png
|
||||||
|
- female_hurt.png
|
||||||
|
- female_slash.png
|
||||||
|
- female_spellcast.png
|
||||||
|
- male_walkcycle.png
|
||||||
|
- male_hurt.png
|
||||||
|
- male_slash.png
|
||||||
|
- male_spellcast.png
|
||||||
|
- male_pants.png
|
||||||
|
- male_hurt_pants.png
|
||||||
|
- male_fall_down_pants.png
|
||||||
|
- male_slash_pants.png
|
||||||
|
|
||||||
|
|
||||||
|
Charles Sanchez (AKA CharlesGabriel)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- bat.png
|
||||||
|
- bee.png
|
||||||
|
- big_worm.png
|
||||||
|
- eyeball.png
|
||||||
|
- ghost.png
|
||||||
|
- man_eater_flower.png
|
||||||
|
- pumpking.png
|
||||||
|
- slime.png
|
||||||
|
- small_worm.png
|
||||||
|
- snake.png
|
||||||
|
|
||||||
|
|
||||||
|
Manuel Riecke (AKA MrBeast)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
- hairfemale.png and hairfemale.xcf
|
||||||
|
- hairmale.png and hairmale.xcf
|
||||||
|
- soldier.png
|
||||||
|
- soldier_altcolor.png
|
||||||
|
|
||||||
|
|
||||||
|
Daniel Armstrong (AKA HughSpectrum)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Castle work:
|
||||||
|
|
||||||
|
- castlewalls.png
|
||||||
|
- castlefloors.png
|
||||||
|
- castle_outside.png
|
||||||
|
- castlefloors_outside.png
|
||||||
|
- castle_lightsources.png
|
||||||
|
|
||||||
|
|
2
maps/Tuto/tilesets/LPC-indoors.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
https://opengameart.org/content/lpc-interior-castle-tiles
|
||||||
|
credit Lanea Zimmerman
|
55
maps/Tuto/tilesets/LPC-interiors-house-credits.txt
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
= Wooden floor(CC-BY-SA) =
|
||||||
|
* Horizontal wooden floor by Lanea Zimmerman (AKA Sharm)
|
||||||
|
* Horizontal wooden floor with hole by Lanea Zimmerman (AKA Sharm) and Tuomo Untinen
|
||||||
|
* Vertical wooden floor by Tuomo Untinen
|
||||||
|
* Vertical wooden floor with hole by Tuomo Untinen
|
||||||
|
= Wooden wall topping (CC-BY-SA) =
|
||||||
|
* Tuomo Untinen
|
||||||
|
= Pile of barrels =
|
||||||
|
* Based LPC base tiles by Lanea Zimmerman (AKA Sharm)
|
||||||
|
= Decorational stuff (CC-BY-SA) =
|
||||||
|
* Green bottle
|
||||||
|
* Wine glass and bottle
|
||||||
|
* Hanging sacks
|
||||||
|
* Wall mounted rope and ropes
|
||||||
|
* Wall mounted swords
|
||||||
|
* Wall mounted kite shield
|
||||||
|
* Wall hole
|
||||||
|
By Tuomo Untinen
|
||||||
|
* Small sack from LPC farming tileset by Daniel Eddeland (http://opengameart.org/content/lpc- farming-tilesets-magic-animations-and-ui-elements)
|
||||||
|
* Purple bottles and gray lantern from Hyptosis Mage city
|
||||||
|
* Green and blue bottle by Tuomo Untinen
|
||||||
|
= Wall clock (CC-BY-SA) =
|
||||||
|
* Lanea Zimmerman AKA Sharm
|
||||||
|
* Tuomo Untinen (Scaled down and animation)
|
||||||
|
= Stone floor (CC-BY-SA)=
|
||||||
|
* Tuomo Untinen
|
||||||
|
= Cobble stone floor (CC-BY-SA)=
|
||||||
|
* Based on LPC base tileset by Lanea Zimmerman (AKA Sharm)
|
||||||
|
= Cabinets and kitchen stuff including metal stove(CC-BY-SA) =
|
||||||
|
* Based on LPC base tileset by Lanea Zimmerman (AKA Sharm)
|
||||||
|
* Cutboard is made by Hyptosis
|
||||||
|
* Sacks based on LPC farming tileset by Daniel Eddeland (http://opengameart.org/content/lpc- farming-tilesets-magic-animations-and-ui-elements)
|
||||||
|
* Spears by Tuomo Untinen
|
||||||
|
* Vertical chest by Tuomo Untinen based on LPC base tiles Lanea Zimmerman (AKA Sharm)
|
||||||
|
Manuel Riecke (AKA MrBeast)
|
||||||
|
= Skull (CC-BY-SA) =
|
||||||
|
* http://opengameart.org/content/lpc-dungeon-elements
|
||||||
|
* Graphical artist Lanea Zimmerman AKA Sharm
|
||||||
|
* Contributor William Thompson
|
||||||
|
= pile sacks =
|
||||||
|
* LPC farming tileset by Daniel Eddeland (http://opengameart.org/content/lpc- farming-tilesets-magic-animations-and-ui-elements)
|
||||||
|
= Pile of papers(CC-BY-SA) =
|
||||||
|
* Based on caeles papers
|
||||||
|
= Armor shelves(CC-BY-SA) =
|
||||||
|
* Based on LPC base tileset by Lanea Zimmerman (AKA Sharm)
|
||||||
|
* Armors by: Adapted by Matthew Krohn from art created by Johannes Sjölund
|
||||||
|
= Table lamp =
|
||||||
|
* Tuomo Untinen
|
||||||
|
= Distiller =
|
||||||
|
* Table is from LPC base tileset by Lanea Zimmerman (AKA Sharm)
|
||||||
|
* Distiller by Tuomo Untinen
|
||||||
|
= Fireplace =
|
||||||
|
* Tuomo Untinen
|
||||||
|
* Inspired by Lanea Zimmerman (AKA Sharm) Fireplace
|
||||||
|
|
28
maps/Tuto/tilesets/LPC-leaf-credits.txt
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
License
|
||||||
|
-------
|
||||||
|
|
||||||
|
CC-BY-SA 3.0:
|
||||||
|
- http://creativecommons.org/licenses/by-sa/3.0/
|
||||||
|
GNU GPL 3.0:
|
||||||
|
- http://www.gnu.org/licenses/gpl-3.0.html
|
||||||
|
|
||||||
|
If you need to figure out exactly who made what please see the Liberated Pixel Cup entries.
|
||||||
|
|
||||||
|
Liberated Pixel Cup Assets:
|
||||||
|
http://opengameart.org/lpc-art-entries
|
||||||
|
|
||||||
|
LPC participants:
|
||||||
|
----------------
|
||||||
|
|
||||||
|
Johann CHARLOT
|
||||||
|
Homepage http://poufpoufproduction.fr
|
||||||
|
Email johannc@poufpoufproduction.fr
|
||||||
|
- Shoot'em up graphic kit
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Recolored Leaves
|
||||||
|
|
||||||
|
William Thompson
|
||||||
|
Email: william.thompsonj@gmail.com
|
||||||
|
OpenGameArt.org: williamthompsonj
|
1
maps/Tuto/tilesets/LPC-leafs-refs.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
https://opengameart.org/content/lpc-leaf-recolor
|
1
maps/Tuto/tilesets/LPC-submissions-refs.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
https://opengameart.org/content/lpc-submissions-merged
|
1
maps/Tuto/tilesets/LPc-mountains-refs.txt
Normal file
@ -0,0 +1 @@
|
|||||||
|
https://opengameart.org/content/lpc-mountains
|
344
maps/Tuto/tilesets/LPc-submissions-Final Attribution.txt
Normal file
@ -0,0 +1,344 @@
|
|||||||
|
License
|
||||||
|
-------
|
||||||
|
|
||||||
|
CC-BY-SA 3.0:
|
||||||
|
|
||||||
|
http://creativecommons.org/licenses/by-sa/3.0/
|
||||||
|
|
||||||
|
GNU GPL 3.0:
|
||||||
|
|
||||||
|
http://www.gnu.org/licenses/gpl-3.0.html
|
||||||
|
|
||||||
|
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
Terrain and Outside:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
Lanea Zimmerman (AKA Sharm) - CC-BY-3.0 / GPL 3.0 / GPL 2.0 / OGA-BY-3.0
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- barrels
|
||||||
|
- darkishgreen water
|
||||||
|
- buckets
|
||||||
|
- bridges
|
||||||
|
- cement
|
||||||
|
- cement stairs
|
||||||
|
- chests
|
||||||
|
- cup
|
||||||
|
- light dirt
|
||||||
|
- mid dirt
|
||||||
|
- dungeon
|
||||||
|
- grass1 (leftmost)
|
||||||
|
- grass2 (Middle grass)
|
||||||
|
- hole1 (left hole near lava)
|
||||||
|
- hole2 (middle hole)
|
||||||
|
- hole3 (black whole next to transparent water)
|
||||||
|
- lava
|
||||||
|
- lavarock (black dirt)
|
||||||
|
- mountains ridge (right of the water tiles)
|
||||||
|
- white rocks
|
||||||
|
- waterfall
|
||||||
|
- water/grass
|
||||||
|
- water (transparent water beside black hole)
|
||||||
|
|
||||||
|
Daniel Eddeland CC-BY-SA-3.0 / GPL 3.0
|
||||||
|
https://opengameart.org/content/lpc-farming-tilesets-magic-animations-and-ui-elements
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- Plowed Ground
|
||||||
|
- Water reeds
|
||||||
|
- Sand
|
||||||
|
- Sand with water
|
||||||
|
- Tall grass
|
||||||
|
- Wheat
|
||||||
|
- Young wheet (green wheat left of tall grass)
|
||||||
|
|
||||||
|
William Thompsonj
|
||||||
|
https://opengameart.org/content/lpc-sandrock-alt-colors
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- sand (near the wheat)
|
||||||
|
- sand with water
|
||||||
|
- grey dirt left of the lava)
|
||||||
|
|
||||||
|
|
||||||
|
Matthew Krohn (Makrohn)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- Cave / Mountain steps originals from Lanea Zimmerman
|
||||||
|
|
||||||
|
Matthew Nash
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- stone tile (purplish color beside the dirt path bottom right corner)
|
||||||
|
|
||||||
|
Nushio
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- Ice tiles
|
||||||
|
- Snow
|
||||||
|
- snow/ice
|
||||||
|
- Snow water
|
||||||
|
|
||||||
|
|
||||||
|
Casper Nilson
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- grass with flowers
|
||||||
|
- stone pattern below cement
|
||||||
|
- tree stumps
|
||||||
|
- lily pads
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
MISSING:
|
||||||
|
Bricks / Paths above lillypads and left of barrels
|
||||||
|
The recoloing of the rocks on the left
|
||||||
|
The bigger stump
|
||||||
|
Bottom right tiles
|
||||||
|
Outside stone head and columns
|
||||||
|
Green water
|
||||||
|
Ladders
|
||||||
|
Brown path
|
||||||
|
Sewer
|
||||||
|
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
Outside Objects:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
Lanea Zimmerman (AKA Sharm) CC-BY-3.0 / GPL 3.0 / GPL 2.0 / OGA-BY-3.0
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- Tree trunks (for evergreen and oak)
|
||||||
|
- Tree Tops (for evergreen and oak)
|
||||||
|
|
||||||
|
Daniel Eddeland
|
||||||
|
(https://opengameart.org/content/lpc-farming-tilesets-magic-animations-and-ui-elements)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- Farming stuff including food / crops / sack of grains
|
||||||
|
- Logs / Anvils
|
||||||
|
- Fish / boats / pier
|
||||||
|
- Bazaar / Merchant displays
|
||||||
|
- Wooden Fences
|
||||||
|
|
||||||
|
Caeless
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- Shadowless veggies (originally made by Daniel Eddeland)
|
||||||
|
|
||||||
|
William Thompsonj
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- fallen leaves
|
||||||
|
|
||||||
|
Casper Nilsson
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- Metal Fence
|
||||||
|
- Wheelbarrows
|
||||||
|
- tent
|
||||||
|
- Gravestones
|
||||||
|
- harbor (stone platform in water)
|
||||||
|
- long boat
|
||||||
|
|
||||||
|
Barbara Rivera / C Phillips
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- Leafless tree
|
||||||
|
|
||||||
|
Skorpio
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- Trash / Barrel ( Top right corner)
|
||||||
|
|
||||||
|
MISSING:
|
||||||
|
Bricks bottom left
|
||||||
|
- Mushrooms need attributions
|
||||||
|
Bricks/tiles above pier
|
||||||
|
|
||||||
|
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
Exterior:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
Lanea Zimmerman (AKA Sharm) CC-BY-3.0 / GPL 3.0 / GPL 2.0 / OGA-BY-3.0
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- house (light red brick wall on far left and purple roof below it)
|
||||||
|
- house white door frame / brown door and white windows.
|
||||||
|
- signs under gold and drak brown brick house wall
|
||||||
|
|
||||||
|
Daniel Armstrong (AKA HughSpectrum)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- castle walls
|
||||||
|
- castle floors
|
||||||
|
- castle outside
|
||||||
|
- castle floors outside
|
||||||
|
|
||||||
|
Xenodora CC-BY-3.0 / GPL 3.0
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- water well
|
||||||
|
|
||||||
|
Tuomo Untinen CC-BY-3.0
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- stone bridge
|
||||||
|
- silver windows
|
||||||
|
|
||||||
|
Casper Nilsson
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- Asain themed shrine including red lantern
|
||||||
|
- foodog statue
|
||||||
|
- Toro
|
||||||
|
- Cherry blossom tree
|
||||||
|
- Torii
|
||||||
|
- Grey Roof
|
||||||
|
- Flag poles
|
||||||
|
- Fancy white and black entrance
|
||||||
|
- white door
|
||||||
|
- green and white walls / roof / windows
|
||||||
|
- shrub plant in white square pot
|
||||||
|
- flower box
|
||||||
|
Steampun-a-fy: Amaris / Krusimira
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- dark purple brick near purple roof
|
||||||
|
- bronze and wood house (gold and dark brick)
|
||||||
|
- dark wooden stairs
|
||||||
|
- gold and dark chimney
|
||||||
|
- grey door
|
||||||
|
- gears
|
||||||
|
- pipes
|
||||||
|
- dark wooden windows
|
||||||
|
|
||||||
|
Leo Villeveygoux
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- white bricks (limestone wall)
|
||||||
|
|
||||||
|
Skyler Robert Collady
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- Grey home assets
|
||||||
|
|
||||||
|
MISSING attributions:
|
||||||
|
Graves bottom right
|
||||||
|
Water filled boat
|
||||||
|
|
||||||
|
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
Interior
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
|
||||||
|
Lanea Zimmerman (AKA Sharm) CC-BY-3.0 / GPL 3.0 / GPL 2.0 / OGA-BY-3.0
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- bookshelves (to the left of light brown chairs)
|
||||||
|
- cabinents above bookshelves
|
||||||
|
- counters (to the right of the kitchen table (between the white bathroom tiles) and bottom left by the rug.
|
||||||
|
- blue wallpaper
|
||||||
|
- kitchen furnace, pots and sink.
|
||||||
|
- country inside (blue bed and light brown chairs)
|
||||||
|
- red royal bed with white pillows.
|
||||||
|
- Mahogany kitchen table (near the dungeon bed with a black blanket)
|
||||||
|
- Yellow curtains
|
||||||
|
- Flower pot with tall pink flower
|
||||||
|
- Empty flower pots
|
||||||
|
- Chairs with gold seats (between the fireplaces)
|
||||||
|
- Fireplaces
|
||||||
|
- White and red mahogany stairs
|
||||||
|
- Double Rounded doors
|
||||||
|
- Flower vases
|
||||||
|
- Purple/Blue Tiles near white brick wall
|
||||||
|
- White brick wall
|
||||||
|
- White Columns
|
||||||
|
- Black candle-holder stand with candles
|
||||||
|
- Royal rug beside cabinents
|
||||||
|
- White stairs with runway / platform
|
||||||
|
- Grandfather clock
|
||||||
|
- Blue wallpaper with woodem trim
|
||||||
|
- Wood tiles
|
||||||
|
- Long painting
|
||||||
|
- Royal chairs ( gold seats)
|
||||||
|
- Rounded white windows
|
||||||
|
- Portrait painting
|
||||||
|
- small end / round tables
|
||||||
|
- Royal bed with red pillows
|
||||||
|
- white china
|
||||||
|
|
||||||
|
By Sharm but Commissioned by William Thompsonj
|
||||||
|
- campfire
|
||||||
|
- skeletons
|
||||||
|
- dungeon beds
|
||||||
|
- wood chairs and tables between the calderon and the fancy door rounded door
|
||||||
|
- calderon
|
||||||
|
- cobwebs
|
||||||
|
- dungeon prison wall and door/gate (beside fancy red and gold rugs)
|
||||||
|
- dirt by the dungeon beds
|
||||||
|
- rat
|
||||||
|
|
||||||
|
|
||||||
|
Daniel Armstrong (Aka HughSpectrum)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- castle light Sources (torches)
|
||||||
|
- red carpets
|
||||||
|
- grey brick top of walls
|
||||||
|
|
||||||
|
Matthew Nash
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- Public Toilets
|
||||||
|
- Bathroom tiles (white and black)
|
||||||
|
|
||||||
|
Tuomo Untinen
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- Pots with cover (based from Sharm's pots)
|
||||||
|
- Yellow stone floor
|
||||||
|
- Short paintings
|
||||||
|
- royal chair modification
|
||||||
|
- cupboards based on Sharm's (with china)
|
||||||
|
- small footchair
|
||||||
|
- piano
|
||||||
|
|
||||||
|
|
||||||
|
MISSING attributions:
|
||||||
|
Some bottomleft tiles
|
||||||
|
Banners
|
||||||
|
Sideways table
|
||||||
|
Stacked barrels
|
||||||
|
Stacked chess
|
||||||
|
Things to left of the pots
|
||||||
|
Some of the furniture below the beds
|
||||||
|
Some of the single beds
|
||||||
|
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
*Interior 2
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Lanea Zimmerman (AKA Sharm)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- brown stairs with blue
|
||||||
|
- Fountain
|
||||||
|
- Pool
|
||||||
|
- FLoor tiles
|
||||||
|
- Everything between top row (between toilet stalls and bookcases) down to the floor tiles
|
||||||
|
|
||||||
|
|
||||||
|
Xenodora
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- Steel floor
|
||||||
|
|
||||||
|
|
||||||
|
Tuomo Untinen
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- Armor and sheilds
|
||||||
|
- Cheese and bread
|
||||||
|
- Ship
|
||||||
|
|
||||||
|
|
||||||
|
Janna - CC0
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- Beds
|
||||||
|
- Dressers / book shelves
|
||||||
|
- Wardrobe
|
||||||
|
|
||||||
|
|
||||||
|
Casper Nilsson
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
- Red and Blue stairs
|
||||||
|
|
||||||
|
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
Extensions Folder:
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Lanea Zimmerman (AKA Sharm)
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
https://opengameart.org/content/lpc-adobe-building-set
|
||||||
|
https://opengameart.org/content/lpc-arabic-elements
|
||||||
|
- Adobe / Arabic - Commissioned by William Thompsonj
|
12
maps/Tuto/tilesets/Specials-attribution.txt
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
License
|
||||||
|
-------
|
||||||
|
|
||||||
|
CC-BY-SA 3.0:
|
||||||
|
- http://creativecommons.org/licenses/by-sa/3.0/
|
||||||
|
|
||||||
|
Author :
|
||||||
|
|
||||||
|
Jacques-Olivier Farcy
|
||||||
|
https://interstices.ouvaton.org
|
||||||
|
https://twitter.com/JO_Interstices
|
||||||
|
|
106
maps/Tuto/tilesets/outdoor/CREDITS-plants.txt
Normal file
@ -0,0 +1,106 @@
|
|||||||
|
## Flowers / Plants / Fungi / Wood
|
||||||
|
|
||||||
|
"[LPC] Flowers / Plants / Fungi / Wood," by bluecarrot16, Guido Bos, Ivan Voirol (Silver IV), SpiderDave, William.Thompsonj, Yar, Stephen Challener and the Open Surge team (http://opensnc.sourceforge.net), Gaurav Munjal, Johann Charlot, Casper Nilsson, Jetrel, Zabin, Hyptosis, Surt, Lanea Zimmerman, George Bailey, ansimuz, Buch, and the Open Pixel Project contributors (OpenPixelProject.com).
|
||||||
|
CC-BY-SA 3.0.
|
||||||
|
|
||||||
|
Based on:
|
||||||
|
|
||||||
|
[LPC] Guido Bos entries cut up
|
||||||
|
Guido Bos
|
||||||
|
CC-BY-SA 3.0 / GPL 3.0
|
||||||
|
https://opengameart.org/content/lpc-guido-bos-entries-cut-up
|
||||||
|
|
||||||
|
Basic map 32x32 by Silver IV
|
||||||
|
Ivan Voirol (Silver IV)
|
||||||
|
CC-BY 3.0 / GPL 3.0 / GPL 2.0
|
||||||
|
https://opengameart.org/content/basic-map-32x32-by-silver-iv
|
||||||
|
|
||||||
|
Flowers
|
||||||
|
SpiderDave
|
||||||
|
CC0
|
||||||
|
https://opengameart.org/content/flowers
|
||||||
|
|
||||||
|
[LPC] Leaf Recolor
|
||||||
|
William.Thompsonj
|
||||||
|
CC-BY-SA 3.0 / GPL 3.0
|
||||||
|
https://opengameart.org/content/lpc-leaf-recolor
|
||||||
|
|
||||||
|
Isometric 64x64 Outside Tileset
|
||||||
|
Yar
|
||||||
|
CC-BY 3.0
|
||||||
|
https://opengameart.org/content/isometric-64x64-outside-tileset
|
||||||
|
|
||||||
|
32x32 (and 16x16) RPG Tiles--Forest and some Interior Tiles
|
||||||
|
Stephen Challener and the Open Surge team (http://opensnc.sourceforge.net)commissioned by Gaurav Munjal
|
||||||
|
CC-BY 3.0
|
||||||
|
https://opengameart.org/content/32x32-and-16x16-rpg-tiles-forest-and-some-interior-tiles
|
||||||
|
|
||||||
|
Lots of Hyptosis' tiles organized!
|
||||||
|
Hyptosis
|
||||||
|
CC-BY 3.0
|
||||||
|
https://opengameart.org/content/lots-of-hyptosis-tiles-organized
|
||||||
|
|
||||||
|
Generic Platformer Tiles
|
||||||
|
surt
|
||||||
|
CC0
|
||||||
|
http://opengameart.org/content/generic-platformer-tiles
|
||||||
|
|
||||||
|
old frogatto tile art
|
||||||
|
Guido Bos
|
||||||
|
CC0
|
||||||
|
https://opengameart.org/content/old-frogatto-tile-art
|
||||||
|
|
||||||
|
LPC: Interior Castle Tiles
|
||||||
|
Lanea Zimmerman
|
||||||
|
CC-BY-3.0 / GPL 3.0
|
||||||
|
http://opengameart.org/content/lpc-interior-castle-tiles
|
||||||
|
|
||||||
|
RPG item set
|
||||||
|
Jetrel
|
||||||
|
CC0
|
||||||
|
https://opengameart.org/content/rpg-item-set
|
||||||
|
|
||||||
|
Shoot'em up graphic kit
|
||||||
|
Johann Charlot
|
||||||
|
CC-BY-SA 3.0 / GPL 3.0
|
||||||
|
https://opengameart.org/content/shootem-up-graphic-kit
|
||||||
|
|
||||||
|
LPC C.Nilsson
|
||||||
|
Casper Nilsson
|
||||||
|
CC-BY-SA 3.0 / GPL 3.0
|
||||||
|
https://opengameart.org/content/lpc-cnilsson
|
||||||
|
|
||||||
|
Lots of trees and plants from OGA (DB32) tilesets pack 1
|
||||||
|
Jetrel, Zabin, Hyptosis, Surt
|
||||||
|
CC0
|
||||||
|
https://opengameart.org/content/lots-of-trees-and-plants-from-oga-db32-tilesets-pack-1
|
||||||
|
|
||||||
|
Trees & Bushes
|
||||||
|
ansimuz
|
||||||
|
CC0
|
||||||
|
https://opengameart.org/content/trees-bushes
|
||||||
|
|
||||||
|
Outdoor tiles, again
|
||||||
|
Buch <https://opengameart.org/users/buch>
|
||||||
|
CC-BY 2.0
|
||||||
|
https://opengameart.org/content/outdoor-tiles-again
|
||||||
|
|
||||||
|
16x16 Game Assets
|
||||||
|
George Bailey
|
||||||
|
CC-BY 4.0
|
||||||
|
https://opengameart.org/content/16x16-game-assets
|
||||||
|
|
||||||
|
Tuxemon tileset
|
||||||
|
Buch
|
||||||
|
CC-BY-SA 3.0
|
||||||
|
https://opengameart.org/content/tuxemon-tileset
|
||||||
|
|
||||||
|
Orthographic outdoor tiles
|
||||||
|
Buch
|
||||||
|
CC0
|
||||||
|
https://opengameart.org/content/orthographic-outdoor-tiles
|
||||||
|
|
||||||
|
OPP2017 - Jungle and temple set
|
||||||
|
OpenPixelProject.com
|
||||||
|
CC0
|
||||||
|
https://opengameart.org/content/opp2017-jungle-and-temple-set
|
After Width: | Height: | Size: 295 KiB |
BIN
maps/Tuto/tilesets/outdoor/LPC-submissions-outside.png
Normal file
After Width: | Height: | Size: 192 KiB |
BIN
maps/Tuto/tilesets/outdoor/LPC-terrains-subimissions-outside.png
Normal file
After Width: | Height: | Size: 327 KiB |
101
maps/Tuto/tilesets/outdoor/decorations-medieval-credits.txt
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
## Medieval
|
||||||
|
|
||||||
|
[LPC] Hanging signs
|
||||||
|
Reemax
|
||||||
|
CC-BY-SA 3.0 / GPL 3.0
|
||||||
|
https://opengameart.org/content/lpc-hanging-signs
|
||||||
|
|
||||||
|
Liberated Pixel Cup (LPC) Base Assets
|
||||||
|
Lanea Zimmerman (Sharm)
|
||||||
|
CC-BY-SA 3.0 / GPL 3.0
|
||||||
|
https://opengameart.org/content/liberated-pixel-cup-lpc-base-assets-sprites-map-tiles
|
||||||
|
|
||||||
|
[LPC] City outside
|
||||||
|
Reemax (Tuomo Untinen), Xenodora, Sharm, Johann C, Johannes Sjölund
|
||||||
|
CC-BY-SA 3.0 / GPL 3.0 / GPL 2.0
|
||||||
|
https://opengameart.org/content/lpc-city-outside
|
||||||
|
|
||||||
|
[LPC] Cavern and ruin tiles
|
||||||
|
CC-BY-SA 3.0 / GPL 3.0 / GPL 2.0
|
||||||
|
Reemax, Sharm, Hyptosis, Johann C, HughSpectrum, Redshrike, William.Thompsonj, wulax,
|
||||||
|
https://opengameart.org/node/33913
|
||||||
|
|
||||||
|
Statues & Fountains Collection
|
||||||
|
Casper Nilsson, Daniel Cook, Rayane Félix (RayaneFLX), Wolthera van Hövell tot Westerflier (TheraHedwig), Hyptosis, mold, Zachariah Husiar (Zabin), & Clint Bellanger
|
||||||
|
CC-BY-SA 3.0
|
||||||
|
https://opengameart.org/content/statues-fountains-collection
|
||||||
|
|
||||||
|
LPC C.Nilsson
|
||||||
|
Casper Nilsson
|
||||||
|
CC-BY-SA 3.0 / GPL 3.0
|
||||||
|
https://opengameart.org/content/lpc-cnilsson
|
||||||
|
|
||||||
|
LPC Style Well
|
||||||
|
CC-BY 3.0 / GPL 3.0
|
||||||
|
Xenodora, Sharm
|
||||||
|
https://opengameart.org/content/lpc-style-well
|
||||||
|
|
||||||
|
RPG item set
|
||||||
|
Jetrel
|
||||||
|
CC0
|
||||||
|
https://opengameart.org/content/rpg-item-set
|
||||||
|
|
||||||
|
[LPC] Guido Bos entries cut up
|
||||||
|
Guido Bos
|
||||||
|
CC-BY-SA 3.0 / GPL 3.0
|
||||||
|
https://opengameart.org/content/lpc-guido-bos-entries-cut-up
|
||||||
|
|
||||||
|
LPC Sign Post
|
||||||
|
Nemisys
|
||||||
|
CC-BY 3.0 / CC-BY-SA 3.0 / GPL 3.0 / OGA-BY 3.0
|
||||||
|
https://opengameart.org/content/lpc-sign-post
|
||||||
|
|
||||||
|
[LPC] Signposts, graves, line cloths and scare crow
|
||||||
|
Reemax
|
||||||
|
CC-BY-SA 3.0 / GPL 3.0
|
||||||
|
https://opengameart.org/content/lpc-signposts-graves-line-cloths-and-scare-crow
|
||||||
|
|
||||||
|
[LPC] Hanging signs
|
||||||
|
Reemax
|
||||||
|
CC-BY-SA 3.0 / GPL 3.0
|
||||||
|
https://opengameart.org/content/lpc-hanging-signs
|
||||||
|
|
||||||
|
Hyptosis
|
||||||
|
Mage City Arcanos
|
||||||
|
CC0
|
||||||
|
https://opengameart.org/content/mage-city-arcanos
|
||||||
|
|
||||||
|
[LPC] Street Lamp
|
||||||
|
Curt
|
||||||
|
CC-BY 3.0
|
||||||
|
https://opengameart.org/content/lpc-street-lamp
|
||||||
|
|
||||||
|
[LPC] Misc
|
||||||
|
Lanea Zimmerman (Sharm), William.Thompsonj
|
||||||
|
CC-BY 3.0 / GPL 3.0 / GPL 2.0 / OGA-BY 3.0
|
||||||
|
https://opengameart.org/content/lpc-misc
|
||||||
|
|
||||||
|
RPG Tiles: Cobble stone paths & town objects
|
||||||
|
https://opengameart.org/content/rpg-tiles-cobble-stone-paths-town-objects
|
||||||
|
Zabin, Daneeklu, Jetrel, Hyptosis, Redshrike, Bertram.
|
||||||
|
CC-BY-SA 3.0
|
||||||
|
|
||||||
|
[LPC] Farming tilesets, magic animations and UI elements
|
||||||
|
https://opengameart.org/content/lpc-farming-tilesets-magic-animations-and-ui-elements
|
||||||
|
Daniel Eddeland (daneeklu)
|
||||||
|
CC-BY-SA 3.0 / GPL 3.0
|
||||||
|
|
||||||
|
RPG item set
|
||||||
|
Jetrel
|
||||||
|
CC0
|
||||||
|
https://opengameart.org/content/rpg-item-set
|
||||||
|
|
||||||
|
RPG Indoor Tileset: Expansion 1
|
||||||
|
Redshrike
|
||||||
|
CC-BY 3.0 / GPL 3.0 / GPL 2.0 / OGA-BY 3.0
|
||||||
|
https://opengameart.org/content/rpg-indoor-tileset-expansion-1
|
||||||
|
|
||||||
|
[LPC] Dungeon Elements
|
||||||
|
Lanea Zimmerman (Sharm), William.Thompsonj
|
||||||
|
CC-BY 3.0 / GPL 3.0 / GPL 2.0 / OGA-BY 3.0
|
||||||
|
https://opengameart.org/content/lpc-dungeon-elements
|
BIN
maps/Tuto/tilesets/outdoor/decorations-medieval.png
Normal file
After Width: | Height: | Size: 165 KiB |
BIN
maps/Tuto/tilesets/outdoor/plants.png
Normal file
After Width: | Height: | Size: 107 KiB |
BIN
maps/Tuto/tilesets/specials/ALL.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
706
maps/Tuto/tutoV3.json
Normal file
99
maps/tests/goToPage.json
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
{ "compressionlevel":-1,
|
||||||
|
"height":20,
|
||||||
|
"infinite":false,
|
||||||
|
"layers":[
|
||||||
|
{
|
||||||
|
"data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||||
|
"height":20,
|
||||||
|
"id":2,
|
||||||
|
"name":"start",
|
||||||
|
"opacity":1,
|
||||||
|
"type":"tilelayer",
|
||||||
|
"visible":true,
|
||||||
|
"width":20,
|
||||||
|
"x":0,
|
||||||
|
"y":0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"data":[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||||
|
"height":20,
|
||||||
|
"id":4,
|
||||||
|
"name":"floor",
|
||||||
|
"opacity":1,
|
||||||
|
"type":"tilelayer",
|
||||||
|
"visible":true,
|
||||||
|
"width":20,
|
||||||
|
"x":0,
|
||||||
|
"y":0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 23, 23, 23, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||||
|
"height":20,
|
||||||
|
"id":3,
|
||||||
|
"name":"popupZone",
|
||||||
|
"opacity":1,
|
||||||
|
"properties":[
|
||||||
|
{
|
||||||
|
"name":"zone",
|
||||||
|
"type":"string",
|
||||||
|
"value":"popUpGoToPageZone"
|
||||||
|
}],
|
||||||
|
"type":"tilelayer",
|
||||||
|
"visible":true,
|
||||||
|
"width":20,
|
||||||
|
"x":0,
|
||||||
|
"y":0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"draworder":"topdown",
|
||||||
|
"id":5,
|
||||||
|
"name":"floorLayer",
|
||||||
|
"objects":[
|
||||||
|
{
|
||||||
|
"height":59,
|
||||||
|
"id":1,
|
||||||
|
"name":"popUp",
|
||||||
|
"rotation":0,
|
||||||
|
"type":"",
|
||||||
|
"visible":true,
|
||||||
|
"width":152,
|
||||||
|
"x":247,
|
||||||
|
"y":11
|
||||||
|
}],
|
||||||
|
"opacity":1,
|
||||||
|
"type":"objectgroup",
|
||||||
|
"visible":true,
|
||||||
|
"x":0,
|
||||||
|
"y":0
|
||||||
|
}],
|
||||||
|
"nextlayerid":6,
|
||||||
|
"nextobjectid":2,
|
||||||
|
"orientation":"orthogonal",
|
||||||
|
"properties":[
|
||||||
|
{
|
||||||
|
"name":"script",
|
||||||
|
"type":"string",
|
||||||
|
"value":"goToPageScript.js"
|
||||||
|
}],
|
||||||
|
"renderorder":"right-down",
|
||||||
|
"tiledversion":"1.5.0",
|
||||||
|
"tileheight":32,
|
||||||
|
"tilesets":[
|
||||||
|
{
|
||||||
|
"columns":11,
|
||||||
|
"firstgid":1,
|
||||||
|
"image":"tileset1.png",
|
||||||
|
"imageheight":352,
|
||||||
|
"imagewidth":352,
|
||||||
|
"margin":0,
|
||||||
|
"name":"tileset1",
|
||||||
|
"spacing":0,
|
||||||
|
"tilecount":121,
|
||||||
|
"tileheight":32,
|
||||||
|
"tilewidth":32
|
||||||
|
}],
|
||||||
|
"tilewidth":32,
|
||||||
|
"type":"map",
|
||||||
|
"version":1.5,
|
||||||
|
"width":20
|
||||||
|
}
|
49
maps/tests/goToPageScript.js
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
var zoneName = "popUpGoToPageZone";
|
||||||
|
var urlPricing = "https://workadventu.re/pricing";
|
||||||
|
var urlGettingStarted = "https://workadventu.re/getting-started";
|
||||||
|
var isCoWebSiteOpened = false;
|
||||||
|
|
||||||
|
WA.onChatMessage((message => {
|
||||||
|
WA.sendChatMessage('Poly Parrot says: "'+message+'"', 'Poly Parrot');
|
||||||
|
}));
|
||||||
|
|
||||||
|
WA.onEnterZone(zoneName, () => {
|
||||||
|
WA.openPopup("popUp","Open Links",[
|
||||||
|
{
|
||||||
|
label: "Open Tab",
|
||||||
|
className: "popUpElement",
|
||||||
|
callback: (popup => {
|
||||||
|
WA.openTab(urlPricing);
|
||||||
|
popup.close();
|
||||||
|
})
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "Go To Page", className : "popUpElement",
|
||||||
|
callback:(popup => {
|
||||||
|
WA.goToPage(urlPricing);
|
||||||
|
popup.close();
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
,
|
||||||
|
{
|
||||||
|
label: "openCoWebSite", className : "popUpElement",
|
||||||
|
callback:(popup => {
|
||||||
|
WA.openCoWebSite(urlPricing);
|
||||||
|
isCoWebSiteOpened = true;
|
||||||
|
popup.close();
|
||||||
|
})
|
||||||
|
|
||||||
|
}]);
|
||||||
|
})
|
||||||
|
|
||||||
|
WA.onLeaveZone(zoneName, () => {
|
||||||
|
if (isCoWebSiteOpened) {
|
||||||
|
WA.closeCoWebSite();
|
||||||
|
isCoWebSiteOpened = false;
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
WA.onLeaveZone('popupZone', () => {
|
||||||
|
|
||||||
|
})
|
@ -1,7 +1,37 @@
|
|||||||
console.log('SCRIPT LAUNCHED');
|
console.log('SCRIPT LAUNCHED');
|
||||||
WA.sendChatMessage('Hi, my name is Poly and I repeat what you say!', 'Poly Parrot');
|
//WA.sendChatMessage('Hi, my name is Poly and I repeat what you say!', 'Poly Parrot');
|
||||||
|
var isFirstTimeTuto = false;
|
||||||
|
var textFirstPopup = 'Hey ! This is how to open start a discussion with someone ! You can be 4 max in a booble';
|
||||||
|
var textSecondPopup = 'You can also use the chat to communicate ! ';
|
||||||
|
var targetObjectTutoBubble ='tutoBobble';
|
||||||
|
var targetObjectTutoChat ='tutoChat';
|
||||||
|
var popUpExplanation = undefined;
|
||||||
|
function launchTuto (){
|
||||||
|
WA.openPopup(targetObjectTutoBubble, textFirstPopup, [
|
||||||
|
{
|
||||||
|
label: "Next",
|
||||||
|
className: "popUpElement",
|
||||||
|
callback: (popup) => {
|
||||||
|
popup.close();
|
||||||
|
|
||||||
|
WA.openPopup(targetObjectTutoChat, textSecondPopup, [
|
||||||
|
{
|
||||||
|
label: "Open Chat",
|
||||||
|
className: "popUpElement",
|
||||||
|
callback: (popup1) => {
|
||||||
|
WA.sendChatMessage("Hey you can talk here too ! ", 'WA Guide');
|
||||||
|
popup1.close();
|
||||||
|
WA.restorePlayerControl();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
WA.disablePlayerControl();
|
||||||
|
|
||||||
|
}
|
||||||
WA.onChatMessage((message => {
|
WA.onChatMessage((message => {
|
||||||
console.log('CHAT MESSAGE RECEIVED BY SCRIPT');
|
console.log('CHAT MESSAGE RECEIVED BY SCRIPT');
|
||||||
WA.sendChatMessage('Poly Parrot says: "'+message+'"', 'Poly Parrot');
|
WA.sendChatMessage('Poly Parrot says: "'+message+'"', 'Poly Parrot');
|
||||||
@ -11,8 +41,7 @@ WA.onEnterZone('myTrigger', () => {
|
|||||||
WA.sendChatMessage("Don't step on my carpet!", 'Poly Parrot');
|
WA.sendChatMessage("Don't step on my carpet!", 'Poly Parrot');
|
||||||
})
|
})
|
||||||
|
|
||||||
WA.onLeaveZone('myTrigger', () => {
|
WA.onLeaveZone('popupZone', () => {
|
||||||
WA.sendChatMessage("Thanks!", 'Poly Parrot');
|
|
||||||
})
|
})
|
||||||
|
|
||||||
WA.onEnterZone('notExist', () => {
|
WA.onEnterZone('notExist', () => {
|
||||||
@ -20,24 +49,31 @@ WA.onEnterZone('notExist', () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
WA.onEnterZone('popupZone', () => {
|
WA.onEnterZone('popupZone', () => {
|
||||||
WA.openPopup('foobar', 'This is a test message. Hi!', [
|
WA.displayBubble();
|
||||||
|
if (!isFirstTimeTuto) {
|
||||||
|
isFirstTimeTuto = true;
|
||||||
|
launchTuto();
|
||||||
|
}
|
||||||
|
else popUpExplanation = WA.openPopup(targetObjectTutoChat,'Do you want to review the explanation ? ', [
|
||||||
{
|
{
|
||||||
label: "Close",
|
label: "No",
|
||||||
className: "normal",
|
className: "popUpElementReviewexplanation",
|
||||||
callback: (popup) => {
|
callback: (popup) => {
|
||||||
popup.close();
|
popup.close();
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
label: "Next",
|
label: "Yes",
|
||||||
className: "success",
|
className: "popUpElementReviewexplanation",
|
||||||
callback: (popup) => {
|
callback: (popup) => {
|
||||||
popup.close();
|
popup.close();
|
||||||
|
launchTuto();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
])
|
])
|
||||||
})
|
});
|
||||||
|
|
||||||
/*WA.onLeaveZone('popupZone', () => {
|
WA.onLeaveZone('popupZone', () => {
|
||||||
WA.sendChatMessage("Thanks!", 'Poly Parrot');
|
if (popUpExplanation !== undefined) popUpExplanation.close();
|
||||||
})*/
|
WA.removeBubble();
|
||||||
|
})
|
||||||
|
@ -75,15 +75,26 @@
|
|||||||
"name":"floorLayer",
|
"name":"floorLayer",
|
||||||
"objects":[
|
"objects":[
|
||||||
{
|
{
|
||||||
"height":120.377012261239,
|
"height":147.135497146101,
|
||||||
"id":1,
|
"id":1,
|
||||||
"name":"myPopup",
|
"name":"myPopup2",
|
||||||
"rotation":0,
|
"rotation":0,
|
||||||
"type":"",
|
"type":"",
|
||||||
"visible":true,
|
"visible":true,
|
||||||
"width":162.815914588373,
|
"width":104.442827410047,
|
||||||
"x":77.4042872633247,
|
"x":142.817125079855,
|
||||||
"y":61.1226958044874
|
"y":147.448134926559
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"height":132.434722966794,
|
||||||
|
"id":2,
|
||||||
|
"name":"myPopup1",
|
||||||
|
"rotation":0,
|
||||||
|
"type":"",
|
||||||
|
"visible":true,
|
||||||
|
"width":125.735549178518,
|
||||||
|
"x":13.649632619596,
|
||||||
|
"y":50.8502491249093
|
||||||
}],
|
}],
|
||||||
"opacity":1,
|
"opacity":1,
|
||||||
"type":"objectgroup",
|
"type":"objectgroup",
|
||||||
@ -92,7 +103,7 @@
|
|||||||
"y":0
|
"y":0
|
||||||
}],
|
}],
|
||||||
"nextlayerid":8,
|
"nextlayerid":8,
|
||||||
"nextobjectid":2,
|
"nextobjectid":3,
|
||||||
"orientation":"orthogonal",
|
"orientation":"orthogonal",
|
||||||
"properties":[
|
"properties":[
|
||||||
{
|
{
|
||||||
@ -101,7 +112,7 @@
|
|||||||
"value":"script.js"
|
"value":"script.js"
|
||||||
}],
|
}],
|
||||||
"renderorder":"right-down",
|
"renderorder":"right-down",
|
||||||
"tiledversion":"1.3.3",
|
"tiledversion":"1.4.3",
|
||||||
"tileheight":32,
|
"tileheight":32,
|
||||||
"tilesets":[
|
"tilesets":[
|
||||||
{
|
{
|
||||||
@ -119,6 +130,6 @@
|
|||||||
}],
|
}],
|
||||||
"tilewidth":32,
|
"tilewidth":32,
|
||||||
"type":"map",
|
"type":"map",
|
||||||
"version":1.2,
|
"version":1.4,
|
||||||
"width":10
|
"width":10
|
||||||
}
|
}
|