mirror of
https://github.com/AlexKrunch/AnonIB-3D.git
synced 2024-11-26 04:57:20 -05:00
1 line
314 KiB
Plaintext
1 line
314 KiB
Plaintext
{"version":3,"sources":["webpack:///./src/$_lazy_route_resource lazy namespace object","webpack:///./src/app/app.component.css","webpack:///./src/app/app.component.html","webpack:///./src/app/app.component.ts","webpack:///./src/app/app.module.ts","webpack:///./src/app/components/ad-post-ui/ad-post-ui.component.css","webpack:///./src/app/components/ad-post-ui/ad-post-ui.component.html","webpack:///./src/app/components/ad-post-ui/ad-post-ui.component.ts","webpack:///./src/app/components/admin-map/admin-map.component.css","webpack:///./src/app/components/admin-map/admin-map.component.html","webpack:///./src/app/components/admin-map/admin-map.component.ts","webpack:///./src/app/components/admin-post/admin-post.component.css","webpack:///./src/app/components/admin-post/admin-post.component.html","webpack:///./src/app/components/admin-post/admin-post.component.ts","webpack:///./src/app/components/chat-view/chat-view.component.css","webpack:///./src/app/components/chat-view/chat-view.component.html","webpack:///./src/app/components/chat-view/chat-view.component.ts","webpack:///./src/app/components/cmd-ui/cmd-ui.component.css","webpack:///./src/app/components/cmd-ui/cmd-ui.component.html","webpack:///./src/app/components/cmd-ui/cmd-ui.component.ts","webpack:///./src/app/components/gl-view/gl-view.component.css","webpack:///./src/app/components/gl-view/gl-view.component.html","webpack:///./src/app/components/gl-view/gl-view.component.ts","webpack:///./src/app/components/home/home.component.css","webpack:///./src/app/components/home/home.component.html","webpack:///./src/app/components/home/home.component.ts","webpack:///./src/app/components/info-view/info-view.component.css","webpack:///./src/app/components/info-view/info-view.component.html","webpack:///./src/app/components/info-view/info-view.component.ts","webpack:///./src/app/components/login/login.component.css","webpack:///./src/app/components/login/login.component.html","webpack:///./src/app/components/login/login.component.ts","webpack:///./src/app/components/media-display/media-display.component.css","webpack:///./src/app/components/media-display/media-display.component.html","webpack:///./src/app/components/media-display/media-display.component.ts","webpack:///./src/app/components/painting-ui/painting-ui.component.css","webpack:///./src/app/components/painting-ui/painting-ui.component.html","webpack:///./src/app/components/painting-ui/painting-ui.component.ts","webpack:///./src/app/components/phone-poster/phone-poster.component.css","webpack:///./src/app/components/phone-poster/phone-poster.component.html","webpack:///./src/app/components/phone-poster/phone-poster.component.ts","webpack:///./src/app/components/pin-post-ui/pin-post-ui.component.css","webpack:///./src/app/components/pin-post-ui/pin-post-ui.component.html","webpack:///./src/app/components/pin-post-ui/pin-post-ui.component.ts","webpack:///./src/app/components/player-ui/player-ui.component.css","webpack:///./src/app/components/player-ui/player-ui.component.html","webpack:///./src/app/components/player-ui/player-ui.component.ts","webpack:///./src/app/components/post-viewer-ui/post-viewer-ui.component.css","webpack:///./src/app/components/post-viewer-ui/post-viewer-ui.component.html","webpack:///./src/app/components/post-viewer-ui/post-viewer-ui.component.ts","webpack:///./src/app/components/posting-ui/posting-ui.component.css","webpack:///./src/app/components/posting-ui/posting-ui.component.html","webpack:///./src/app/components/posting-ui/posting-ui.component.ts","webpack:///./src/app/components/tile-edit/tile-edit.component.css","webpack:///./src/app/components/tile-edit/tile-edit.component.html","webpack:///./src/app/components/tile-edit/tile-edit.component.ts","webpack:///./src/app/interfaces/player-interface/player-interface.component.css","webpack:///./src/app/interfaces/player-interface/player-interface.component.html","webpack:///./src/app/interfaces/player-interface/player-interface.component.ts","webpack:///./src/app/models/action.model.ts","webpack:///./src/app/models/config.model.ts","webpack:///./src/app/models/game-data.model.ts","webpack:///./src/app/models/interaction-model.ts","webpack:///./src/app/models/player.model.ts","webpack:///./src/app/models/post.model.ts","webpack:///./src/app/motor/canvasPlane.ts","webpack:///./src/app/motor/door.ts","webpack:///./src/app/motor/game.ts","webpack:///./src/app/motor/gameUtils.ts","webpack:///./src/app/motor/gate.ts","webpack:///./src/app/motor/item.ts","webpack:///./src/app/motor/mapMaker.ts","webpack:///./src/app/motor/playerMesh.ts","webpack:///./src/app/motor/playerMotor.ts","webpack:///./src/app/motor/tile.ts","webpack:///./src/app/services/chan-web.service.ts","webpack:///./src/app/services/game-uiservice.service.ts","webpack:///./src/app/services/offline.service.ts","webpack:///./src/app/utils/constants.ts","webpack:///./src/app/utils/helpers.ts","webpack:///./src/app/utils/urlParser.ts","webpack:///./src/environments/environment.ts","webpack:///./src/main.ts"],"names":[],"mappings":"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","file":"main.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./src/$$_lazy_route_resource lazy recursive\";","module.exports = \"\"","module.exports = \"<router-outlet></router-outlet>\\n\\n\\n\"","import { Component } from '@angular/core';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.css']\n})\nexport class AppComponent {\n title = 'prota-angular';\n}\n","import { BrowserModule } from '@angular/platform-browser';\nimport { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\nimport { FormsModule } from '@angular/forms';\nimport { HttpClientModule} from '@angular/common/http';\n\nimport { AppComponent } from './app.component';\nimport { HomeComponent } from './components/home/home.component';\nimport { GlViewComponent } from './components/gl-view/gl-view.component';\nimport { PostingUIComponent } from './components/posting-ui/posting-ui.component';\nimport { PostViewerUiComponent } from './components/post-viewer-ui/post-viewer-ui.component';\nimport { MediaDisplayComponent } from './components/media-display/media-display.component';\nimport { PinPostUiComponent } from './components/pin-post-ui/pin-post-ui.component';\nimport { PaintingUiComponent } from './components/painting-ui/painting-ui.component';\nimport { CmdUiComponent } from './components/cmd-ui/cmd-ui.component';\nimport { LoginComponent } from './components/login/login.component';\nimport { PlayerInterfaceComponent } from './interfaces/player-interface/player-interface.component';\nimport { AdminPostComponent } from './components/admin-post/admin-post.component';\nimport { AdminMapComponent } from './components/admin-map/admin-map.component';\nimport { TileEditComponent } from './components/tile-edit/tile-edit.component';\nimport { NgxTwitterTimelineModule } from 'ngx-twitter-timeline';\nimport { PhonePosterComponent } from './components/phone-poster/phone-poster.component';\nimport { QRCodeModule } from 'angularx-qrcode';\nimport { ChatViewComponent } from './components/chat-view/chat-view.component';\nimport { InfoViewComponent } from './components/info-view/info-view.component';\nimport {NgxPaginationModule} from 'ngx-pagination';\nimport { DeviceDetectorModule } from 'ngx-device-detector';\nimport { PlayerUiComponent } from './components/player-ui/player-ui.component';\nimport { AdPostUiComponent } from './components/ad-post-ui/ad-post-ui.component';\n\nconst appRoutes: Routes = [\n { path: '',\n pathMatch: 'full',\n component: HomeComponent \n },\n { path: 'admin-post', component: AdminPostComponent },\n { path: 'admin-map', component: AdminMapComponent },\n //{ path: 'home', component: HomeComponent },\n { path: 'admin', component: LoginComponent },\n { path: 'gl-view', component: GlViewComponent },\n { path: 'ch/:map', component: GlViewComponent,},\n { path: 'painting', component: PaintingUiComponent },\n { path: 'phone-poster/:id/:key/:canvas', component: PhonePosterComponent },\n];\n\n@NgModule({\n declarations: [\n AppComponent,\n HomeComponent,\n GlViewComponent,\n PostingUIComponent,\n PostViewerUiComponent,\n MediaDisplayComponent,\n PinPostUiComponent,\n PaintingUiComponent,\n CmdUiComponent,\n LoginComponent,\n PlayerInterfaceComponent,\n AdminPostComponent,\n AdminMapComponent,\n TileEditComponent,\n PhonePosterComponent,\n ChatViewComponent,\n InfoViewComponent,\n PlayerUiComponent,\n AdPostUiComponent\n ],\n imports: [\n QRCodeModule,\n BrowserModule,\n NgxPaginationModule,\n DeviceDetectorModule.forRoot(),\n FormsModule,\n HttpClientModule,\n NgxTwitterTimelineModule,\n RouterModule.forRoot(\n appRoutes,\n )\n ],\n providers: [],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","module.exports = \"#container{\\n border-style : solid;\\n border-width : 2px;\\n border-color : rgb(60, 68, 61);\\n border-radius : 3px;\\n margin: 8px\\n}\\n\\n#close-btn{\\n position: absolute;\\n top: 16px;\\n right: 16px;\\n cursor: pointer;\\n}\\n\\n#desc{\\n \\n background-image: url(\\\"/assets/img/tool_bar_bg.png\\\");\\n background-repeat: repeat-x;\\n background-position: bottom;\\n position: absolute;\\n bottom: 0px;\\n text-align: center;\\n margin: 8px;\\n right: 0px;\\n color: aliceblue;\\n padding-top: 20px;\\n padding-right: 8px;\\n padding-left: px;\\n}\\n\\ndiv {\\n max-width: 250px;\\n max-height: 250px;\\n overflow: hidden;\\n}\\n\\nimg{\\n max-width: 250px;\\n max-height: 350px;\\n}\"","module.exports = \"<div id=\\\"container\\\" *ngIf=\\\"currentURL != null\\\">\\n<div id=\\\"close-btn\\\" (click)=\\\"closeAd()\\\">❎</div>\\n<a href=\\\"{{currentURL}}\\\" (click)=\\\"clickAd()\\\" target=\\\"blank_\\\">\\n <div><img src=\\\"{{currentImg}}\\\"/>\\n <div id=\\\"desc\\\">\\n <b>{{currentDesc}}</b> 📦🔥\\n </div>\\n </div>\\n</a>\\n</div>\\n\"","import { Component, OnInit, Output,EventEmitter } from '@angular/core';\nimport { ChanWebService } from 'src/app/services/chan-web.service';\nimport {AdvertisementModel} from '../../models/advertisement.model';\n\n@Component({\n selector: 'app-ad-post-ui',\n templateUrl: './ad-post-ui.component.html',\n styleUrls: ['./ad-post-ui.component.css']\n})\nexport class AdPostUiComponent implements OnInit {\n\n lang: string;\n country: string= \"us\";\n\n currentURL: string;\n currentImg: string;\n currentDesc: string;\n currentAlt: string;\n\n myInterval;\n adsFiltered: AdvertisementModel[];\n adIndex = 0;\n\n @Output() close = new EventEmitter<boolean>();\n\n constructor( private chanWebService: ChanWebService) { }\n\n ngOnInit() {\n this.lang = navigator.language;\n\n /*\n if(this.lang.toLowerCase().indexOf(\"us\")> -1){\n this.country = \"us\";\n } else if(this.lang.toLowerCase().indexOf(\"fr\")> -1){\n this.country = \"fr\";\n }*/\n\n //Map made! We load the money maker\n this.chanWebService.getAds().subscribe( (ads: AdvertisementModel[]) =>{\n //console.log(ads);\n\n this.adsFiltered = new Array();\n for(let a = 0; a < ads.length; a++){\n if(ads[a].loc === this.country){\n this.adsFiltered.push(ads[a]);\n }\n }\n console.log( this.adsFiltered);\n this.adIndex = Math.floor(Math.random() * Math.floor(this.adsFiltered.length));\n this. displayAd();\n /*this.myInterval = setInterval(()=>{\n this.updateAd();\n }, 15000);*/\n });\n }\n\n displayAd(){\n let ad : AdvertisementModel = this.adsFiltered[this.adIndex];\n this.currentURL = ad.url;\n this.currentImg = ad.picture;\n this.currentDesc = ad.name;\n }\n\n updateAd(){\n this.adIndex ++;\n console.log(this.adsFiltered);\n if( this.adIndex >= this.adsFiltered.length) this.adIndex = 0;\n if(this.adsFiltered.length > 0) this.displayAd();\n }\n\n gotTo(url_){\n window.open(url_, '_blank');\n }\n\n\n}\n","module.exports = \".container{\\n height: 100%;\\n}\\n\\n.post-viewer-ui-message{\\n\\n position: relative;\\n top:8px;\\n bottom:18px;\\n overflow : scroll;\\n height: 85%;\\n width: 100%;\\n left: 0;\\n right: 0;\\n margin: auto;\\n padding : 10px;\\n background: rgb(247, 189, 203);\\n border-style: solid;\\n border-width: 1px;\\n border-color: rgb(181, 134, 145);\\n border-radius: 5px;\\n}\\n\\n.ascii-art {\\n font-family: monospace;\\n font-family: \\\"Lucida Console\\\", monospace;\\n letter-spacing: 0.2em;\\n line-height: 0.8em;\\n}\"","module.exports = \"<div class=\\\"container\\\">\\n <a routerLink=\\\"/admin-post\\\">Posts</a> - <a routerLink=\\\"/admin-map\\\">Maps</a> - <a routerLink=\\\"/gl-view\\\">Go Game!</a>\\n <div class=\\\"post-viewer-ui-message\\\">\\n <select id=\\\"map-select\\\" [(ngModel)]=\\\"selectedMapKey\\\" (change)=\\\"onChangeMap($event.target.value)\\\">\\n <option *ngFor=\\\"let map of maps\\\" value=\\\"{{map.key}}\\\">{{map.name}}</option>\\n </select>\\n <br/>\\n <button (click)=\\\"moveMap(3)\\\">Go West</button>\\n <button (click)=\\\"moveMap(0)\\\">Go North</button>\\n <button (click)=\\\"moveMap(2)\\\">Go South</button>\\n <button (click)=\\\"moveMap(1)\\\">Go East</button> <br/>\\n ----------------------------------<br/>\\n <div *ngIf=\\\"selectedMap != null\\\">\\n Map name: {{selectedMap.name}} ({{selectedMap.x}}, {{selectedMap.y}})<br/>\\n Map key: <b>{{selectedMap.key}}</b><br/>\\n Map width: {{selectedMap.width}}<br/>\\n Map height: {{selectedMap.height}}<br/>\\n ----------------------------------<br/>\\n Door North <input [(ngModel)]=\\\"selectedMap.door_key_n\\\" /><br/>\\n Door East <input [(ngModel)]=\\\"selectedMap.door_key_e\\\" /><br/>\\n Door South <input [(ngModel)]=\\\"selectedMap.door_key_s\\\" /><br/>\\n Door West <input [(ngModel)]=\\\"selectedMap.door_key_w\\\" /><br/>\\n ----------------------------------<br/>\\n <div *ngFor=\\\"let line of mapDataLines; index as y\\\" class=\\\"ascii-art\\\">\\n <span *ngFor=\\\"let tile of line; index as x \\\">\\n <app-tile-edit [tileValue] =\\\"tile\\\"\\n [allTiles]=\\\"allTiles\\\"\\n [x]=\\\"x\\\" [y]=\\\"y\\\" (valueChange)=\\\"onChangeTileAt($event.x,$event.y)\\\">\\n </app-tile-edit>\\n </span>\\n </div>\\n\\n \\n <select id=\\\"tile-select\\\" [(ngModel)]=\\\"selectedTileVal\\\" (change)=\\\"onChangeTileBrush($event.target.value)\\\">\\n <option *ngFor=\\\"let tile of allTiles\\\" value=\\\"{{tile.value}}\\\">{{tile.name}} {{tile.display}} ({{tile.value}})</option>\\n </select>\\n <button (click)=\\\"saveMap()\\\">Save the new map</button>\\n </div>\\n\\n <div *ngIf=\\\"selectedMap == null\\\">\\n There's NOTHING here! ({{currentX}}, {{currentY}})\\n </div>\\n </div>\\n</div>\"","import { Component, OnInit } from '@angular/core';\nimport { MapModel } from 'src/app/models/map.model';\nimport { AllMapResponseModel }from 'src/app/models/all-map.response.model';\nimport { ChanWebService } from 'src/app/services/chan-web.service';\nimport { AllTilesResponseModel } from 'src/app/models/all-tiles.response.model';\nimport { TileModel } from 'src/app/models/tile.model';\nimport {GenericResponseModel} from '../../models/generic.response.model';\n\n@Component({\n selector: 'app-admin-map',\n templateUrl: './admin-map.component.html',\n styleUrls: ['./admin-map.component.css']\n})\nexport class AdminMapComponent implements OnInit {\n\n maps: MapModel[];\n selectedMapKey: any;\n selectedTileVal: number =0;\n selectedMap: MapModel;\n mapData: string[] = [];\n allTiles: TileModel[];\n\n mapDataLines: string[][] = [];\n\n constructor(private chanWebService: ChanWebService) { }\n\n ngOnInit() {\n\n this.chanWebService.getAllMaps().subscribe( (data_: AllMapResponseModel) =>{\n this.maps = data_.result;\n if( this.maps.length > 0){\n\n //We looking for the alpha map\n this.maps.forEach(map => {\n if(map.name === \"alpha\"){\n this.selectedMapKey = map.key;\n this.onChangeMap(this.selectedMapKey);\n }\n });\n } \n });\n\n this.chanWebService.getAllTiles().subscribe( (data_: AllTilesResponseModel) =>{\n \n this.allTiles = data_.result;\n this.selectedTileVal = this.allTiles[0].value;\n\n });\n }\n\n onChangeMap(key_){\n\n this.selectedMapKey = key_;\n\n this.maps.forEach(map => {\n if(map.key == key_) {\n this.selectedMap = map;\n\n this.currentX = this.selectedMap.x;\n this.currentY = this.selectedMap.y;\n\n //Parsing the map datas\n this.mapData = this.selectedMap.level_data.split(\",\");\n this.mapDataLines = [];\n\n let n =0;\n for(let h = 0; h < this.selectedMap.height; h++){\n let mapDataWidth = [];\n for(let w = 0; w < this.selectedMap.width; w++){\n mapDataWidth.push(this.mapData[n]);\n n ++;\n }\n this.mapDataLines.push(mapDataWidth);\n }\n\n }\n });\n }\n\n onChangeTileBrush(val_){\n this.selectedTileVal = val_;\n }\n\n onChangeTileAt(x_,y_){\n console.log( this.selectedTileVal +\",\"+x_+\",\"+y_);\n let lineTemp = this.mapDataLines[y_]; \n lineTemp[x_] = this.selectedTileVal.toString() ;\n this.mapDataLines[y_] = lineTemp;\n console.log( this.mapDataLines);\n }\n\n saveMap(){\n let tempNewData : string = \"\" ;\n for(let y= 0; y < this.mapDataLines.length; y++){\n let line = this.mapDataLines[y];\n for(let x= 0; x < line.length; x++){\n tempNewData = tempNewData+line[x]+\",\";\n }\n }\n \n this.selectedMap.level_data = tempNewData ;\n console.log( this.selectedMap);\n this.chanWebService.saveMapModel( this.selectedMap ).subscribe( (data_: any) => {\n alert(JSON.stringify(data_));\n });\n\n }\n\n currentX: number;\n currentY: number;\n moveMap(dir_){\n\n switch(dir_){\n //North\n case 0:\n this.currentY --;\n break;\n\n //East\n case 1:\n this.currentX ++;\n break;\n\n //South\n case 2:\n this.currentY ++;\n break;\n\n //West\n case 3:\n this.currentX --;\n break;\n }\n\n this.selectedMap = null;\n\n this.maps.forEach(map => {\n if(map.x == this.currentX && map.y == this.currentY){\n this.onChangeMap(map.key);\n }\n });\n }\n\n}\n","module.exports = \".container{\\n height: 100%;\\n}\\n\\n.post-viewer-ui-message{\\n\\n position: relative;\\n top:8px;\\n bottom:18px;\\n overflow : scroll;\\n height: 85%;\\n /*max-width: 450px;*/\\n width: 100%;\\n left: 0;\\n right: 0;\\n margin: auto;\\n padding : 10px;\\n background: rgb(247, 189, 203);\\n border-style: solid;\\n border-width: 1px;\\n border-color: rgb(181, 134, 145);\\n border-radius: 5px;\\n}\\n\\nimg{\\n max-width:150px;\\n max-height:150px;\\n}\\n\\n/*\\ndiv {\\n margin-bottom: 8px;\\n}*/\\n\\n::ng-deep .img-preview img, .img-preview video, .img-preview iframe, .img-preview audio {\\n max-width: 600px;\\n max-height: 400px;\\n}\"","module.exports = \"<div class=\\\"container\\\">\\n <a routerLink=\\\"/admin-post\\\">Posts</a> - <a routerLink=\\\"/admin-map\\\">Maps</a> - <a routerLink=\\\"/ch/alpha\\\">Go Game!</a>\\n<div class=\\\"post-viewer-ui-message\\\">\\n\\n <input [(ngModel)]=\\\"valToDelete\\\"> <button (click)=\\\"deleteVal()\\\">Delete</button> --------- <button type=\\\"button\\\" class=\\\"btn btn-primary\\\" (click)=\\\"updatePost()\\\">update</button>\\n <div *ngFor=\\\"let post of posts| paginate: { itemsPerPage: 20, currentPage: p }\\\">\\n N° {{post.id}} <span *ngIf=\\\"post.is_canon\\\">👌</span><br/>\\n Player: {{post.player_id}}<br/>\\n IP: {{post.player_ip}}<br/>\\n CHAN: <span class=\\\"badge badge-light\\\">{{post.map_key}}</span><br/>\\n\\n <img src=\\\"{{post.url}}\\\"/>\\n Url: <a href=\\\"{{post.url}}\\\">{{post.url}}</a><br/>\\n Message: {{post.message}}<br/>\\n \\n <div *ngIf=\\\"post.was_deleted\\\"> \\n <div class=\\\"alert alert-danger\\\" role=\\\"alert\\\">\\n Thanks, post has been succesfuly DELETED!\\n </div>\\n </div>\\n\\n <div *ngIf=\\\"!post.was_deleted\\\">\\n\\n <button type=\\\"button\\\" class=\\\"btn btn-success\\\" (click) = \\\"canonPost(post.id,post.map_key)\\\" >Active or Disactive canon status 👌</button><br/>\\n <button type=\\\"button\\\" class=\\\"btn btn-warning\\\" (click) = \\\"deletePost(post)\\\" >Delete the post 🗑️</button><br/>\\n <button type=\\\"button\\\" class=\\\"btn btn-danger\\\" (click) = \\\"setBan(post.id)\\\" >Ban user 🔨</button><br/>\\n </div>\\n -----------------------------------------<br/>\\n </div>\\n <pagination-controls (pageChange)=\\\"p = $event\\\"></pagination-controls>\\n </div>\\n</div>\\n\"","import { Component, OnInit } from '@angular/core';\nimport { ChanWebService } from 'src/app/services/chan-web.service';\nimport { AllPostResponseModel } from 'src/app/models/all-post.response.model';\nimport { PostModel } from 'src/app/models/post.model';\nimport {GenericResponseModel} from 'src/app/models/generic.response.model'\n\n\n@Component({\n selector: 'app-admin-post',\n templateUrl: './admin-post.component.html',\n styleUrls: ['./admin-post.component.css']\n})\nexport class AdminPostComponent implements OnInit {\n\n public posts: PostModel[] = [];\n valToDelete: string = \"\";\n p: number = 1;\n\n constructor(private chanWebService: ChanWebService) { }\n\n ngOnInit() {\n this.updatePost();\n }\n\n updatePost(){\n this.chanWebService.getAllPost().subscribe( (data_: AllPostResponseModel) =>{\n this.posts = data_.result.reverse();\n })\n }\n\n private postToDelete;\n \n deletePost(postModel_){\n\n this.postToDelete = postModel_;\n console.log(\"this.postToDelete:\"+this.postToDelete);\n this.chanWebService.deletePost(postModel_.id,postModel_.map_key).subscribe(\n //Data success\n (data : GenericResponseModel) => {\n //alert(JSON.stringify(data));\n //this.updatePost();\n this.posts.find((post_)=>{\n return (post_.id == this.postToDelete.id);\n }).was_deleted = true;\n\n });\n }\n\n deleteVal(){\n this.chanWebService.deletePostForVal(this.valToDelete).subscribe(\n //Data success\n (data : GenericResponseModel) => {\n alert(JSON.stringify(data));\n this.updatePost();\n });\n }\n\n setBan(id_){\n this.chanWebService.setBan(id_).subscribe(\n //Data success\n (data : GenericResponseModel) => {\n alert(JSON.stringify(data));\n this.updatePost();\n });\n }\n\n canonPost(id_, thread_){\n this.chanWebService.canonPost(id_, thread_).subscribe(\n //Data success\n (data : GenericResponseModel) => {\n alert(JSON.stringify(data));\n this.updatePost();\n });\n }\n\n banPost(){\n \n }\n\n}\n","module.exports = \"#container{\\n display:block;\\n /*height: 255px;*/\\n width: 340px;\\n color:white;\\n padding: 8px;\\n}\\n\\n.bgChatUI{\\n margin: 4px; \\n bottom: 60px;\\n /*height: 200px;\\n overflow-y: scroll;*/\\n font-size: 12px;\\n }\\n\\n.yourPlayer{\\n color:rgb(155, 155, 155);\\n }\\n\\n.inputChat{\\n /*position: absolute;\\n bottom: 0px;\\n height: 50px;*/\\n width: 100%;\\n text-align: center;\\n }\\n\\n.bgLineUI{\\n border-radius: 5px;\\n background: rgba(46, 46, 46, 0.9);\\n font-size: 12px;\\n padding: 5px;\\n}\"","module.exports = \"<div id=\\\"container\\\">\\n <div class=\\\"bgChatUI\\\">\\n <div *ngIf=\\\"gameDataModel.actions != undefined && gameDataModel.actions.length\\\">\\n <div *ngFor=\\\"let action of gameDataModel.actions, let index = index;\\\">\\n <br/>\\n <span\\n class=\\\"bgLineUI\\\"\\n *ngIf=\\\"index > gameDataModel.actions.length-6\\\"\\n [ngStyle]=\\\"{'color': (action.player_id == gameDataModel.player.id) ? 'rgb(239, 147, 162)' : 'white' }\\\">\\n <b>#{{action.player_id}} <span *ngIf=\\\"action.player_id == gameDataModel.player.id\\\">(you)</span></b>{{action.value}}<br/></span>\\n </div>\\n </div>\\n</div>\\n<div class=\\\"inputChat input-group\\\">\\n <input class=\\\"form-control mr-sm-2\\\" [(ngModel)]=\\\"messageToPost\\\" type=\\\"text\\\" placeholder=\\\"Talk here.\\\">\\n <button class=\\\"btn btn-secondary my-2 my-sm-0\\\" (click)=\\\"postMessage()\\\">send</button>\\n</div>\\n</div>\\n\"","import { Component, OnInit ,Input} from '@angular/core';\nimport { GameDataModel } from '../../models/game-data.model';\nimport { ChanWebService } from 'src/app/services/chan-web.service';\nimport { post } from 'selenium-webdriver/http';\nimport { ActionModel } from 'src/app/models/action.model';\nimport {GameUIServiceService} from '../../services/game-uiservice.service'\nimport { Helpers } from 'src/app/utils/helpers';\n\n@Component({\n selector: 'app-chat-view',\n templateUrl: './chat-view.component.html',\n styleUrls: ['./chat-view.component.css']\n})\nexport class ChatViewComponent implements OnInit {\n\n @Input() gameDataModel: GameDataModel = new GameDataModel();\n messageToPost: string = \"\";\n\n constructor(private chanWS: ChanWebService,\n private gameUIServiceService : GameUIServiceService,) { }\n\n ngOnInit() {\n\n }\n\n postMessage(){\n let action = new ActionModel();\n action.value = this.messageToPost;\n action.action = \"talk\";\n this.messageToPost = \"\";\n this.chanWS.createLog(action).subscribe(\n //Data success\n (data : any) => {\n console.log(data);\n this.gameUIServiceService.forceWS();\n \n }\n );\n \n }\n\n}\n","module.exports = \"#commandPrompt{\\n background-color: black;\\n color: green;\\n font-family: 'Courier New', Courier, monospace;\\n text-align: left;\\n height: 100%;\\n padding: 2px;\\n}\\n\\n#commandInput{\\n color: black;\\n background-color: green;\\n width:100%;\\n border: none;\\n}\\n\\n::-webkit-input-placeholder { /* Firefox, Chrome, Opera */ \\n color: white; \\n}\\n\\n::-ms-input-placeholder { /* Firefox, Chrome, Opera */ \\n color: white; \\n}\\n\\n::placeholder { /* Firefox, Chrome, Opera */ \\n color: white; \\n} \"","module.exports = \"<button (click)=\\\"close()\\\" >Close</button>\\n<div id=\\\"commandPrompt\\\">\\n /dungeon/users/anon$<br/>\\n <input id=\\\"commandInput\\\" type=\\\"text\\\" placeholder=\\\"\\\" [(ngModel)]=\\\"commandTyped\\\" placeholder=\\\">type command here_\\\">\\n <button (click)=\\\"sendCMD()\\\">send</button>\\n <br/>\\n <div>\\n <div *ngFor=\\\"let reply of commandReplies\\\">{{reply}}</div>\\n </div>\\n</div>\"","import { Component, OnInit } from '@angular/core';\nimport {GameUIServiceService} from '../../services/game-uiservice.service'\nimport {ChanWebService} from '../../services/chan-web.service'\nimport { GenericResponseModel } from 'src/app/models/generic.response.model';\nimport{ AdminResponseModel} from '../../models/admin.response.model';\n\n@Component({\n selector: 'app-cmd-ui',\n templateUrl: './cmd-ui.component.html',\n styleUrls: ['./cmd-ui.component.css']\n})\nexport class CmdUiComponent implements OnInit {\n\n commandTyped: string;\n commandReplies: string[] = [];\n\n constructor(private gameUIServiceService : GameUIServiceService, private chanWebService: ChanWebService) { }\n\n ngOnInit() {\n }\n\n close(){\n this.gameUIServiceService.changeState(GameUIServiceService.STATE_GAME_RUNNING);\n }\n\n sendCMD(){\n if(this.commandTyped) {\n this.commandReplies.unshift(\">\"+this.commandTyped);\n this.analysisCMD(this.commandTyped);\n this.commandTyped = \"\";\n }\n }\n /********************\n * COMMAND ANALYSIS\n * ******************/\n\n analysisCMD(cmd_){\n let cmdData = cmd_.split(\" \");\n if(cmdData[0] == \"adminconnect\" && cmdData[1]){\n\n this.commandReplies.unshift(\"#### TRY TO CONNECT ADMIN #####\");\n this.connectAdmin(cmdData[1]);\n\n }else if(cmdData[0] == \"admininit\" && cmdData[1]){\n\n this.commandReplies.unshift(\"#### TRY TO INIT ADMIN #####\");\n this.setAdminPassword(cmdData[1]);\n\n }else if(cmdData[0] == \"logout\" && cmdData[1]){\n\n this.commandReplies.unshift(\"#### LOGOUT #####\");\n this.logout();\n\n }else if(cmdData[0] == \"admintest\"){\n\n this.commandReplies.unshift(\"#### TEST ADMIN CONNECTION #####\");\n this.isAdminConnected();\n\n } else {\n this.commandReplies.unshift(\"!command not recognized!\");\n }\n }\n \n isAdminConnected(){\n this.chanWebService.isAdminConnected().subscribe( (data_: AdminResponseModel) => {\n if(data_.ok) {\n\n if(data_.result === \"true\"){\n this.commandReplies.unshift(\"***** Admin is connected *****\");\n } else {\n this.commandReplies.unshift(\"***** Admin is not connected *****\");\n }\n \n this.commandReplies.unshift(data_.result);\n } else {\n this.commandReplies.unshift(\"!error!\");\n }\n })\n }\n \n connectAdmin(password_){\n this.chanWebService.connectAdmin(password_).subscribe( (data_: AdminResponseModel) => {\n if(data_.ok) {\n this.commandReplies.unshift(\"***** Admin connected *****\");\n this.commandReplies.unshift(data_.result);\n } else {\n this.commandReplies.unshift(\"!error!\");\n }\n })\n }\n \n setAdminPassword(password_){\n this.chanWebService.setAdminPassword(password_).subscribe( (data_: AdminResponseModel) => {\n if(data_.ok) {\n this.commandReplies.unshift(\"***** Set password successful *****\");\n this.commandReplies.unshift(data_.result);\n } else {\n this.commandReplies.unshift(\"!error!\");\n }\n })\n }\n \n logout(){\n this.chanWebService.logout().subscribe( (data_: AdminResponseModel) => {\n if(data_.ok) {\n this.commandReplies.unshift(\"***** Logout successful *****\");\n this.commandReplies.unshift(data_.result);\n } else {\n this.commandReplies.unshift(\"!error!\");\n }\n })\n }\n\n}\n","module.exports = \"#renderCanvas{\\n width: 100%;\\n height: 100%;\\n}\\n\\n/*\\nGAME UI\\n*/\\n\\n.ui-game-container{\\n z-index : 10;\\n height: 100%;\\n }\\n\\n.ui-game{\\n z-index : 10;\\n}\\n\\n.ui-game-frame{\\n z-index : 11;\\n height: 95%;\\n width: 95%;\\n }\\n\\n#mainUI{\\n position:absolute;\\n top:8px;\\n left:8px;\\n color: white;\\n}\\n\\n#titleLabel{\\n text-align: center;\\n font-size: 1em;\\n}\\n\\n#pointerDesc{\\n\\n position:absolute;\\n top:20px;\\n max-width : 200px;\\n color: white;\\n text-align: center;\\n left: 0;\\n right: 0;\\n margin: auto;\\n}\\n\\n#chanDisplay{\\n position:absolute;\\n top:10px;\\n max-width :480px;\\n text-align: center;\\n left: 0;\\n right: 0;\\n margin: auto;\\n color: white;\\n}\\n\\n#pointerInteract{\\n position:absolute;\\n bottom:10px;\\n max-width : 380px;\\n color: white;\\n text-align: center;\\n left: 0;\\n right: 0;\\n margin: auto;\\n}\\n\\n#postingUI{\\n position:absolute;\\n top:20px;\\n /*max-width: 650px;*/\\n left: 0;\\n right: 0;\\n margin: auto;\\n text-align: left;\\n}\\n\\n#player-bar{\\n /*\\n background-image: url(\\\"/assets/img/tool_bar_bg.png\\\");\\n background-repeat: repeat-x;\\n background-position: bottom;*/\\n\\n background-size: 100% 100%;\\n color: rgb(206, 206, 206);\\n height: 175px;\\n width: 100%;\\n position:absolute;\\n bottom: 0px;\\n right: 0px;\\n left: 0px;\\n margin:8px;\\n}\\n\\n#player-bar-right{\\n position:absolute;\\n bottom: 0px;\\n right: 0;\\n padding: 11px;\\n text-align: right;\\n margin-right:16px;\\n}\\n\\n#player-bar-left{\\n position:absolute;\\n bottom: 0px;\\n left: 0;\\n padding: 11px;\\n text-align: left;\\n}\\n\\n#pin-ui{\\n position:absolute;\\n top:0px;\\n right: 0;\\n max-width: 300px;\\n max-height: 300px;\\n text-align: right;\\n}\\n\\n#ad-ui{\\n position:absolute;\\n top:0px;\\n right: 0;\\n max-width: 250px;\\n max-height: 300px;\\n text-align: right;\\n}\\n\\n.spoil{\\n width: 100%;\\n background-color: rgb(71, 71, 71);\\n color: rgb(71, 71, 71);\\n}\\n\\n.pointer{\\n cursor: pointer;\\n}\\n\\n.circle:before {\\n /*Put the element at the middle of the screen*/\\n text-align: center;\\n width: 4px;\\n height: 4px;\\n top:0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n margin: auto;\\n content: '\\\\25CF';\\n font-size: 10px;\\n color: white;\\n position:absolute;\\n top:50px;\\n left : 50;\\n\\n }\\n\\n.circle-hover:before {\\n /*Put the element at the middle of the screen*/\\n text-align: center;\\n width: 4px;\\n height: 4px;\\n top:0;\\n bottom: 0;\\n left: 0;\\n right: 0;\\n margin: auto;\\n content: '\\\\25CF';\\n font-size: 20px;\\n color: white;\\n position:absolute;\\n top:50px;\\n left : 50;\\n\\n }\\n\\n.bgGameUI{\\n border-radius: 5px;\\n background: rgba(46, 46, 46, 0.9);\\n font-size: 12px;\\n padding: 5px;\\n}\\n\\n.chat-ui{\\n position:absolute;\\n border-radius: 5px;\\n background: rgba(46, 46, 46, 0.9);\\n bottom:10px;\\n left: 20px;\\n width: 300px;\\n height: 255px;\\n padding: 10px; \\n}\\n\\n.info-button-ui{\\n position:absolute;\\n bottom:10px;\\n left: 10px;\\n color: white;\\n}\\n\\n.fullHeightInterface{\\n \\n height: 90%;\\n /* overflow-y: auto;*/\\n }\\n\\nbutton{\\n margin: 1px 1px 4px 1px;\\n }\\n\\n/* Trash */\\n\\n#gamepadCanvas{\\n position:absolute;\\n bottom:20px;\\n right :20px;\\n width: 200px;\\n height: 200px;\\n color: white;\\n background-color: rgb(41, 41, 41);\\n}\\n\\n.reply-underline{\\n color: rgb(0, 110, 255);\\n text-decoration: underline;\\n}\"","module.exports = \"<div id=\\\"view-game\\\">\\n<canvas #renderCanvas id=\\\"renderCanvas\\\" touch-action=\\\"none\\\" tabindex=\\\"1\\\" style=\\\"touch-action: none;\\\"></canvas>\\n\\n<div id=\\\"ui-game-container\\\">\\n <div *ngIf=\\\"!isMobile\\\" id=\\\"mainUI\\\" class=\\\"ui-game bgGameUI\\\">\\n <div>\\n <div *ngIf=\\\"config\\\" >use <b>⌨️ {{config.key_mapping}}</b> to move <button button class=\\\"btn btn-secondary btn-sm\\\" (click)=\\\"changeMapping()\\\">change</button></div>\\n </div>\\n\\n </div>\\n\\n <span *ngIf=\\\"!currentinteraction || currentinteraction.type === 0\\\" class=\\\"circle\\\" id=\\\"pointerTarget\\\"></span>\\n <span *ngIf=\\\"currentinteraction && currentinteraction.type !== 0\\\" class=\\\"circle-hover\\\" id=\\\"pointerTarget\\\"></span>\\n \\n <!--MAP INTERACTION UI-->\\n <div id=\\\"chanDisplay\\\" *ngIf=\\\"gameDataModel.player != null && gameDataModel.map != null && gameDataModel.map.length\\\" class=\\\"ui-game\\\" >\\n <div >\\n <span class=\\\"bgGameUI\\\">\\n [ <span *ngFor=\\\"let chan of chanList\\\"><a href=\\\"{{clientURL}}ch/{{chan}}\\\">/{{chan}}</a> ~ </span>]\\n </span>\\n </div>\\n <h2>~/{{gameDataModel.map[0].name}}/</h2>\\n </div>\\n <div id=\\\"pointerInteract\\\" class=\\\"ui-game\\\">\\n\\n <div *ngIf=\\\"currentinteraction != null\\\">\\n <button type=\\\"button\\\" class=\\\"btn btn-dark\\\" *ngIf=\\\"currentinteraction.type === 3 \\\" id=\\\"openPostBtn\\\" type=\\\"button\\\" class=\\\"btn btn-secondary\\\" (click)=\\\"climbLadder()\\\">🐸 Climb</button>\\n <button type=\\\"button\\\" class=\\\"btn btn-dark\\\" *ngIf=\\\"currentinteraction.type === 4 \\\" id=\\\"openPostBtn\\\" (click)=\\\"openDoor()\\\">🚪</button>\\n <button type=\\\"button\\\" class=\\\"btn btn-dark\\\" *ngIf=\\\"currentinteraction.type === 1 || currentinteraction.type === 8\\\" id=\\\"openPostBtn\\\" (click)=\\\"openUrl()\\\">🔎</button>\\n\\n <button type=\\\"button\\\" class=\\\"btn btn-dark\\\" *ngIf=\\\"gameDataModel.postsLeft > 0 && (currentinteraction.type === 1 || currentinteraction.type === 8)\\\" id=\\\"openPostBtn\\\" (click)=\\\"addReply(currentinteraction.value.id)\\\">💬 Reply to <b class=\\\"reply-underline\\\">>>{{currentinteraction.value.id}}</b> </button>\\n <button type=\\\"button\\\" class=\\\"btn btn-dark\\\" *ngIf=\\\"gameDataModel.postsLeft > 0 && currentinteraction.type === 2 \\\" id=\\\"openPostingBtn\\\"(click)=\\\" openPostingUI()\\\">✍️</button>\\n <button type=\\\"button\\\" class=\\\"btn btn-dark\\\" *ngIf=\\\"gameDataModel.postsLeft > 0 && (currentinteraction.type === 2 || currentinteraction.type === 8)\\\" id=\\\"openPostingBtn\\\" (click)=\\\" openPaintingUI()\\\">🎨</button>\\n\\n <button type=\\\"button\\\" class=\\\"btn btn-dark\\\" *ngIf=\\\"currentinteraction.type === 5 \\\" id=\\\"openPostingBtn\\\" (click)=\\\" getItem(currentinteraction.value.key)\\\">🤚 Get item {{currentinteraction.value.name}} </button>\\n <button type=\\\"button\\\" class=\\\"btn btn-dark\\\" *ngIf=\\\"currentinteraction.type === 6 \\\" id=\\\"openPostingBtn\\\"(click)=\\\" passGate(currentinteraction.value)\\\">⛩️ Go to <b>/{{currentinteraction.value}}</b></button>\\n <button type=\\\"button\\\" class=\\\"btn btn-dark\\\" *ngIf=\\\"currentinteraction.type === 7 \\\" id=\\\"openPostingBtn\\\" (click)=\\\" gotTo(currentinteraction.value)\\\">More info <b>/{{currentinteraction.value}}</b></button>\\n \\n </div>\\n\\n <div *ngIf=\\\"reply > -1\\\">\\n Plan to reply to <b class=\\\"reply-underline\\\">>>{{reply}}</b> <span (click)=\\\" destroyReply(-1)\\\"> 🗑️</span>\\n </div>\\n\\n <div *ngFor=\\\"let item of gameDataModel.itemsPlayer\\\">\\n +<b>{{item.name}}</b><br/>\\n </div>\\n </div>\\n\\n <div id=\\\"pin-ui\\\" >\\n <app-pin-post-ui [postModel]=\\\"pinnedPostModel\\\"(close)=\\\"unPin($event)\\\" class=\\\"ui-game\\\">\\n </app-pin-post-ui>\\n\\n <app-pin-post-ui *ngIf=\\\"currentinteraction != null && currentinteraction.value != null && currentinteraction.value.url != null\\\" [postModel]=\\\"currentinteraction.value\\\" (close)=\\\"unPin($event)\\\" class=\\\"ui-game\\\">\\n </app-pin-post-ui>\\n\\n \\n <!--app-ad-post-ui *ngIf=\\\"adDisplay && !pinnedPostModel\\\" id=\\\"ad-ui\\\" class=\\\"ui-game\\\" (close)=\\\"closeAd($event)\\\">\\n </app-ad-post-ui-->\\n </div>\\n\\n <div *ngIf=\\\"gameDataModel != null\\\">\\n <app-posting-ui class=\\\"fullHeightInterface\\\" id=\\\"postingUI\\\" *ngIf=\\\"gameState === 1\\\" [isPhonePosting] = \\\"false\\\" [canvasKey]=\\\"currentinteraction.value.canvas_key\\\" [gameDataModel]=\\\"gameDataModel\\\" [reply]=\\\"reply\\\" class=\\\"ui-game-frame\\\" (onDestroyReply)=\\\"destroyReply($event)\\\"></app-posting-ui>\\n <app-painting-ui class=\\\"fullHeightInterface\\\" id=\\\"postingUI\\\" *ngIf=\\\"gameState === 4\\\" [canvasKey]=\\\"currentinteraction.value.canvas_key\\\" [urlBgPicture]=\\\"currentinteraction.value.url\\\" [reply]=\\\"reply\\\" class=\\\"ui-game-frame\\\" (onDestroyReply)=\\\"destroyReply($event)\\\">></app-painting-ui>\\n <app-post-viewer-ui class=\\\"fullHeightInterface\\\" id=\\\"postingUI\\\" *ngIf=\\\"gameState === 2\\\" [postModel]=\\\"currentinteraction.value\\\" (pin)=\\\"onPin($event)\\\" [gameDataModel]=\\\"gameDataModel\\\" class=\\\"ui-game-frame\\\" (onReply)=\\\"addReply($event)\\\" ></app-post-viewer-ui >\\n <app-info-view class=\\\"fullHeightInterface\\\" id=\\\"postingUI\\\" *ngIf=\\\"gameState === 6\\\" class=\\\"ui-game-frame\\\"></app-info-view>\\n <app-player-ui class=\\\"fullHeightInterface\\\" id=\\\"postingUI\\\" *ngIf=\\\"gameState === 9\\\" class=\\\"ui-game-frame\\\" [gameDataModel]=\\\"gameDataModel\\\"></app-player-ui>\\n </div>\\n\\n <div id=\\\"player-bar\\\" *ngIf=\\\"!isMobile && gameDataModel.player != null\\\" >\\n \\n <div id=\\\"player-bar-left\\\" class=\\\"bgGameUI\\\">\\n <div>#{{gameDataModel.player.id}} <span *ngIf=\\\"gameDataModel.player.is_admin\\\"> <a href=\\\"/admin-post\\\" target=\\\"blank_\\\">🧠</a></span>\\n </div>\\n <!--div>Talk 💬<br/>\\n <textarea id=\\\"message-text\\\" placeholder=\\\"talk here\\\" [ngModel]=\\\"gameDataModel.player.talk\\\"\\n (ngModelChange)=\\\"changeTalk($event)\\\"></textarea>\\n </div-->\\n </div>\\n \\n <div id=\\\"player-bar-right\\\">\\n <!--app-chat-view *ngIf=\\\"!isMobile && gameDataModel.player != null\\\" [gameDataModel]=\\\"gameDataModel\\\"></app-chat-view-->\\n <div>\\n <span class=\\\"bgGameUI\\\">\\n <div>Due moderation issues post is currently limited. {{gameDataModel.postsLeft}} post(s) left.</div>\\n <a href=\\\"https://twitter.com/alexkrunch\\\" target=\\\"blank_\\\">🐦 Twitter</a> - <a href=\\\"http://snuffchan.com/blog/donations/\\\" target=\\\"blank_\\\">💰 Donations </a>\\n </span>\\n </div>\\n </div>\\n \\n </div>\\n \\n\\n</div>\"","import { Component, OnInit, ElementRef, ViewChild, HostListener } from '@angular/core';\nimport { Router, ActivatedRoute } from '@angular/router';\nimport { Game } from '../../motor/game';\nimport { GameUIServiceService } from '../../services/game-uiservice.service'\nimport { InteractionModel } from '../../models/interaction-model';\nimport { ChanWebService } from 'src/app/services/chan-web.service';\nimport { OfflineService } from 'src/app/services/offline.service';\nimport { PostModel } from '../../models/post.model';\nimport { PlayerModel } from 'src/app/models/player.model';\nimport { ConfigModel } from 'src/app/models/config.model';\nimport { GameDataModel } from 'src/app/models/game-data.model';\nimport { DeviceDetectorService } from 'ngx-device-detector';\nimport { environment } from 'src/environments/environment';\n\n@Component({\n selector: 'app-gl-view',\n templateUrl: './gl-view.component.html',\n styleUrls: ['./gl-view.component.css']\n})\nexport class GlViewComponent implements OnInit {\n\n public gameState : number;\n public currentinteraction: InteractionModel;\n public pinnedPostModel : PostModel;\n public playerData : PlayerModel = new PlayerModel();\n public gameDataModel : GameDataModel = new GameDataModel();\n public config : ConfigModel = new ConfigModel();\n public game : Game;\n public isMobile: boolean = false;\n public adDisplay: boolean = true;\n\n public currentMapKey: string = \"alpha\";\n public clientURL: string = \"\";\n public chanList: string[];\n\n public reply: number = -1;\n\n constructor(private gameUIServiceService : GameUIServiceService,\n private chanWebService: ChanWebService,\n private offlineService: OfflineService,\n private router: Router,\n private route: ActivatedRoute,\n private deviceService: DeviceDetectorService) {\n\n this.router.routeReuseStrategy.shouldReuseRoute = () => false;\n this.route.params.subscribe( params => {\n this.currentMapKey = params['map'];\n console.log(this.currentMapKey);\n });\n\n this.clientURL = environment.clientUrl;\n }\n\n ngOnInit() {\n\n this.clientURL = environment.clientUrl;\n this.chanList = this.offlineService.getChanData();\n console.log( this.chanList);\n\n this.gameUIServiceService.changeStateEmitter.subscribe( (state_)=> {\n this.changeGameState(state_);\n if(state_ === GameUIServiceService.STATE_NO_PLAYER) this.router.navigate(['/']);\n });\n\n this.gameUIServiceService.sendInteractionsEmitter.subscribe( (inter_)=> {\n this.receiveInteraction(inter_ );\n });\n\n \n this.gameUIServiceService.changeGameDataEmitter.subscribe( (gameData_: GameDataModel)=> {\n this.gameDataModel = gameData_;\n\n if(this.currentMapKey !== this.gameDataModel.player.map_key){\n this.currentMapKey = this.gameDataModel.player.map_key;\n this.adDisplay = true;\n }\n \n });\n\n this.gameUIServiceService.changeConfigEmitter.subscribe( (config_: ConfigModel)=> {\n this.config =config_;\n });\n\n this.isMobile = this.deviceService.isMobile();\n\n\n // Create our game class using the render canvas element\n this.game = new Game('renderCanvas');\n //alert(\"desktop: \"+this.deviceService.isDesktop()+\" mobile:\"+this.deviceService.isMobile()+\" tablet: \"+this.deviceService.isTablet());\n if(!this.deviceService.isDesktop()){\n this.game.activeJoystick();\n /*alert(\"desktop: \"+this.deviceService.isDesktop+\" mobile:\"+this.deviceService.isDesktop+\" tablet: \"+\n this.deviceService.isTablet);*/\n } \n \n this.game.setUIService(this.gameUIServiceService);\n this.game.setWebService(this.chanWebService); \n this.game.setOfflineService(this.offlineService); \n this.game.setClientUrl( this.clientURL );\n this.game.setMapKey(this.currentMapKey);\n this.game.setRouter(this.router);\n this.game.initGame();\n }\n\n @ViewChild('renderCanvas') renderCanvas: ElementRef;\n\n ngAfterViewInit(): void {\n \n //console.log(window.screen);\n this.renderCanvas.nativeElement.width = (window.screen.width);\n this.renderCanvas.nativeElement.height = (window.screen.availHeight);\n //console.log(JSON.stringify(window.screen));\n\n window.onresize = ()=>{\n this.renderCanvas.nativeElement.height = (window.screen.availHeight);\n this.renderCanvas.nativeElement.width = (window.screen.width);\n }\n}\n\n \n\n changeGameState(state_: number){\n this.gameState = state_;\n //console.log(\"this.gameState =\"+this.gameState );\n }\n\n receiveInteraction(inter_ : InteractionModel){\n this.currentinteraction = inter_;\n }\n\n /***** INTERACTION! ******/\n openUrl(){\n //window.open(this.currentinteraction.value, \"_blank\");\n this.gameState = 2;\n }\n\n openCMD(){\n this.gameUIServiceService.changeState(GameUIServiceService.STATE_CMD_UI);\n }\n\n climbLadder(){\n this.game.climbObject();\n }\n\n openDoor(){\n this.game.openDoor();\n }\n\n openPostingUI(){\n this.gameUIServiceService.changeState(GameUIServiceService.STATE_POSTING_UI);\n }\n\n openPaintingUI(){\n this.gameUIServiceService.changeState(GameUIServiceService.STATE_PAINTING_UI);\n }\n\n openInfoUI(){\n this.gameUIServiceService.changeState(GameUIServiceService.STATE_INFO_UI);\n }\n\n openPlayerUI(){\n this.gameUIServiceService.changeState(GameUIServiceService.STATE_PLAYER_UI);\n }\n\n onPin(event_){\n if(this.pinnedPostModel != null) this.pinnedPostModel = null;\n this.pinnedPostModel = event_;\n console.log( this.pinnedPostModel );\n }\n\n unPin(event_){\n //console.log( \"unpin\");\n this.pinnedPostModel = null\n }\n\n closeAd(event_){\n this.adDisplay = false;\n }\n\n changeMapping(){\n this.game.switchKeyMapping();\n }\n\n passGate(val_){\n this.game.passGet(val_);\n }\n\n getItem(key_){\n //console.log(\"get item\");\n this.game.getItem(key_);\n }\n\n addReply(id_){\n this.reply = id_;\n }\n\n destroyReply(){\n this.reply = -1;\n }\n\n @ViewChild('renderCanvas') elementCanvas:ElementRef;\n savePhoto(){\n\n alert(\"try to write picture\");\n let canvas = document.getElementById(\"renderCanvas\") as HTMLCanvasElement;\n console.log(canvas);\n \n //let photoUrl = canvas.getContext('2d').getImageData(0,0,600,600)\n let data = canvas.toDataURL('image/png');\n \n //document.location.href = photoUrl;\n console.log(data);\n let w=window.open('about:blank','Screen Capture');\n w.document.write(\"<img src='\"+data+\"' alt='from canvas'/>\");\n\n }\n\n gotTo(url_){\n window.open(url_, '_blank');\n }\n\n changeTalk(e_){\n console.log(e_);\n this.game.changeTalk(e_);\n }\n\n\n ngOnDestroy(){\n /*\n this.gameUIServiceService.changeStateEmitter.unsubscribe();\n this.gameUIServiceService.sendInteractionsEmitter.unsubscribe();\n this.gameUIServiceService.changeGameDataEmitter.unsubscribe();\n this.gameUIServiceService.changeConfigEmitter.unsubscribe();*/\n delete this.game;\n\n }\n}\n","module.exports = \".container{\\n /*background-image: \\n linear-gradient( rgba(0,0,0,.5), rgba(0, 0, 0, 0.6) ),\\n url(\\\"/assets/img/home_bg.jpeg\\\");*/\\n padding: 25px;\\n /*overflow: scroll;*/\\n -webkit-overflow-scrolling: touch;\\n color: white;\\n text-align: center;\\n}\\n\\ndiv {\\n margin-bottom: 8px;\\n}\\n\\n.overlay {\\n z-index: 1;\\n height: 100%;\\n width: 100%;\\n position: fixed;\\n overflow: auto;\\n top: 0px;\\n left: 0px;\\n background: rgba(0, 0, 0, 0.7); /*can be anything, of course*/\\n}\\n\\n#pres-screen {\\n\\n width : 100%;\\n text-align: center;\\n}\\n\\n#header {\\n color: white;\\n}\\n\\n#twitter {\\n width:550px;\\n margin: 20px auto;\\n}\"","module.exports = \"<div class=\\\"container\\\">\\n <div>\\n <h1>AnonIB💀3D</h1>\\n 超暴力的なファイル共有3 Dゲーム<br/>\\n by Ælx Krunch<br/>\\n [ <a href=\\\"https://twitter.com/alexkrunch\\\" target=\\\"blank_\\\">🐦 Twitter</a> ] [ <a href=\\\"http://snuffchan.com/blog/donations/\\\" target=\\\"blank_\\\">💴 Donations </a>]\\n </div>\\n\\n <div>\\n <button type=\\\"button\\\" class=\\\"btn btn-primary btn-lg\\\" (click)=\\\"launchGame()\\\">Press Start 🎮</button>\\n </div>\\n\\n <!--app-login></app-login-->\\n</div>\\n\"","import { Component, OnInit } from '@angular/core';\nimport { DeviceDetectorService } from 'ngx-device-detector';\nimport { environment } from '../../../environments/environment';\nimport {Router} from '@angular/router';\nimport { OfflineService } from 'src/app/services/offline.service';\n\n@Component({\n selector: 'app-home',\n templateUrl: './home.component.html',\n styleUrls: ['./home.component.css']\n})\nexport class HomeComponent implements OnInit {\n\n public isMobile:boolean = false;\n public isTOSAccepted: boolean = false;\n \n constructor(public deviceService: DeviceDetectorService, private router: Router,\n private offlineService: OfflineService) { }\n\n ngOnInit() {\n this.isMobile = this.deviceService.isMobile();\n let url = location.href;\n if(url.indexOf(environment.clientUrl) < 0){\n window.location.href = environment.clientUrl;\n }\n\n let playerData_ = this.offlineService.getPlayerData();\n if(playerData_ != null){\n this.isTOSAccepted = true;\n }\n }\n\n launchGame(){\n this.router.navigateByUrl('/ch/alpha');\n }\n\n}\n","module.exports = \".post-ui-message{\\n position:relative;\\n max-width: 650px;\\n left: 0;\\n right: 0;\\n margin: auto;\\n\\n padding : 10px;\\n margin-bottom : 18px;\\n background-color: rgb(189, 198, 247);\\n border-style: solid;\\n border-width: 1px;\\n border-color: #a99ec7;\\n border-radius: 5px;\\n\\n height: 100%;\\n overflow-y: auto;\\n}\\n\\n#container{\\n position:relative;\\n max-width: 650px;\\n left: 0;\\n right: 0;\\n margin: auto;\\n\\n padding : 10px;\\n margin-bottom : 18px;\\n background-color: rgb(189, 198, 247);\\n border-style: solid;\\n border-width: 1px;\\n border-color: #a99ec7;\\n border-radius: 5px;\\n\\n height: 100%;\\n overflow-y: auto;\\n}\\n\\ndiv {\\n margin-bottom: 8px;\\n}\\n\"","module.exports = \"<div id= \\\"container\\\">\\n\\n <div >\\n <h2>About Protaguro$</h2>\\n <div>\\n I am Alex Krunch, Imageboard lover since now ten years and I've created Protaguro$ (the project name will change soon)\\n In response to the growing and industrialized censorship on social medias. This whole 3D world is set to work as\\n an abstraction, protecting our LULZ from the outside. Soon I will make a blog explaining the whole ideology of the Project,\\n and also cool technical feature I will implement, like secrets board, items management and <i>torrenting files in game</i>.\\n\\n Keep in mind it's a prototype and than bug and database reset will be a frequent thing.\\n\\n You can keep news of THE PROJECT here:\\n <a href=\\\"https://twitter.com/alexkrunch\\\" target=\\\"blank_\\\">https://twitter.com/alexkrunch</a>\\n\\n You can also contact by mail at <b>monsieur.krunch@gmail.com</b>\\n </div>\\n\\n <div>\\n If you want to make a 💴 DONATION 💴 to the cause, here are the crypto address:<br/>\\n\\n <div class=\\\"card\\\">\\n <div class=\\\"card-body\\\">\\n Bitcoin address:<br/>\\n <b>bc1qwc7zaa4tfeertxwk46jv9meyup9ep9cre8l8p7</b><br/>\\n \\n Etherum:<br/>\\n <b>0xEE914adbb0A83e0FD8B90E292CAc6280D26b6b66</b><br/>\\n </div>\\n </div>\\n \\n </div>\\n <button (click)=\\\"closeCanvas()\\\">Close</button>\\n\\n</div>\\n\\n</div>\\n\"","import { Component, OnInit } from '@angular/core';\nimport { GameUIServiceService } from 'src/app/services/game-uiservice.service';\n\n@Component({\n selector: 'app-info-view',\n templateUrl: './info-view.component.html',\n styleUrls: ['./info-view.component.css']\n})\nexport class InfoViewComponent implements OnInit {\n\n constructor(private gameUIServiceService: GameUIServiceService) { }\n\n ngOnInit() {\n }\n\n closeCanvas(){\n this.gameUIServiceService.changeState(GameUIServiceService.STATE_GAME_RUNNING);\n }\n\n}\n","module.exports = \"#contentLogin{\\n text-align: center;\\n}\\n\\ndiv {\\n margin-bottom: 8px;\\n}\\n\\nbutton{\\n margin: 1px 1px 4px 1px;\\n }\\n\"","module.exports = \"<div id=\\\"contentLogin\\\" role=\\\"alert\\\">\\n\\n<div *ngIf=\\\"isLoading\\\">\\n Try to get a player token...\\n</div>\\n\\n <div class=\\\"alert alert-danger\\\" role=\\\"alert\\\" *ngIf=\\\"!isTOSAccepted\\\">\\n <b>-We do not allow CP / Non-ironical hatespeech / porn / doxxing / pirated content.</b><br/>\\n -You need to be +18 to access this game.<br/>\\n -Don't trust anythings written on the game, it's all fake news.<br/>\\n -Don't talk about the game.<br/>\\n -Keep in mind t's an experimental project, it will be often broke. For more information contact monsieur.krunch@gmail.com,\\n or check my twitter account, <a href=\\\"https://twitter.com/alexkrunch\\\" target=\\\"blank_\\\">@AlexKrunch</a>🚬<br/>\\n <button (click)=\\\"acceptTOS()\\\" type=\\\"button\\\" class=\\\"btn btn-danger\\\">OK, I get it</button>\\n </div>\\n\\n<div class=\\\"form-signin\\\" *ngIf=\\\"playerData == null && isTOSAccepted\\\" class=\\\"alert alert-primary\\\" >\\n <div class=\\\"input-group\\\">\\n <div class=\\\"input-group-prepend\\\">\\n <span class=\\\"input-group-text\\\">ID</span>\\n </div>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" [(ngModel)]= \\\"anonId\\\" placeholder=\\\"ID\\\">\\n </div>\\n <div class=\\\"input-group\\\">\\n <div class=\\\"input-group-prepend\\\">\\n <span class=\\\"input-group-text\\\">Token</span>\\n </div>\\n <input type=\\\"text\\\" class=\\\"form-control\\\" [(ngModel)]= \\\"anonToken\\\" placeholder=\\\"token\\\">\\n </div>\\n <div>\\n <button (click)=\\\"createUser()\\\" type=\\\"button\\\" class=\\\"btn btn-primary\\\">Existing User</button> or <button (click)=\\\"createNewUser()\\\" type=\\\"button\\\" class=\\\"btn btn-primary\\\">New User</button><br/>\\n </div>\\n <div class=\\\"form-label-group\\\">\\n <input type=\\\"password\\\" [(ngModel)]= \\\"password\\\" id=\\\"inputPassword\\\" class=\\\"form-control\\\" placeholder=\\\"Password (optional)\\\">\\n </div>\\n</div>\\n\\n<div *ngIf=\\\"playerData != null\\\" class=\\\"alert alert-primary\\\" >\\n What you get.. <br/>\\n Player ID #{{playerData.id}} <span *ngIf=\\\"playerData.is_admin\\\">🧠</span><br/>\\n Player token <b>{{playerData.player_key}}</b>\\n <br/>\\n <button (click) = \\\"validAndLaunchGame()\\\" class=\\\"btn btn-primary\\\">Launch game 🎮</button>\\n <button *ngIf=\\\"playerData.is_admin\\\" (click) = \\\"validAndLaunchAdmin()\\\" class=\\\"btn btn-primary\\\">Launch admin</button>\\n <button (click)=\\\"playerData = null\\\" class=\\\"btn btn-secondary\\\">Cancel</button>\\n</div>\\n\\n</div>\"","import { Component, OnInit } from '@angular/core';\nimport {Router} from '@angular/router';\nimport { ChanWebService } from 'src/app/services/chan-web.service';\nimport { OfflineService } from 'src/app/services/offline.service';\nimport { PlayerResponseModel } from '../../models/player.response.model';\nimport { PlayerModel } from '../../models/player.model';\nimport { GameDataResponseModel } from 'src/app/models/game-data.response.model';\n\n@Component({\n selector: 'app-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.css']\n})\nexport class LoginComponent implements OnInit {\n\n anonId: number;\n anonToken: string;\n password: string;\n\n errorWs: string;\n isLoading: boolean = false;\n isTOSAccepted: boolean = false;\n playerData: PlayerModel; \n\n constructor(private chanWebService: ChanWebService, private offlineService: OfflineService,\n private router: Router) { }\n\n ngOnInit() {\n\n let playerData_ = this.offlineService.getPlayerData();\n if(playerData_ != null){\n this.anonId = playerData_.id;\n this.anonToken = playerData_.player_key;\n this.isTOSAccepted = true;\n }\n\n }\n\n //Call the WS\n createUser(){\n console.log(\"createUser\");\n this.isLoading = true;\n this.chanWebService.createUser( this.anonId, this.anonToken, this.password, \"\" ).subscribe(\n //Data success\n (data : GameDataResponseModel) => {\n this.isLoading = false;\n if(data.ok){\n this.playerData = data.result.player;\n this.offlineService.savePlayer(this.playerData);\n } else {\n this.errorWs = data.error;\n }\n }\n );\n }\n\n //Call the WS\n createNewUser(){\n \n this.anonId = 0;\n this.anonToken =\"\";\n\n this.createUser();\n }\n\n validAndLaunchGame(){\n this.router.navigateByUrl('/ch/alpha');\n }\n\n validAndLaunchAdmin(){\n this.router.navigateByUrl('/admin-post');\n }\n\n acceptTOS(){\n this.isTOSAccepted = true;\n }\n\n}\n","module.exports = \"\"","module.exports = \"<div *ngIf=\\\"url != null && url != ''\\\">\\n<img *ngIf=\\\"urlParse.getUrlType() === 1 || urlParse.getUrlType() === 2\\\" [src]=\\\"url\\\"/>\\n\\n<audio *ngIf=\\\"urlParse.getUrlType() === 5\\\" controls=\\\"controls\\\">\\n <source [src]=\\\"url\\\" type=\\\"audio/mp3\\\" />\\n</audio>\\n\\n<video *ngIf=\\\"urlParse.getUrlType() === 3\\\" controls=\\\"controls\\\">\\n <source [src]=\\\"url\\\" type=\\\"video/mp4\\\" />\\n</video>\\n\\n<iframe *ngIf=\\\"urlParse.getUrlType() === 4\\\" [src]=\\\"safeTubeURL\\\" frameborder=\\\"0\\\" allow=\\\"accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture\\\" allowfullscreen></iframe>\\n</div>\\n\"","import { Component, OnInit, Input } from '@angular/core';\nimport { UrlParser } from 'src/app/utils/urlParser';\nimport { DomSanitizer } from '@angular/platform-browser';\n\n@Component({\n selector: 'app-media-display',\n templateUrl: './media-display.component.html',\n styleUrls: ['./media-display.component.css']\n})\nexport class MediaDisplayComponent implements OnInit {\n\n @Input() url : string;\n urlParse : UrlParser;\n safeTubeURL;\n\n constructor(private sanitizer : DomSanitizer) { }\n\n ngOnInit() {\n if(this.url != null){\n this.urlParse = new UrlParser(this.url);\n this.safeTubeURL = this.urlParse.getSafeTubeURL(this.sanitizer);\n }\n }\n\n}\n","module.exports = \".post-ui-message{\\n position:relative;\\n /*max-width: 480px;*/\\n left: 0;\\n right: 0;\\n margin: auto;\\n padding : 10px;\\n margin-bottom : 18px;\\n background: rgb(189, 198, 247);\\n border-style: solid;\\n border-width: 1px;\\n border-color: #a99ec7;\\n border-radius: 5px;\\n height: 95%;\\n overflow-y: auto;\\n}\\n\\n#canvas-right{\\n width: 460px;\\n position:absolute;\\n}\\n\\n#tool-right{\\n position:absolute;\\n width: 480px;\\n height: 100%;\\n left: 480px;\\n top: 0px;\\n}\\n\\ntextarea\\n{\\n width: 220px;\\n margin: 0;\\n}\\n\\n#painting-board {\\n width: 460px;\\n height: 460px;\\n /*background-color: whitesmoke;*/\\n background-image:\\n url(\\\"/assets/img/grid.png\\\");\\n\\n}\\n\\n#brush-size{\\n position: relative;\\n background-color: black;\\n width: 10px;\\n height: 10px;\\n}\\n\\nbutton{\\n margin: 1px 1px 4px 1px;\\n}\"","module.exports = \"<div class=\\\"post-ui-message\\\">\\n\\n<div id=\\\"canvas-left\\\">\\n<canvas #paintingCanvas id=\\\"painting-board\\\"\\n height=\\\"460px\\\" width=\\\"460px\\\"\\n touch-action=\\\"none\\\" tabindex=\\\"1\\\" style=\\\"touch-action: none;\\\">\\n <!--(document:mousemove)=\\\"canvasMouseMove( $event )\\\"-->\\n</canvas>\\n</div>\\n\\n<div id=\\\"tool-right\\\">\\n<button (click)=\\\"changeColor(colorRed)\\\">Red</button>\\n<button (click)=\\\"changeColor(colorBlack)\\\">Black</button>\\n<button (click)=\\\"changeColor(colorWhite)\\\">White</button>\\n<button (click)=\\\"changeColor(colorPink)\\\">Pink</button><br/>\\n<button (click)=\\\"changeColor(colorGreen)\\\">Green</button>\\n<button (click)=\\\"changeColor(colorBrown)\\\">Brown</button>\\n<button (click)=\\\"changeColor(colorPurple)\\\">Purple</button><br/>\\n<button (click)=\\\"changeColor(colorYellow)\\\">Yellow</button>\\n<button (click)=\\\"changeColor(colorBlue)\\\">Blue</button><br/>\\nPick a color: <input type=\\\"color\\\" [(ngModel)]=\\\"curColor\\\"><br/>\\n<input type=\\\"range\\\" name=\\\"points\\\" min=\\\"5\\\" max=\\\"100\\\" [(ngModel)]=\\\"strokeSize\\\">\\n<div id=\\\"brush-size\\\"\\n [style.width]=\\\"strokeSize+'px'\\\"\\n [style.height]=\\\"strokeSize+'px'\\\"> </div>\\n<br/>\\n<button (click)=\\\"clear()\\\">Clear</button><br/>\\n\\n<div *ngIf=\\\"reply >= 0\\\" ><i>reply to >>{{ reply }}</i> <span (click)=\\\" destroyReply()\\\"> 🗑️</span></div>\\nMessage: <br/>\\n<textarea id=\\\"message-text\\\" placeholder=\\\"Your text\\\" [(ngModel)]=\\\"postModel.message\\\" ></textarea><br/>\\n<button (click)=\\\"sendImg()\\\" class=\\\"btn btn-primary\\\">Paint the art!</button>\\n<button (click)=\\\"closeCanvas()\\\" class=\\\"btn btn-danger\\\">Close</button>\\n\\n</div>\\n\\n</div>\"","import { Component, OnInit, Input, ViewChild,ElementRef, Output, EventEmitter } from '@angular/core';\nimport {GameUIServiceService} from '../../services/game-uiservice.service'\nimport { InteractionModel } from '../../models/interaction-model';\nimport { PostModel } from 'src/app/models/post.model';\nimport { ChanWebService } from 'src/app/services/chan-web.service';\nimport { PostStuffResponseModel } from '../../models/postStuff.response.model';\nimport { DeviceDetectorService } from 'ngx-device-detector';\nimport 'pepjs'\nimport { Size } from 'babylonjs';\n\n@Component({\n selector: 'app-painting-ui',\n templateUrl: './painting-ui.component.html',\n styleUrls: ['./painting-ui.component.css']\n})\nexport class PaintingUiComponent implements OnInit {\n\n @Input() canvasKey: string;\n @Input() urlBgPicture: string;\n @Input() reply: number;\n @Output() onDestroyReply = new EventEmitter<number>();\n @ViewChild('paintingCanvas') elementCanvas:ElementRef;\n\n public imageBg;\n public context: CanvasRenderingContext2D;\n public isLoading : boolean = false;\n postModel: PostModel;\n private canvasPercent = 0;\n private isFinalExport: boolean = false;\n\n\n constructor(private gameUIServiceService : GameUIServiceService, private chanWebService: ChanWebService,\n private deviceService: DeviceDetectorService) { }\n\n ngOnInit() {\n\n this.postModel = new PostModel();\n this.postModel.map_key = \"\";\n this.postModel.canvas_key = this.canvasKey;\n this.postModel.message = \"\";\n this.postModel.graffiti = true;\n this.postModel.reply = this.reply;\n\n if(this.urlBgPicture != null){\n this.imageBg = new Image();\n this.imageBg.crossOrigin = \"Anonymous\";\n this.imageBg.src = this.urlBgPicture;\n console.log('this.urlBgPicture: '+this.urlBgPicture);\n this.imageBg.onload = () => {\n this.redraw();\n };\n }\n \n //is Mobile? We need to make teh mouse move with pepjs\n // if(!this.deviceService.isDesktop()){\n\n this.elementCanvas.nativeElement.addEventListener( \"pointerdown\", ( event_ ) => {\n this.paint = true;\n this.canvasMouseDown( event_ );\n });\n\n this.elementCanvas.nativeElement.addEventListener( \"pointermove\", ( event_ ) => {\n this.canvasMouseMove( event_ );\n });\n\n this.elementCanvas.nativeElement.addEventListener( \"pointerup\", ( event_ ) => {\n this.canvasMouseUp( event_ );\n });\n\n //}\n }\n\n ngAfterViewInit(): void {\n this.context = (<HTMLCanvasElement>this.elementCanvas.nativeElement).getContext('2d');\n }\n\n closeCanvas(){\n this.gameUIServiceService.changeState(GameUIServiceService.STATE_GAME_RUNNING);\n }\n \n getImg(){\n let data: string = this.elementCanvas.nativeElement.toDataURL(\"image/png\");\n data += \"snffch\";\n return data;\n }\n\n dataURItoBlob(dataURI) {\n const byteString = window.atob(dataURI);\n const arrayBuffer = new ArrayBuffer(byteString.length);\n const int8Array = new Uint8Array(arrayBuffer);\n for (let i = 0; i < byteString.length; i++) {\n int8Array[i] = byteString.charCodeAt(i);\n }\n const blob = new Blob([int8Array], { type: 'image/jpeg' }); \n return blob;\n }\n\n\n\n sendImg(){\n\n if( (this.clickX.length +this.clickY.length) < 200){\n alert(\"It's doesn't looks like a big drawing :( \");\n return;\n } \n\n this.isFinalExport = true;\n this.redraw();\n\n this.chanWebService.createAndUploadPaint( this.postModel, this.getImg() ).subscribe(\n //Data success\n (data : PostStuffResponseModel) => {\n //console.log(\"data:\"+data);\n let postStuffResponse : PostStuffResponseModel = data;\n if( postStuffResponse.ok ) {\n\n //console.log(\"result \"+JSON.stringify( postStuffResponse));\n this.destroyReply();\n this.closeCanvas();\n this.gameUIServiceService.forceWS();\n this.gameUIServiceService.changeState(GameUIServiceService.STATE_GAME_RUNNING);\n\n }\n this.isLoading = false;\n this.isFinalExport = false;\n \n },\n error => {\n //console.log(JSON.stringify(error));\n this.isLoading = false;\n this.isFinalExport = false;\n this.redraw();\n }\n );\n\n \n }\n\n /*****************\n * EVENT DEALING WITH PAINTING\n *****************/\n\n clickX = new Array();\n clickY = new Array();\n clickDrag = new Array();\n paint;\n\n clickDurationCurrent = 0;\n clickDurationList = new Array();\n\n //Colors\n colorRed = \"#df4b26\";\n colorPink = \"#ff8cd4\";\n colorBlack = \"#000000\";\n colorPurple = \"#cb3594\";\n colorGreen = \"#659b41\";\n colorYellow = \"#ffcf33\";\n colorBrown = \"#986928\";\n colorBlue = \"#0066ff\";\n colorWhite = \"#ffffff\";\n curColor = this.colorRed;\n clickColor = new Array();\n\n selectedColor = \"#000000\";\n\n clickSize = new Array();\n strokeSize: number = 10;\n\n canvasMouseDown( event_ ){\n\n let mouseX = event_.offsetX + (event_.offsetX * this.canvasPercent);\n let mouseY = event_.offsetY + (event_.offsetY* this.canvasPercent); \n this.paint = true;\n this.addClick(mouseX , mouseY , false);\n this.redraw();\n\n }\n\n canvasMouseUp( event_ ){\n this.paint = false;\n this.clickDurationList.push(this.clickDurationCurrent);\n this.clickDurationCurrent = 0;\n }\n\n canvasMouseMove( event_ ){\n\n if(this.paint){\n let mouseX = event_.offsetX + (event_.offsetX* this.canvasPercent);\n let mouseY = event_.offsetY + (event_.offsetY* this.canvasPercent);\n this.addClick(mouseX , mouseY, true);\n this.redraw();\n this.clickDurationCurrent += 1;\n }\n }\n\n addClick(x, y, dragging){\n\n this.clickX.push(x);\n this.clickY.push(y);\n this.clickDrag.push(dragging);\n //console.log(this.selectedColor);\n this.clickColor.push(this.curColor);\n this.clickSize.push(this.strokeSize);\n }\n\n redraw(){\n\n this.context.clearRect(0, 0, this.context.canvas.width, this.context.canvas.height); // Clears the canvas\n this.context.lineJoin = \"round\";\n this.context.lineWidth = 10;\n\n //set bg image if it exist\n \n if(this.imageBg && !this.isFinalExport){\n\n let ratio;\n let newWidth;\n let newHeight;\n let newX = 0;\n let newY = 0;\n\n if(this.imageBg.height > this.imageBg.width) {\n\n ratio = this.elementCanvas.nativeElement.height / this.imageBg.height;\n newWidth = this.imageBg.width * ratio;\n newHeight = this.imageBg.height * ratio;\n newX = (newWidth - this.elementCanvas.nativeElement.width) * (-0.5);\n\n } else {\n\n ratio = this.elementCanvas.nativeElement.width / this.imageBg.width;\n newWidth = this.imageBg.width * ratio;\n newHeight = this.imageBg.height * ratio;\n newY = (newHeight - this.elementCanvas.nativeElement.height ) * (-0.5);\n\n }\n\n this.context.drawImage(this.imageBg, newX, newY,newWidth, newHeight );\n }\n \n for(var i=0; i < this.clickX.length; i++) {\n this.context.beginPath();\n if(this.clickDrag[i] && i > 0){\n this.context.moveTo(this.clickX[i-1], this.clickY[i-1]);\n }else{\n this.context.moveTo(this.clickX[i], this.clickY[i]);\n }\n this.context.lineTo(this.clickX[i], this.clickY[i]);\n this.context.closePath();\n this.context.strokeStyle = this.clickColor[i];\n this.context.lineWidth = this.clickSize[i];\n this.context.stroke();\n }\n }\n\n /*****************\n * DEALING with painting style\n *****************/\n\n changeColor(color_){\n this.curColor = color_;\n }\n\n clear(){\n \n if(this.clickDurationList.length > 0){\n let lastDuration = this.clickDurationList.pop();\n this.clickColor = this.clickColor.slice(0, this.clickColor.length-lastDuration-1);\n this.clickX = this.clickX.slice(0, this.clickX.length-lastDuration-1);\n this.clickY = this.clickY.slice(0, this.clickY.length-lastDuration-1);\n this.clickDrag = this.clickDrag.slice(0, this.clickDrag.length-lastDuration-1);\n this.clickSize = this.clickSize.slice(0, this.clickSize.length-lastDuration-1);\n this.redraw();\n }\n \n }\n\n destroyReply(){\n this.reply = -1;\n this.onDestroyReply.emit(-1);\n }\n\n}\n","module.exports = \"#container{\\n position: absolute;\\n margin: auto;\\n max-width: 650px;\\n left: 0;\\n right: 0;\\n height: 100%;\\n}\"","module.exports = \"<app-posting-ui id=\\\"container\\\" *ngIf=\\\"this.playerModel != null\\\" [isPhonePosting]=\\\"true\\\" [canvasKey]=\\\"canvasKey\\\" ></app-posting-ui>\"","import { Component, OnInit } from '@angular/core';\nimport { ChanWebService } from 'src/app/services/chan-web.service';\nimport {ActivatedRoute} from \"@angular/router\";\nimport { PlayerInterfaceComponent } from 'src/app/interfaces/player-interface/player-interface.component';\nimport { PlayerModel } from 'src/app/models/player.model';\nimport { OfflineService } from 'src/app/services/offline.service';\n\n@Component({\n selector: 'app-phone-poster',\n templateUrl: './phone-poster.component.html',\n styleUrls: ['./phone-poster.component.css']\n})\nexport class PhonePosterComponent implements OnInit {\n\n public playerId: string;\n public playerKey: string;\n public playerModel: PlayerModel;\n public canvasKey: string;\n\n constructor(private offlineService : OfflineService, private route: ActivatedRoute) {\n this.route.params.subscribe( params => {\n this.playerId = params['id'];\n this.playerKey = params['key'];\n this.canvasKey = params['canvas'];\n\n //set the player model, at it to offline\n this.playerModel = new PlayerModel();\n this.playerModel.id = Number(this.playerId);\n this.playerModel.player_key = this.playerKey;\n this.offlineService.savePlayer( this.playerModel);\n });\n }\n\n ngOnInit() {\n\n }\n\n}\n","module.exports = \"::ng-deep .img-pin img, .img-pin video, .img-pin iframe, .img-pin audio {\\n max-width: 300px;\\n max-height: 300px;\\n}\"","module.exports = \"<div *ngIf=\\\"postModel && postModel.url != undefined\\\">\\n<app-media-display class=\\\"img-pin\\\" [url]=\\\"postModel.url\\\" ></app-media-display>\\n<!--button type=\\\"button\\\" class=\\\"btn btn-danger\\\" (click) = \\\"closePost()\\\" >Close</button-->\\n</div>\"","import { Component, EventEmitter, OnInit, Input, Output } from '@angular/core';\nimport {PostModel} from '../../models/post.model';\n\n@Component({\n selector: 'app-pin-post-ui',\n templateUrl: './pin-post-ui.component.html',\n styleUrls: ['./pin-post-ui.component.css']\n})\nexport class PinPostUiComponent implements OnInit {\n\n @Input() postModel: PostModel;\n @Output() close = new EventEmitter<boolean>();\n\n constructor() { }\n\n ngOnInit() {\n\n }\n\n ngOnChanges(changes: any) {\n\n if(changes != null && changes.postModel != null){\n this.postModel = changes.postModel.currentValue;\n }\n\n }\n\n closePost(){\n this.close.emit();\n }\n\n}\n","module.exports = \".post-viewer-ui-message{\\n position:relative;\\n /*max-width: 650px;*/\\n left: 0;\\n right: 0;\\n margin: auto;\\n padding : 10px;\\n margin-bottom : 18px;\\n background: rgb(247, 189, 225);\\n border-style: solid;\\n border-width: 1px;\\n border-color: #c79eb7;\\n border-radius: 5px;\\n height: 95%;\\n width: 100%;\\n overflow-y: auto;\\n }\\n\\n.spoil{\\n width: 100%;\\n background-color: rgb(71, 71, 71);\\n color: rgb(71, 71, 71);\\n}\"","module.exports = \"<div class=\\\"post-viewer-ui-message\\\">\\n \\n <div><b> You are 👺 #{{gameDataModel.player.id}} <span *ngIf=\\\"gameDataModel.player.is_admin\\\">🧠</span>\\n 💉 HP: {{gameDataModel.player.hp}}% </b></div>\\n <div><b>token 🗝️ <span class=\\\"spoil\\\">{{gameDataModel.player.player_key}}</span></b></div>\\n <i>If you want to play on the new machine, just copy and past this ID and Token and enter them when you reconnect.</i>\\n <br/>\\n <div>🎒 inventory, the items you own</div>\\n ------------------------------------------<br/>\\n <div *ngFor=\\\"let item of gameDataModel.itemsPlayer\\\">\\n <b>💍 {{item.name}}</b>\\n quantity: {{item.value}}<br/>\\n action: {{item.action}}<br/>\\n description: {{item.description}}<br/>\\n </div>\\n ------------------------------------------<br/>\\n\\n <button type=\\\"button\\\" class=\\\"btn btn-danger\\\" (click) = \\\"close()\\\" >Close</button>\\n</div>\"","import { Component, OnInit, Input } from '@angular/core';\nimport { GameDataModel } from '../../models/game-data.model';\nimport { GameUIServiceService } from 'src/app/services/game-uiservice.service';\n\n@Component({\n selector: 'app-player-ui',\n templateUrl: './player-ui.component.html',\n styleUrls: ['./player-ui.component.css']\n})\nexport class PlayerUiComponent implements OnInit {\n\n @Input() gameDataModel: GameDataModel;\n\n constructor(private gameUIServiceService: GameUIServiceService) { }\n\n ngOnInit() {\n }\n\n close(){\n this.gameUIServiceService.changeState(GameUIServiceService.STATE_GAME_RUNNING);\n }\n\n}\n","module.exports = \".post-viewer-ui-message{\\n position:relative;\\n /*max-width: 650px;*/\\n left: 0;\\n right: 0;\\n margin: auto;\\n padding : 10px;\\n margin-bottom : 18px;\\n background: rgb(189, 198, 247);\\n border-style: solid;\\n border-width: 1px;\\n border-color: #a99ec7;\\n border-radius: 5px;\\n height: 95%;\\n width: 100%;\\n overflow-y: auto;\\n }\\n\\ndiv {\\n margin-bottom: 8px;\\n}\\n\\n#message-ascii {\\n max-width: 650px;\\n font-family: monospace;\\n white-space: pre;\\n}\\n\\n::ng-deep .img-preview img, .img-preview video, .img-preview iframe, .img-preview audio {\\n max-width: 600px;\\n max-height: 400px;\\n}\\n\\nbutton{\\n margin: 1px 1px 4px 1px;\\n }\"","module.exports = \"<div class= \\\"post-viewer-ui-message\\\" *ngIf=\\\"postModel && postModel.url != undefined\\\">\\n\\n <div *ngIf=\\\"(!postModelList.length || postModelList.length == 0) && postModel != null\\\">\\n <a href=\\\"#\\\" onclick=\\\"return false;\\\" (click)=\\\"reply(postModel)\\\">>>{{postModel.id}}</a> <span *ngIf=\\\"postModel.is_canon\\\">Δ</span>, by <i>#{{postModel.player_id}}</i><br/>\\n <div *ngIf=\\\"postModel.reply >= 0\\\" ><i>Reply to >>{{ postModel.reply }}</i></div>\\n <div id=\\\"message-ascii \\\">{{postModel.message}}</div>\\n <br/>\\n <!--img id=\\\"img-preview\\\" [src]=\\\"imgValue\\\"/-->\\n <app-media-display *ngIf=\\\"postModel != null\\\" class=\\\"img-preview\\\" [url]=\\\"postModel.url\\\" ></app-media-display>\\n <br/>\\n URL:<a placeholder=\\\"Your file url\\\" [href]=\\\"postModel.url\\\"> {{postModel.url}} </a><br/>\\n <i>To report content, write to monsieur.krunch@gmail.com, mentionning the ID of the post.</i><br/>\\n <button type=\\\"button\\\" class=\\\"btn btn-secondary\\\" (click) = \\\"pinPost(postModel)\\\" >Pin the post</button><button type=\\\"button\\\" class=\\\"btn btn-danger\\\" (click) = \\\"closePost()\\\" >Close</button><br/>\\n -----------------------------------------------------<br/>\\n <div>\\n <button *ngIf=\\\"canDelete()\\\" type=\\\"button\\\" class=\\\"btn\\\" (click) = \\\"deletePost(postModel)\\\" >Delete the post 🗑️</button>\\n <button *ngIf=\\\"isAdmin()\\\"type=\\\"button\\\" class=\\\"btn\\\" (click) = \\\"canonPost(postModel.id,postModel.map_key)\\\" >Active or Disactive canon status Δ</button>\\n <button *ngIf=\\\"isAdmin()\\\"type=\\\"button\\\" class=\\\"btn\\\" (click) = \\\"setPostUrlToFile(postModel.id)\\\" >Transform URL to File 🧙</button>\\n <!--button type=\\\"button\\\" class=\\\"btn\\\" (click) = \\\"banPost()\\\" >Ban user 🔨</button-->\\n </div>\\n </div>\\n\\n <div *ngFor=\\\"let post of postModelList\\\">\\n <a href=\\\"#\\\" onclick=\\\"return false;\\\" (click)=\\\"reply(post)\\\">>>{{post.id}}</a> <span *ngIf=\\\"post.is_canon\\\">Δ</span> by <i>#{{post.player_id}}</i><br/>\\n <div *ngIf=\\\"post.reply >= 0\\\" ><i>Reply to >>{{ post.reply }}</i></div>\\n <div id=\\\"message-ascii \\\">{{post.message}}</div>\\n <br/>\\n <app-media-display *ngIf=\\\"post.url != null && post.url != '' \\\" class=\\\"img-preview\\\" [url]=\\\"post.url\\\" ></app-media-display>\\n <br/>\\n URL:<a placeholder=\\\"Your file url\\\" [href]=\\\"post.url\\\"> {{post.url}} </a><br/>\\n <i>To report content, write to monsieur.krunch@gmail.com, mentionning the ID of the post.</i><br/>\\n <button type=\\\"button\\\" class=\\\"btn btn-secondary\\\" (click) = \\\"pinPost(post)\\\" >Pin the post</button> <button type=\\\"button\\\" class=\\\"btn btn-danger\\\" (click) = \\\"closePost()\\\" >Close</button><br/>\\n -----------------------------------------------------<br/>\\n <div>\\n <button *ngIf=\\\"canDelete()\\\" type=\\\"button\\\" class=\\\"btn\\\" (click) = \\\"deletePost(post)\\\" >Delete the post 🗑️</button>\\n <button *ngIf=\\\"isAdmin()\\\"type=\\\"button\\\" class=\\\"btn\\\" (click) = \\\"canonPost(post.id,post.map_key)\\\" >Active or Disactive canon status Δ</button>\\n <button *ngIf=\\\"isAdmin()\\\"type=\\\"button\\\" class=\\\"btn\\\" (click) = \\\"setPostUrlToFile(post.id)\\\" >Transform URL to File 🧙</button>\\n <!--button type=\\\"button\\\" class=\\\"btn\\\" (click) = \\\"banPost()\\\" >Ban user 🔨</button-->\\n </div>\\n </div>\\n\\n</div>\"","import { Component, OnInit, Input, EventEmitter, Output} from '@angular/core';\nimport {PostModel} from '../../models/post.model';\nimport {GameUIServiceService} from '../../services/game-uiservice.service'\nimport { UrlParser } from 'src/app/utils/urlParser';\nimport { ChanWebService } from 'src/app/services/chan-web.service';\nimport { GenericResponseModel } from 'src/app/models/generic.response.model';\nimport { PostListResponseModel } from 'src/app/models/post-list.response.model';\nimport { GameDataModel } from '../../models/game-data.model';\nimport { PlayerInterfaceComponent } from '../../interfaces/player-interface/player-interface.component';\n\n@Component({\n selector: 'app-post-viewer-ui',\n templateUrl: './post-viewer-ui.component.html',\n styleUrls: ['./post-viewer-ui.component.css']\n})\nexport class PostViewerUiComponent extends PlayerInterfaceComponent implements OnInit {\n\n @Input() postModel: PostModel;\n @Input() gameData: GameDataModel;\n @Output() pin = new EventEmitter<boolean>();\n @Output() onReply = new EventEmitter<number>();\n imgValue : string;\n urlParse : UrlParser;\n postModelList: PostModel[] = [];\n\n constructor(private gameUIServiceService : GameUIServiceService, private chanWebService : ChanWebService ) {\n super();\n }\n\n ngOnInit() {\n\n if(this.postModel){\n this.imgValue = new UrlParser(this.postModel.url).getImage();\n this.chanWebService.getReplyPostList(this.postModel.id).subscribe( (data_: PostListResponseModel) =>{\n console.log(data_);\n if(data_.result){\n if(data_.result.length && data_.result.length >0){\n if(data_.result[0].id != null) this.postModelList = data_.result;\n }\n\n }\n })\n } \n }\n\n ngOnChanges(changes: any) {\n\n if(changes != null && changes.postModel != null){\n this.postModel = changes.postModel.currentValue;\n if(this.postModel != null || this.postModel != undefined) this.imgValue = new UrlParser(this.postModel.url).getImage();\n }\n\n }\n\n closePost(){\n this.gameUIServiceService.changeState(GameUIServiceService.STATE_GAME_RUNNING);\n }\n\n pinPost(postModel_){\n this.pin.emit(postModel_);\n }\n\n private postToDelete;\n deletePost(postModel_){\n\n this.postToDelete = postModel_;\n console.log(\"this.postToDelete:\"+this.postToDelete);\n this.chanWebService.deletePost(postModel_.id,postModel_.map_key).subscribe(\n //Data success\n (data : GenericResponseModel) => {\n this.gameUIServiceService.deletePost( this.postToDelete);\n this.gameUIServiceService.forceWS();\n this.gameUIServiceService.changeState(GameUIServiceService.STATE_GAME_RUNNING);\n });\n }\n\n canonPost(id_, thread_){\n this.chanWebService.canonPost(id_, thread_).subscribe(\n //Data success\n (data : GenericResponseModel) => {\n this.gameUIServiceService.forceWS();\n this.gameUIServiceService.changeState(GameUIServiceService.STATE_GAME_RUNNING);\n });\n }\n\n banPost(){\n \n }\n\n setPostUrlToFile(id_){\n this.chanWebService.setPostUrlToFile(id_).subscribe(\n //Data success\n (data : GenericResponseModel) => {\n alert(data);\n });\n }\n\n reply(postModel_: PostModel){\n console.log(postModel_.id);\n this.onReply.emit(postModel_.id);\n this.gameUIServiceService.changeState(GameUIServiceService.STATE_GAME_RUNNING);\n }\n\n}\n","module.exports = \".post-ui-message{\\n position:relative;\\n max-width: 650px;\\n left: 0;\\n right: 0;\\n margin: auto;\\n\\n padding : 10px;\\n margin-bottom : 18px;\\n background-color: rgb(189, 198, 247);\\n border-style: solid;\\n border-width: 1px;\\n border-color: #a99ec7;\\n border-radius: 5px;\\n\\n height: 100%;\\n overflow-y: auto;\\n }\\n\\ndiv {\\n margin-bottom: 8px;\\n}\\n\\ntextarea\\n{\\n width: 100%;\\n margin: 0;\\n}\\n\\n.post-message {\\n padding : 10px;\\n margin-bottom : 18px;\\n background: rgb(228, 221, 221);\\n border-style: solid;\\n border-width: 1px;\\n border-color: rgb(131, 123, 123);\\n border-radius: 5px;\\n}\\n\\n.img-preview{\\n max-width: 200px;\\n max-height: 200px;\\n}\\n\\n.post-torrent-info{\\n font-family: 'Courier New', Courier, monospace;\\n font-size: small;\\n padding : 8px;\\n color: white;\\n background:rgb(70, 61, 56);\\n border-radius: 5px;\\n}\\n\\n.post-message img {\\n max-width: 650px;\\n width: 100%;\\n height: auto;\\n}\\n\\n.post-message video {\\n max-width: 650px;\\n width: 100%;\\n height: auto;\\n}\\n\\n.post-message audio {\\n max-width: 650px;\\n width: 100%;\\n}\\n\\nbutton{\\n margin: 1px 1px 4px 1px;\\n }\"","module.exports = \"<div class= \\\"post-ui-message\\\">\\n\\n <div *ngIf=\\\"!isLoading && !postingFinished\\\">\\n <!-- {{canvasKey}}<br/>\\n <Name: <br/>\\n <input id=\\\"message-name\\\" placeholder=\\\"Anonymous\\\" [(ngModel)]=\\\"postModel.name\\\" ><br/>-->\\n <div *ngIf=\\\"reply >= 0\\\" ><i>reply to >>{{ reply }}</i> <span (click)=\\\"destroyReply()\\\"> 🗑️</span></div>\\n Message: <br/>\\n <textarea id=\\\"message-text\\\" placeholder=\\\"Your text\\\" [(ngModel)]=\\\"postModel.message\\\" ></textarea>\\n <br/>\\n\\n <div *ngIf=\\\"canUpload()\\\">\\n <input #messageHost id=\\\"message-host\\\" type=\\\"checkbox\\\" [checked]=\\\"hostFile\\\" (change)=\\\"changeHost(messageHost.checked)\\\" >Host on chan<br/>\\n </div>\\n <img *ngIf=\\\"postModel.url != null && !hostFile\\\" class=\\\"img-preview\\\" [src]=\\\"urlParse.setUrl(postModel.url).getImage()\\\"><br/>\\n <img *ngIf=\\\"fileBase64Url != null && hostFile\\\" class=\\\"img-preview\\\" [src]=\\\"fileBase64Url\\\"><br/>\\n \\n\\n <div *ngIf=\\\"!hostFile && !isPhonePosting\\\">\\n File URL: <br/>\\n <input id=\\\"file-url\\\" type=\\\"url\\\" placeholder=\\\"Your file url\\\" [(ngModel)]=\\\"postModel.url\\\" ><br/>\\n </div>\\n \\n <div *ngIf=\\\"hostFile || isPhonePosting\\\">\\n File From the computer: <br/>\\n <input #file id=\\\"file\\\" name=\\\"file\\\" type=\\\"file\\\" accept='image/*' (change)=\\\"preview(file.files)\\\" /><br/>\\n\\n <a href=\\\"{{getPhoneLink()}}\\\" target=\\\"blank_\\\">Open phone posting link!</a><br/>\\n <qrcode [qrdata]=\\\"getPhoneLink()\\\" [size]=\\\"256\\\" [level]=\\\"'M'\\\"></qrcode><br/>\\n\\n </div>\\n\\n <!--Is the post NSFW: <input type=\\\"checkbox\\\" [(ngModel)]=\\\"postModel.nsfw\\\"><br/-->\\n <button type=\\\"submit\\\" type=\\\"button\\\" class=\\\"btn btn-primary\\\" (click) = \\\"sendPost()\\\" >Post</button>\\n <button type=\\\"button\\\" class=\\\"btn btn-danger\\\" (click) = \\\"cancelPost()\\\" >Cancel</button>\\n\\n </div>\\n\\n <div *ngIf=\\\"isLoading\\\">\\n Posting in progress..\\n <div class=\\\"progress\\\">\\n <div class=\\\"progress-bar progress-bar-striped bg-primary\\\" role=\\\"progressbar\\\" style=\\\"width: 100%; height: 100%;\\\"\\n aria-valuenow=\\\"100\\\" aria-valuemin=\\\"0\\\" aria-valuemax=\\\"100\\\"></div>\\n </div>\\n </div>\\n\\n <div *ngIf=\\\"!isLoading && postingFinished\\\">\\n Your message has been posted! thanks for your contribution!\\n </div>\\n\\n \\n\\n </div>\\n\"","import { Component, OnInit, Input, Inject, EventEmitter, Output} from '@angular/core';\nimport {GameUIServiceService} from '../../services/game-uiservice.service'\nimport {PostModel} from '../../models/post.model';\nimport {PostStuffResponseModel} from '../../models/postStuff.response.model';\nimport { ChanWebService } from 'src/app/services/chan-web.service';\nimport { UrlParser } from 'src/app/utils/urlParser';\nimport { PlayerInterfaceComponent } from '../../interfaces/player-interface/player-interface.component';\nimport { Router } from '@angular/router'; \nimport { OfflineService } from 'src/app/services/offline.service';\nimport { PlayerModel } from 'src/app/models/player.model';\nimport {DOCUMENT} from '@angular/platform-browser';\nimport { environment } from '../../../environments/environment';\n\n\n@Component({\n selector: 'app-posting-ui',\n templateUrl: './posting-ui.component.html',\n styleUrls: ['./posting-ui.component.css']\n})\nexport class PostingUIComponent extends PlayerInterfaceComponent implements OnInit {\n\n @Input() canvasKey: string;\n @Input() reply: number;\n @Output() onDestroyReply = new EventEmitter<number>();\n\n public postModel: PostModel;\n isLoading: boolean = false;\n postingFinished: boolean = false;\n hostFile: boolean = false;\n urlParse: UrlParser;\n\n //For files\n file;\n imagePath;\n fileBase64Url;\n\n constructor(private gameUIServiceService : GameUIServiceService,\n private chanWebService: ChanWebService,\n private router : Router,\n private offlineService: OfflineService,\n @Inject(DOCUMENT) private document: Document) {\n super();\n }\n\n ngOnInit() {\n this.postModel = new PostModel();\n this.urlParse = new UrlParser(this.postModel.url);\n this.postModel.canvas_key = this.canvasKey;\n this.postModel.reply = this.reply;\n }\n\n ngOnChanges(changes: any) {\n\n if(this.postModel != null && changes.canvasKey != null) this.postModel.canvas_key = changes.canvasKey.currentValue;\n if(this.isPhonePosting) this.hostFile = true;\n\n }\n\n changeHost(val_:boolean){\n this.hostFile = val_;\n }\n\n preview(files) {\n if (files.length === 0)\n return;\n \n var mimeType = files[0].type;\n if (mimeType.match(/image\\/*/) == null) {\n alert( \"Only images are supported.\");\n return;\n }\n \n var reader = new FileReader();\n this.imagePath = files;\n reader.readAsDataURL(files[0]); \n reader.onload = (_event) => { \n //console.log(reader.result.toString());\n this.fileBase64Url = reader.result.toString(); \n }\n }\n\n sendPost(){\n //this.gameUIServiceService.sendPost(this.postModel);\n console.log(this.file);\n\n if(this.fileBase64Url == null && !this.postModel.url && !this.postModel.message){\n alert(\"It's doesn't looks like a big post :( \");\n return;\n }\n \n this.isLoading = true;\n\n //Use this.\n if(this.hostFile) {\n\n //To host\n this.chanWebService.createAndUploadPaint( this.postModel, this.fileBase64Url ).subscribe(\n //Data success\n (data : PostStuffResponseModel) => {\n \n let postStuffResponse : PostStuffResponseModel = data;\n if( postStuffResponse.ok ) {\n this.destroyReply();\n //console.log(\"result \"+JSON.stringify( postStuffResponse));\n this.gameUIServiceService.forceWS();\n this.gameUIServiceService.changeState(GameUIServiceService.STATE_GAME_RUNNING);\n\n }\n this.isLoading = false;\n this.postingFinished = true;\n \n },\n error => {\n console.log(JSON.stringify(error));\n this.isLoading = false;\n }\n );\n\n } else {\n //Not hosting\n this.chanWebService.createPost( this.postModel ).subscribe(\n //Data success\n (data : PostStuffResponseModel) => {\n \n let postStuffResponse : PostStuffResponseModel = data;\n if( postStuffResponse.ok ) {\n \n //console.log(\"result \"+JSON.stringify( postStuffResponse));\n this.destroyReply();\n //We clean the fields\n this.postModel.url = \"\";\n this.postModel.message = \"\";\n this.gameUIServiceService.forceWS();\n this.gameUIServiceService.changeState(GameUIServiceService.STATE_GAME_RUNNING);\n }\n this.isLoading = false;\n this.postingFinished = true;\n \n },\n error => {\n console.log(JSON.stringify(error));\n this.isLoading = false;\n }\n );\n }\n \n\n }\n\n cancelPost(){\n this.gameUIServiceService.changeState(GameUIServiceService.STATE_GAME_RUNNING);\n }\n\n getPhoneLink(){\n let playerModel: PlayerModel = this.offlineService.getPlayerData();\n let phonePostingUrl = environment.clientUrl+\"phone-poster/\"+playerModel.id+\"/\"+playerModel.player_key+\"/\"+this.postModel.canvas_key;\n return phonePostingUrl;\n }\n\n destroyReply(){\n console.log(\"destroyReply()\");\n this.reply = -1;\n this.onDestroyReply.emit(-1);\n }\n}\n","module.exports = \".disable-select {\\n user-select: none; /* supported by Chrome and Opera */\\n -webkit-user-select: none; /* Safari */\\n -khtml-user-select: none; /* Konqueror HTML */\\n -moz-user-select: none; /* Firefox */\\n -ms-user-select: none; /* Internet Explorer/Edge */\\n}\"","module.exports = \"<span class=\\\"disable-select\\\" (click)=\\\"paint()\\\">{{tileDisplay}}</span>\\n\"","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { TileModel } from 'src/app/models/tile.model';\n\n@Component({\n selector: 'app-tile-edit',\n templateUrl: './tile-edit.component.html',\n styleUrls: ['./tile-edit.component.css']\n})\nexport class TileEditComponent implements OnInit {\n\n @Input() tileValue;\n @Input() tileBrush;\n \n @Input() x;\n @Input() y;\n @Output() valueChange = new EventEmitter();\n\n @Input() allTiles: TileModel[] = [];\n public tileDisplay: string = \"\";\n\n constructor() { }\n\n ngOnInit() {\n }\n\n paint(){\n //this.tileValue = this.tileBrush;\n this.valueChange.emit( {x: this.x, y:this.y});\n //this.updateDisplay();\n }\n \n ngOnChanges(){\n this.updateDisplay();\n }\n\n updateDisplay(){\n if(this.allTiles != null) {\n this.allTiles.forEach(tile => {\n if(tile.value == this.tileValue){\n this.tileDisplay = tile.display;\n return;\n }\n });\n }\n }\n}\n","module.exports = \"\"","module.exports = \"\"","import { Component, OnInit, Input } from '@angular/core';\nimport { PlayerModel } from 'src/app/models/player.model';\nimport ItemModel from 'src/app/models/item.model';\nimport {Constants} from 'src/app/utils/constants';\nimport { GameDataModel } from '../../models/game-data.model';\n\n@Component({\n selector: 'app-player-interface',\n templateUrl: './player-interface.component.html',\n styleUrls: ['./player-interface.component.css']\n})\nexport class PlayerInterfaceComponent implements OnInit {\n\n @Input() gameDataModel: GameDataModel = new GameDataModel();\n @Input() isPhonePosting: boolean;\n\n constructor() { }\n\n ngOnInit() {\n if( this.gameDataModel == null) this.gameDataModel = new GameDataModel();\n }\n\n\n //test\n canDelete(){\n\n if(this.gameDataModel.player.is_admin) return true;\n\n for (let item of this.gameDataModel.itemsPlayer) {\n if(item.action.toLowerCase().indexOf(Constants.ITEM_KEY_DELETE_SPONGE) >= 0 ) return true;\n }\n\n return false;\n\n }\n\n canFav(){\n \n if(this.gameDataModel.player.is_admin) return true;\n\n for (let item of this.gameDataModel.itemsPlayer) {\n if(item.action.toLowerCase().indexOf(Constants.ITEM_KEY_VARNISH) >= 0 ) return true;\n }\n\n return false;\n\n }\n\n canUpload(){\n\n if(this.gameDataModel.player.is_admin || this.isPhonePosting) return true;\n\n for (let item of this.gameDataModel.itemsPlayer) {\n if(item.action.toLowerCase().indexOf(Constants.ITEM_KEY_UPLOAD_RING) >= 0 ) return true;\n }\n\n return false;\n }\n\n isAdmin(){\n if(this.gameDataModel.player.is_admin) return true;\n\n return false;\n }\n\n}\n","export class ActionModel {\n\n id: number;\n last_action: number;\n name: string;\n player_id: number;\n value: string;\n action: string;\n\n \n}","export class ConfigModel {\n\n //Adding all stuff than are not stored Offline\n public key_mapping: string;\n public server_url: string;\n\n}","import { PostModel } from './post.model';\nimport { PlayerModel } from './player.model';\nimport ItemModel from './item.model';\nimport {MapModel} from './map.model';\nimport {ActionModel} from './action.model';\n\nexport class GameDataModel {\n\n player: PlayerModel = new PlayerModel();\n players: PlayerModel[];\n posts: PostModel[];\n postsLeft: number;\n itemsPlayer: ItemModel[]= [];\n itemsMap: ItemModel[];\n map: MapModel[];\n actions: ActionModel[];\n \n}","export class InteractionModel {\n\n public description: string;\n public value: any;\n public type: number;\n\n public static get TYPE_NONE():number { return 0; }\n public static get TYPE_CANVAS_FULL():number { return 1; }\n public static get TYPE_CANVAS_VIRGIN():number { return 2; }\n public static get TYPE_CLIMB_LADDER():number { return 3; }\n public static get TYPE_OPEN_DOOR():number { return 4; }\n public static get TYPE_GET_ITEM():number { return 5; }\n public static get TYPE_PASS_GATE():number { return 6; }\n public static get TYPE_PANEL():number { return 7; }\n public static get TYPE_CANVAS_TO_GRAFF():number { return 8; }\n public static get TYPE_AD():number { return 9; }\n\n}","import ItemModel from './item.model';\n\nexport class PlayerModel {\n\n public id: number;\n public name: string;\n public talk: string;\n public is_admin: boolean;\n public player_key: string;\n public map_key: string;\n public last_action: number;\n public hp: number;\n public position_x: number;\n public position_y: number;\n public position_z: number;\n\n}","export class PostModel {\n\n id: number;\n reply: number;\n player_id: number;\n player_name: string;\n name: string;\n key: string;\n canvas_key: string;\n date: number;\n map_key: string = \"\";\n message: string = \"\";\n url: string = \"\";\n preview: string = \"\";\n nsfw: boolean = false;\n graffiti: boolean = false;\n is_canon: boolean = false;\n\n magnet: string;\n torrent: string;\n hash: string;\n player_ip: string;\n\n was_deleted: boolean = false;\n\n}","import {\n Engine, Scene,FreeCamera, Light,\n DirectionalLight, HemisphericLight, ShadowGenerator,\n Color4, Color3Gradient,\n Mesh, VideoTexture,\n Vector3, MeshBuilder,\n ArcRotateCamera, StandardMaterial, Texture,\n Color3, SpriteManager, Sprite\n } from 'babylonjs';\n\n import * as GUI from 'babylonjs-gui';\n\nimport { Game } from \"./game\";\nimport { MapMaker } from \"./mapMaker\";\nimport { PostModel } from '../models/post.model';\nimport { UrlParser } from '../utils/urlParser';\n\nexport class CanvasPlane {\n\n public objType : String = \"canvas\";\n private gameInstance : Game;\n private mapInstance : MapMaker;\n public dictKey : string;\n public sizeCanvas: number;\n\n public planeMesh: Mesh;\n public planeMeshGraffiti: Mesh;\n\n public isVirgin : boolean = true;\n\n constructor(objType_, dictKey, size, x, y, z, dir){\n\n //Manage diff percentage of size\n this.objType = objType_;\n this.sizeCanvas = size;\n let scaling: number = (objType_ === \"canvas\")? 0.9 : 1;\n this.sizeCanvas = this.sizeCanvas * scaling;\n this.dictKey = this.objType+\"_\"+dictKey+\"_\"+dir;\n this.gameInstance = Game.getInstance();\n this.mapInstance = MapMaker.getInstance();\n\n this.planeMesh = MeshBuilder.CreatePlane( this.dictKey, {size: this.sizeCanvas}, this.gameInstance.scene);\n this.planeMesh.position.y = (size * 0.5) +y;\n\n if(this.objType == \"canvas\"){\n this.mapInstance.registerNewCanvas(this.dictKey ,this);\n } else {\n this.mapInstance.registerNewAd(this.dictKey ,this);\n } \n\n //Determine the orientation of the canvas\n //let dir = this.mapInstance.getCanvasOrientation( this.tileCoordonates[0], this.tileCoordonates[1]);\n //console.log(\"TILE DIR= \"+dir);\n let canvasX: number;\n let canvasY: number;\n let canvasZ: number;\n let canvasAngle: number;\n let gapToTheWall = 0.1;\n /*\n canvasX = x;\n canvasY = (size * -0.5) - (size * 0.1) + y;*/\n \n switch(dir){\n\n case this.mapInstance.DIR_N:\n canvasX = x;\n canvasZ = (size * -0.5) - gapToTheWall + z;\n canvasAngle = 0;\n break;\n\n case this.mapInstance.DIR_E:\n canvasX = (size * -0.5) - gapToTheWall + x;\n canvasZ = z;\n canvasAngle = (Math.PI/180) * 90;\n break;\n\n case this.mapInstance.DIR_S:\n canvasX = x;\n canvasZ = (size * 0.5) + gapToTheWall + z;\n canvasAngle = (Math.PI/180) * 180;\n break;\n\n case this.mapInstance.DIR_W:\n canvasX = (size * 0.5) + gapToTheWall + x;\n canvasZ = z;\n canvasAngle = (Math.PI/180)*270;\n break;\n }\n\n this.planeMesh.position.x = canvasX;\n this.planeMesh.position.z = canvasZ;\n this.planeMesh.rotate(BABYLON.Axis.Y, canvasAngle, BABYLON.Space.WORLD);\n\n let mat = new StandardMaterial(\"matCanvas\", this.gameInstance.scene);\n mat.alpha = 0;\n this.planeMesh.material = mat;\n this.planeMesh.visibility = 0;\n this.planeMesh.material.freeze();\n this.planeMesh.freezeWorldMatrix();\n\n this.postModel = new PostModel();\n this.postModel.canvas_key = this.dictKey;\n \n }\n\n public postModel: PostModel;\n public postModelGraffiti: PostModel;\n private textureContext;\n private texture : BABYLON.DynamicTexture;\n private textureNonDynamic : BABYLON.Texture;\n\n private font_size = 70;\n private font = \"bold \" + this.font_size + \"px Arial\";\n private canvasScale = 900;\n\n //private postImageUrl: string;\n private postImage: HTMLImageElement;\n\n private postImageGraffitiUrl: string;\n private postImageGraffiti: HTMLImageElement;\n\n private mat: StandardMaterial;\n\n /*\n private displayUI: GUI.Rectangle;\n private uiAdvancedTexture: GUI.AdvancedDynamicTexture;\n private label : GUI.TextBlock;*/\n\n setPostData(postModel_: PostModel){\n\n this.initTextureObject();\n\n /* if(postModel_.graffiti) {\n this.postModelGraffiti = postModel_;\n } else {*/\n this.postModel = postModel_;\n //}\n\n let postImageUrl = this.postModel.url;\n\n if(this.postModel.preview == null || this.postModel.preview.length === 0){\n postImageUrl = new UrlParser(postModel_.url).getImage();\n } else {\n postImageUrl = this.postModel.preview;\n }\n\n //Launch picture loading\n if( postImageUrl.length > 0){\n\n if( postModel_.graffiti ){\n\n this.postImageGraffiti = new Image();\n this.postImageGraffiti.crossOrigin = \"anonymous\";\n this.postImageGraffiti.src = postImageUrl;\n this.postImageGraffiti.onload = (event_) => {\n this.imgLoaded();\n }\n\n this.postImageGraffiti.onerror = (event_) => {\n \n this.textureNonDynamic = new Texture(\"./assets/textures/404.png\", this.gameInstance.scene);\n this.mat.diffuseTexture = this.textureNonDynamic;\n this.mat.diffuseTexture.hasAlpha = true;\n this.planeMesh.material = this.mat;\n this.planeMesh.material.freeze();\n }\n\n\n } else {\n\n this.postImage = new Image();\n this.postImage.crossOrigin = \"anonymous\";\n this.postImage.src = postImageUrl;\n this.postImage.onload = (event_) => {\n this.imgLoaded();\n }\n\n this.postImage.onerror = (event_) => {\n\n this.textureNonDynamic = new Texture(\"./assets/textures/404.png\", this.gameInstance.scene);\n this.mat.diffuseTexture = this.textureNonDynamic;\n this.mat.diffuseTexture.hasAlpha = true;\n this.planeMesh.material = this.mat;\n this.planeMesh.material.freeze();\n }\n \n }\n \n \n \n } else {\n //this.texture.drawText(this.postModel.message, null, null, this.font, \"#ffffff\", \"#00000000\", true);\n /*\n this.texture.drawText(this.postModel.message, null, this.canvasScale *0.5, this.font, \"#ffffff\", \"#00000000\", true);\n this.texture.drawText(this.postModel.message, null, (this.canvasScale *0.5) -4, this.font, \"#000000\", \"#00000000\", true);*/\n }\n\n this.planeMesh.visibility = 1;\n this.isVirgin = false;\n this.gameInstance.cleanLastMesh();\n\n //Add text as UI?\n \n if(this.postModel.message) {\n this.texture.drawText(this.postModel.message, null, this.canvasScale *0.5, this.font, \"#7F7F7F\", \"#00000000\", true);\n this.texture.drawText(this.postModel.message, null, (this.canvasScale *0.5) -4, this.font, \"#ffffff\", \"#00000000\", true);\n }\n }\n\n //Dealing with post img loaded\n public imgLoaded(){\n\n\n let ratio;\n let newWidth;\n let newHeight;\n let newX = 0;\n let newY = 0;\n\n if(this.postImage != null){\n if(this.postImage.height > this.postImage.width) {\n\n \n ratio = (this.objType === \"canvas\")? this.canvasScale / this.postImage.height :this.canvasScale / this.postImage.width;\n newWidth = this.postImage.width * ratio;\n newHeight = this.postImage.height * ratio;\n newX = (newWidth - this.canvasScale) * (-0.5);\n\n } else {\n\n ratio = (this.objType === \"canvas\")? this.canvasScale / this.postImage.width: this.canvasScale / this.postImage.height;\n newWidth = this.postImage.width * ratio;\n newHeight = this.postImage.height * ratio;\n newY = (newHeight - this.canvasScale) * (-0.5);\n\n }\n\n this.textureContext.drawImage(this.postImage,newX, newY,newWidth, newHeight);\n }\n \n //If graffiti\n if(this.postImageGraffiti != null) {\n\n ratio = this.canvasScale / this.postImageGraffiti.width;\n console.log(\"ratio= \"+ratio);\n newWidth = this.postImageGraffiti.width * ratio;\n newHeight = this.postImageGraffiti.height * ratio;\n //newY = (newHeight - this.canvasScale) * (-0.5);\n\n this.textureContext.drawImage(this.postImageGraffiti,0, 0,newWidth, newHeight);\n }\n\n if(this.postModel.url.toLocaleLowerCase().indexOf(\".gif\") > 0 ){\n\n this.texture.drawText(\".GIF\", null, this.canvasScale *0.5, this.font, \"#000000\", \"#00000000\", true);\n this.texture.drawText(\".GIF\", null, (this.canvasScale *0.5) -4, this.font, \"#ffffff\", \"#00000000\", true);\n\n } else if(new UrlParser(this.postModel.url).getUrlType() === UrlParser.TYPE_YOUTUBE) {\n\n this.texture.drawText(\">VID\", null, this.canvasScale *0.5, this.font, \"#000000\", \"#00000000\", true);\n this.texture.drawText(\">VID\", null, (this.canvasScale *0.5) -4, this.font, \"#ffffff\", \"#00000000\", true);\n\n } else if(this.postModel.message) {\n \n this.texture.drawText(this.postModel.message, null, this.canvasScale *0.5, this.font, \"#7F7F7F\", \"#00000000\", true);\n this.texture.drawText(this.postModel.message, null, (this.canvasScale *0.5) -4, this.font, \"#ffffff\", \"#00000000\", true);\n \n \n }\n /* else if(this.postModelGraffiti && this.postModelGraffiti.message) {\n this.texture.drawText(this.postModelGraffiti.message, null, this.canvasScale *0.5, this.font, \"#7F7F7F\", \"#00000000\", true);\n this.texture.drawText(this.postModelGraffiti.message, null, (this.canvasScale *0.5) -4, this.font, \"#ffffff\", \"#00000000\", true);\n\n }*/\n\n if(this.postModel.is_canon){\n this.texture.drawText(\"Δ\",(newX) + 8, (newY) + 80, this.font, \"#000000\", \"#00000000\", true);\n //mat.emissiveColor = new BABYLON.Color3(1, 1, 1);\n }\n \n this.texture.update();\n this.planeMesh.material = this.mat;\n this.planeMesh.material.freeze();\n }\n\n private initTextureObject(){\n\n this.planeMesh.material.unfreeze();\n\n if( this.mat == null){\n this.mat = new StandardMaterial(\"mat\", this.gameInstance.scene);\n this.texture = new BABYLON.DynamicTexture(\"DynamicText\",{width:this.canvasScale, height:this.canvasScale}, this.gameInstance.scene,false);\n this.texture.hasAlpha = true;\n this.textureContext = this.texture.getContext();\n this.mat.diffuseTexture = this.texture;\n this.planeMesh.material = this.mat;\n }\n }\n\n\n public deletePostData(){\n //console.log(\"deletePostData= \"+this.postModel.url+\"; canvas_key: \"+this.postModel.canvas_key);\n this.postModel = new PostModel();\n this.postModel.canvas_key = this.dictKey;\n this.isVirgin = true;\n let mat = new StandardMaterial(\"matCanvas\", this.gameInstance.scene);\n mat.alpha = 0;\n this.planeMesh.material.unfreeze();\n this.planeMesh.material = mat;\n this.planeMesh.material.freeze();\n }\n\n public setInterfaceVisible(val_){\n /*\n //if(this.displayUI != null){\n \n //this.displayUI.isVisible = val_;\n if(this.postModel != null && this.postModel.message && this.uiAdvancedTexture != null){\n\n if(val_){\n\n //this.uiAdvancedTexture.addControl(this.displayUI);\n //this.uiAdvancedTexture.addControl(this.label);\n this.displayUI.isVisible = true;\n \n } else {\n \n //this.uiAdvancedTexture.removeControl(this.displayUI);\n //this.uiAdvancedTexture.removeControl(this.label);\n this.displayUI.isVisible = false;\n \n }\n }\n //}\n */\n }\n\n}","import {\n Engine, Scene,FreeCamera, Light,\n DirectionalLight, HemisphericLight, ShadowGenerator,\n Color4, Color3Gradient,\n Mesh, VideoTexture,\n Vector3, MeshBuilder,\n ArcRotateCamera, StandardMaterial, Texture,\n Color3, SpriteManager, Sprite\n } from 'babylonjs';\n\nimport { Game } from \"./game\";\nimport { MapMaker } from \"./mapMaker\";\n\nexport class Door {\n\n public objType : String = \"door\";\n private gameInstance : Game;\n private mapInstance : MapMaker;\n public doorMesh: Mesh;\n\n public dictKey : string;\n public sizeCanvas: number;\n public doorOpen = false;\n\n public openedY: number;\n public closedY: number;\n\n public closeDoorInterval;\n public clooseDoorDelay = 600000;\n public isSecret: boolean = false;\n\n constructor(dictKey, size, x, y, z, secret_){\n\n this.sizeCanvas = size;\n this.isSecret = secret_;\n\n this.dictKey = this.objType+\"_\"+dictKey;\n this.gameInstance = Game.getInstance();\n this.mapInstance = MapMaker.getInstance();\n\n this.closedY = size * 0.5 + y;\n this.openedY = -size * 0.5 + y;\n\n this.doorMesh = MeshBuilder.CreateBox( this.dictKey, {size: this.sizeCanvas}, this.gameInstance.scene);\n this.doorMesh.checkCollisions = true;\n \n let mat = new StandardMaterial(\"matBoxDoor\", this.gameInstance.scene);\n if(!this.isSecret){\n \n mat.diffuseColor = BABYLON.Color3.Green();\n }else {\n let textureBox = new Texture(\"./assets/textures/concrete_text.jpg\", this.gameInstance.scene);\n mat.diffuseTexture = textureBox;\n }\n mat.freeze();\n this.doorMesh.material = mat;\n\n this.doorMesh.position.y = this.closedY + y;\n this.doorMesh.position.x = x;\n this.doorMesh.position.z = z;\n\n this.mapInstance.registerNewDoor(this.dictKey ,this);\n\n }\n\n public openDoor(){\n this.doorOpen = true;\n this.updateDoor();\n /*\n this.closeDoorInterval = setInterval(() => {\n this.closeDoor();\n clearInterval( this.closeDoorInterval);\n }, this.clooseDoorDelay );*/\n\n this.doorMesh.dispose();\n }\n\n public closeDoor(){\n this.doorOpen = false;\n this.updateDoor();\n }\n\n public updateDoor(){\n console.log(\"open door this.doorMesh.position.y=\"+ this.doorMesh.position.y);\n this.doorMesh.position.y = (this.doorOpen)? this.openedY:this.closedY;\n console.log(\"open door this.doorMesh.position.y=\"+ this.doorMesh.position.y);\n }\n}","import {\n Engine, Scene,FreeCamera, Light,\n DirectionalLight, HemisphericLight, ShadowGenerator,\n Color4, Color3Gradient, Mesh, AbstractMesh,\n Vector3, MeshBuilder, ArcRotateCamera,\n StandardMaterial, Texture, Color3, PointLight,\n} from 'babylonjs'\n\nimport * as GUI from 'babylonjs-gui';\n\nimport {\n GradientMaterial\n}from 'babylonjs-materials'\n\nimport { MapMaker } from \"./mapMaker\";\nimport { PlayerMotor } from \"./playerMotor\";\nimport { Door } from \"./door\";\nimport { GameUIServiceService } from '../services/game-uiservice.service'\nimport { ChanWebService }from '../services/chan-web.service'\nimport { OfflineService }from '../services/offline.service'\nimport { Router} from '@angular/router';\nimport { InteractionModel } from '../models/interaction-model';\n\n//Chan data\nimport{ GameDataResponseModel } from '../models/game-data.response.model';\nimport{ PlayerResponseModel } from '../models/player.response.model';\nimport { GameDataModel } from '../models/game-data.model';\nimport { PostModel } from \"../models/post.model\";\nimport { Item } from './item';\nimport { Gate } from './gate';\nimport { GameUtils} from './gameUtils';\nimport { PlayerModel } from '../models/player.model';\nimport { CanvasPlane } from './canvasPlane';\nimport ItemModel from '../models/item.model';\nimport {Helpers} from '../utils/helpers';\n\nexport class Game {\n\n //Singleton data\n private static instance: Game;\n public canvas: HTMLCanvasElement;\n public engine: Engine;\n public scene: Scene;\n public camera: FreeCamera;\n private dLight: DirectionalLight;\n private hLight: HemisphericLight;\n private pLight: PointLight;\n public shadowGen: ShadowGenerator;\n private mapMaker : MapMaker;\n private playerMotor : PlayerMotor;\n public gameUIServiceService : GameUIServiceService;\n public offlineService : OfflineService;\n public chanWebService : ChanWebService;\n public router : Router;\n private ground: BABYLON.Mesh;\n public uiAdvancedTexture : GUI.AdvancedDynamicTexture;\n private postListRequestInterval;\n private postListRequestDelay : number = 10000;\n //private postListRequestDelay : number = 60000;\n\n private mapChanging = false;\n\n private playerModel :PlayerModel;\n private gameResponse : GameDataResponseModel;\n\n public mapKey = \"\";\n public clientUrl = \"\";\n public mapKeyOld = \"\";\n public activateJoystick = false;\n\n static getInstance() {\n return Game.instance;\n }\n\n constructor(canvasElement : string) {\n\n //Set the instance\n Game.instance = this;\n this.canvas = <HTMLCanvasElement> document.getElementById(canvasElement);\n this.engine = new Engine(this.canvas, true, null, false);\n // Listen for browser/canvas resize events\n window.addEventListener(\"resize\", ()=> {\n this.engine.resize();\n });\n \n }\n\n setUIService(service_ : GameUIServiceService){\n this.gameUIServiceService = service_;\n this.gameUIServiceService.postArtCanvasEmitter.subscribe((post_) =>{\n this.postArtCanvas(post_);\n })\n\n this.gameUIServiceService.forceWSEmitter.subscribe(() =>{\n this.getPostList();\n })\n\n this.gameUIServiceService.deletePostEmitter.subscribe((post_) =>{\n console.log(\"deletePostEmitter:\"+post_);\n this.deletePost(post_);\n })\n }\n\n setOfflineService(service_: OfflineService){\n this.offlineService = service_;\n }\n\n setWebService(service_ : ChanWebService){\n this.chanWebService = service_;\n }\n\n setRouter(router_){\n this.router = router_;\n }\n\n setMapKey(mapKey_){\n this.mapKey = mapKey_;\n }\n\n setClientUrl(clientUrl_){\n this.clientUrl = clientUrl_;\n }\n\n initGame() {\n\n console.log( \"initGame() \");\n //we get the player profile\n let playerMod: PlayerModel = this.offlineService.getPlayerData();\n\n this.playerModel = playerMod;\n this.chanWebService.createUser(playerMod.id, playerMod.player_key, \"\", this.mapKey).subscribe(\n //Data success\n (data : GameDataResponseModel) => {\n\n this.gameResponse = data;\n\n if( this.gameResponse.ok ) {\n\n this.playerModel = this.gameResponse.result.player;\n this.offlineService.saveChan( this.playerModel.map_key );\n this.setMapKey(this.playerModel.map_key);\n this.offlineService.savePlayer( this.playerModel );\n\n //Launch the game\n this.createScene();\n this.run();\n \n //Get the playerData\n if(this.postListRequestInterval == null){\n this.postListRequestInterval = setInterval(() => {\n this.getPostList();\n }, this.postListRequestDelay );\n }\n this.getPostList();\n\n } else {\n alert(\"Profile not found!\");\n }\n \n },\n );\n \n }\n\n createScene() {\n console.log(\"createScene()\");\n if( this.scene != null) this.scene.dispose();\n // We need a scene to create all our geometry and babylonjs items in\n this.scene = new Scene(this.engine);\n this.playerMotor = PlayerMotor.getInstance();\n this.playerMotor.initMotor();\n if(this.activateJoystick) this.playerMotor.activeJoystick();\n if(!this.mapMaker){\n this.mapMaker = new MapMaker();\n }\n this.mapMaker.loadMapData( this.gameResponse.result.map[0]);\n\n this.initAtmosphere();\n this.initOptimisation();\n \n }\n\n /************************\n * SCENE VISUAL STUFF\n * ligth / optimization / ground / skybox\n * and other shit\n ***********************/\n\n initAtmosphere(){\n\n //Scene atmoshpere\n this.scene.clearColor = new Color4(226/255, 244/255, 1);\n this.scene.ambientColor = new Color3(0.3, 0.3, 0.3);\n\n this.scene.autoClear = false; // Color buffer\n this.scene.autoClearDepthAndStencil = false;\n\n\n // Hemispheric light to enlight the scene\n this.hLight = new HemisphericLight(\"hemi\", new Vector3(0, 0.5, 0), this.scene);\n this.hLight.intensity = 0.85;\n\n this.pLight = new BABYLON.PointLight(\"pointLight\", new BABYLON.Vector3(1, 450, 1), this.scene);\n this.pLight.intensity = 1.5;\n\n //texture\n this.ground = Mesh.CreateGround(\"ground\", 1000, 1000, 2, this.scene);\n this.ground.checkCollisions = true;\n this.ground.position.y = - 0.1;\n\n let mat = new StandardMaterial(\"matVolcano\", this.scene);\n let texture = new Texture(\"./assets/textures/volcanic_text.jpg\", this.scene);\n mat.diffuseTexture = texture;\n this.ground.material = mat;\n\n //Set UIManager\n this.uiAdvancedTexture = GUI.AdvancedDynamicTexture.CreateFullscreenUI(\"UI\");\n\n\n let skybox = BABYLON.MeshBuilder.CreateBox(\"skyBox\", {size:1000.0}, this.scene);\n let skyboxMaterial = new BABYLON.StandardMaterial(\"skyBox\", this.scene);\n skyboxMaterial.backFaceCulling = false;\n skyboxMaterial.reflectionTexture = new BABYLON.CubeTexture(\"./assets/textures/skybox\", this.scene);\n skyboxMaterial.reflectionTexture.coordinatesMode = BABYLON.Texture.SKYBOX_MODE;\n skyboxMaterial.diffuseColor = new BABYLON.Color3(0, 0, 0);\n skyboxMaterial.specularColor = new BABYLON.Color3(0, 0, 0);\n skybox.material = skyboxMaterial;\n }\n\n private shadowGenerator: BABYLON.ShadowGenerator;\n\n public setShadow(mesh_ : Mesh){\n /*\n if(this.shadowGenerator == null){\n this.shadowGenerator = new BABYLON.ShadowGenerator(256, this.pLight);\n //this.shadowGenerator.useBlurExponentialShadowMap = true;\n this.shadowGenerator.filteringQuality = BABYLON.ShadowGenerator.QUALITY_LOW;\n }\n\n this.shadowGenerator.getShadowMap().renderList.push(mesh_);\n mesh_.receiveShadows = true;*/\n }\n\n initOptimisation(){\n //Optimization\n this.scene.blockMaterialDirtyMechanism = true;\n /*\n BABYLON.SceneOptimizer.OptimizeAsync(this.scene, BABYLON.SceneOptimizerOptions.LowDegradationAllowed(),\n ()=> {\n // On success\n }, ()=> {\n // FPS target not reached\n });*/\n }\n\n //Render process\n run() : void {\n this.engine.runRenderLoop(()=> {\n if(this.scene != null){\n this.scene.render();\n this.renderInteraction();\n }\n });\n }\n\n /************************\n * EXECUTE INTERACTION\n ***********************/\n\n //Render Interaction\n private nameLastMesh: string;\n private meshToClimb: AbstractMesh;\n private doorToOpen: Door;\n private itemToGet: Item;\n private gateTopass: Gate;\n private lastCanvas: CanvasPlane;\n\n public cleanLastMesh(){\n this.nameLastMesh = \"\";\n if(this.lastCanvas != null) this.lastCanvas.setInterfaceVisible(false);\n }\n\n interactionDelay: number = 18;\n interactionTimer: number = 0;\n\n renderInteraction(){\n\n if(this.interactionTimer <=0) {\n\n let width = this.scene.getEngine().getRenderWidth();\n let height = this.scene.getEngine().getRenderHeight();\n let pickInfo = this.scene.pick(width / 2, height / 2, null, false, this.camera);\n\n //Get info on the pointed object\n if (pickInfo.hit && this.nameLastMesh !== pickInfo.pickedMesh.name) {\n\n let newInter : InteractionModel = new InteractionModel();\n newInter.type = InteractionModel.TYPE_NONE;\n this.meshToClimb = null;\n this.doorToOpen = null;\n\n this.mapMaker.cleanLines();\n\n this.nameLastMesh = pickInfo.pickedMesh.name;\n newInter.description = pickInfo.pickedMesh.name;\n if(pickInfo.pickedMesh.name !== undefined){\n\n if (pickInfo.pickedMesh.name.indexOf(\"canvas\") >= 0) {\n\n let canvas = this.mapMaker.getCanvasByKey(pickInfo.pickedMesh.name);\n if(canvas != null){\n\n if(canvas.isVirgin){\n newInter.type = InteractionModel.TYPE_CANVAS_VIRGIN;\n /*\n } else if(canvas.postModelGraffiti == null){\n newInter.type = InteractionModel.TYPE_CANVAS_TO_GRAFF;\n this.mapMaker.drawlines(canvas.dictKey);*/\n } else {\n newInter.type = InteractionModel.TYPE_CANVAS_FULL;\n this.mapMaker.drawlines(canvas.dictKey);\n this.mapMaker.displayUI(canvas.dictKey);\n\n }\n //newInter.type = (canvas.isVirgin)? InteractionModel.TYPE_CANVAS_VIRGIN : InteractionModel.TYPE_CANVAS_FULL;\n newInter.value = canvas.postModel;\n this.cleanLastMesh();\n canvas.setInterfaceVisible(true);\n this.lastCanvas = canvas;\n }\n\n } else if(pickInfo.pickedMesh.name.toLowerCase().indexOf(\"ladder\") >= 0){\n newInter.type = InteractionModel.TYPE_CLIMB_LADDER;\n this.meshToClimb = pickInfo.pickedMesh;\n\n /*\n } else if(pickInfo.pickedMesh.name.toLowerCase().indexOf(\"advertisement\") >= 0){\n\n let canvas = this.mapMaker.getAdByKey(pickInfo.pickedMesh.name);\n if(canvas != null){\n newInter.type = InteractionModel.TYPE_AD;\n newInter.value = canvas.postModel;\n this.cleanLastMesh();\n canvas.setInterfaceVisible(true);\n this.lastCanvas = canvas;\n }*/\n\n } else if(pickInfo.pickedMesh.name.toLowerCase().indexOf(\"door\") >= 0){\n\n //console.log(\"pick gate\"+pickInfo.pickedMesh.name);\n let door: Door = this.mapMaker.getDoorByKey(pickInfo.pickedMesh.name);\n newInter.type = InteractionModel.TYPE_OPEN_DOOR;\n this.doorToOpen = door;\n\n } else if(pickInfo.pickedMesh.name.toLowerCase().indexOf(\"item\") >= 0){\n\n //console.log(pickInfo.pickedMesh.name);\n let item: Item = this.mapMaker.getItemByKey(pickInfo.pickedMesh.name);\n if( item != null && item.itemModel != null){\n newInter.type = InteractionModel.TYPE_GET_ITEM;\n newInter.value = item.itemModel;\n this.itemToGet = item;\n }\n \n }else if(pickInfo.pickedMesh.name.toLowerCase().indexOf(\"gate\") >= 0){\n\n let gate: Gate = this.mapMaker.getGateByKey(pickInfo.pickedMesh.name);\n newInter.type = InteractionModel.TYPE_PASS_GATE;\n newInter.value = gate.gateKey;\n this.gateTopass = gate;\n\n }\n /*else if(pickInfo.pickedMesh.name.toLowerCase().indexOf(\"panel\") >= 0){\n newInter.type = InteractionModel.TYPE_PANEL;\n newInter.value = \"http://snuffchan.com/blog/donations/\";\n //this.panel = gate;\n }*/\n\n }\n\n this.nameLastMesh = pickInfo.pickedMesh.name;\n this.gameUIServiceService.sendInteraction(newInter);\n }\n\n this.interactionTimer = this.interactionDelay;\n\n } else {\n this.interactionTimer --;\n }\n }\n\n //Climb obj\n climbObject(){\n this.camera.position.x = this.meshToClimb.position.x;\n this.camera.position.z = this.meshToClimb.position.z;\n this.camera.position.y = this.meshToClimb.position.y + MapMaker.TILE_SIZE;\n }\n\n //Climb obj\n openDoor(){\n //console.log(this.doorToOpen);\n //console.log(this.nameLastMesh );\n this.nameLastMesh = \"\";\n this.doorToOpen.openDoor();\n }\n\n //Post\n postArtCanvas(canvas_: PostModel){\n console.log(canvas_);\n this.mapMaker.setPictureOnCanvas(canvas_);\n }\n \n\n public switchKeyMapping(){\n GameUtils.switchKeyMapping(this);\n }\n\n public activeJoystick(){\n this.activateJoystick = true;\n if(this.playerMotor != null) this.playerMotor.activeJoystick();\n }\n\n /************************\n * WEB SERVICE MANAGEMENT\n ***********************/\n\n private gameDataModel : GameDataModel;\n private posts : PostModel[];\n private items : ItemModel[];\n private isError : boolean = false;\n private errorMessage : string;\n private isPostLoaded : boolean = false;\n private isFirstLaunch : boolean = true; // test if player axist at first launch\n\n public getPostList(){\n\n if(!this.mapChanging){\n let playerTempModel = this.playerMotor.getPlayerPos();\n this.chanWebService.getMapPostList( playerTempModel.position_x, playerTempModel.position_y, this.playerModel.name, this.playerTalk).subscribe(\n //Data success\n (data : GameDataResponseModel) => {\n\n let gameResponse : GameDataResponseModel = data;\n\n if( gameResponse.ok ) {\n\n if(Helpers.isPT()){\n let postsLeft = gameResponse.result.postsLeft - 18;\n if(postsLeft < 0) postsLeft= 0;\n gameResponse.result.postsLeft = postsLeft;\n }\n\n this.updateGameData(gameResponse.result);\n this.mapMaker.updateNonStaticData(gameResponse.result);\n this.isFirstLaunch = false;\n\n } else {\n\n this.isError = true;\n this.errorMessage = \"Unknown error.\";\n }\n },\n error => {\n //console.log(JSON.stringify(error));\n this.isError = true;\n if(this.isFirstLaunch){\n this.gameUIServiceService.changeState(GameUIServiceService.STATE_NO_PLAYER);\n }\n this.errorMessage = JSON.stringify(error);\n \n }\n );\n }\n }\n\n \n public updateGameData(gameDataModel_){\n console.log(\"updateGameData()\");\n this.gameDataModel = gameDataModel_;\n this.mapMaker.updateNonStaticData( this.gameDataModel );\n this.gameUIServiceService.updateGameData(this.gameDataModel);\n\n //Update the player\n this.playerModel = this.gameDataModel.player;\n /*\n if(this.playerModel.map_key != this.mapKey){\n this.generateMap(this.playerModel.map_key);\n this.mapMaker.loadMapData(this.gameDataModel.map[0]);\n this.mapKey = this.playerModel.map_key;\n }*/\n\n this.items = this.gameDataModel.itemsPlayer;\n this.offlineService.savePlayer( this.playerModel);\n this.isPostLoaded = true;\n this.isError = false;\n }\n\n public passGet(getName_){\n //this.playerMotor.savePlayerRotation();\n this.mapChanging = true;\n this.chanWebService.changeMapRandom( (getName_ === \"secret\") ).subscribe((data_: GameDataResponseModel) =>{\n if(data_.ok){\n //this.createScene();\n this.scene.dispose();\n this.mapMaker = null;\n delete this.mapMaker;\n this.offlineService.saveChan(data_.result.player.map_key);\n //this.router.navigateByUrl('/ch/'+data_.result.player.map_key);\n window.location.href = this.clientUrl+'/ch/'+data_.result.player.map_key;\n //console.log(\"change to :\"+data_.result.player.map_key);\n //this.updateGameData(data_.result);\n }\n })\n }\n\n public getItem(key_){\n this.chanWebService.getItem(key_).subscribe(data_ =>{\n if(data_.ok){\n this.updateGameData(data_.result);\n }\n })\n }\n\n public deletePost(post_){\n \n let canvas: CanvasPlane = this.mapMaker.getCanvasByKey(post_.canvas_key);\n if(canvas != null){\n console.log(\"Post found and deleted= \"+post_);\n canvas.deletePostData();\n }\n }\n\n private playerName = \"\" ;\n public changeName(name_){\n this.playerName = name_;\n }\n\n private playerTalk = \"\" ;\n public changeTalk(talk_){\n this.playerTalk = talk_;\n }\n\n /*\n public changeMapForPlayer(mapKey_){\n this.chanWebService.setMap(mapKey_).subscribe((data_)=>{\n console.log(data_);\n })\n }*/\n\n }","import {MapModel} from '../models/map.model';\nimport { Game } from \"./game\";\nimport { ConfigModel } from '../models/config.model';\n\nexport class GameUtils {\n\n //Doc for https://en.wikipedia.org/wiki/QWERTY\n //Key code list https://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes\n \n public static setKeyBoardMapping(gameInstance_ : Game){\n\n let conf_: ConfigModel = gameInstance_.offlineService.getConfig();\n if( conf_.key_mapping == null ) {\n let language : string = navigator.language;\n GameUtils.setKeyMappingFromLang(gameInstance_, language);\n } else {\n GameUtils.setKeyForMapping(gameInstance_ , conf_.key_mapping);\n }\n\n }\n\n public static setKeyMappingFromLang(gameInstance_ : Game, lang_ :string){\n\n if(lang_.toLowerCase().indexOf(\"fr\") >= 0){\n GameUtils.setKeyForMapping(gameInstance_, \"ZSQD\");\n } else {\n GameUtils.setKeyForMapping(gameInstance_, \"WSAD\");\n }\n \n }\n\n public static setKeyForMapping(gameInstance_ : Game, mapping_ :string){\n console.log(\"setKeyMapping() lang_= \"+mapping_);\n\n let config : ConfigModel = gameInstance_.offlineService.getConfig();\n\n if(mapping_ === \"ZSQD\"){\n //If Azerty\n gameInstance_.camera.keysUp = [90]; // Z\n gameInstance_.camera.keysDown = [83]; // S\n gameInstance_.camera.keysLeft = [81]; // Q\n gameInstance_.camera.keysRight = [68]; // D\n } else {\n //If Qwerty\n gameInstance_.camera.keysUp = [87]; // w\n gameInstance_.camera.keysDown = [83]; // S\n gameInstance_.camera.keysLeft = [65]; // A\n gameInstance_.camera.keysRight = [68]; // D\n \n }\n \n config.key_mapping = mapping_;\n gameInstance_.offlineService.saveConfig(config);\n gameInstance_.gameUIServiceService.updateConfigData(config);\n //gameInstance_.offlineService.saveKeyboard(lang_.toLowerCase());\n }\n\n public static switchKeyMapping(gameInstance_ : Game){\n\n let conf_: ConfigModel = gameInstance_.offlineService.getConfig();\n if( conf_.key_mapping == null ) {\n let language : string = navigator.language;\n GameUtils.setKeyMappingFromLang(gameInstance_, language);\n } else {\n if( conf_.key_mapping === \"ZSQD\") GameUtils.setKeyForMapping(gameInstance_ , \"WSAD\");\n if( conf_.key_mapping === \"WSAD\") GameUtils.setKeyForMapping(gameInstance_ , \"ZSQD\");\n \n }\n }\n\n}","import {\n Engine, Scene,FreeCamera, Light,\n DirectionalLight, HemisphericLight, ShadowGenerator,\n Color4, Color3Gradient,\n Mesh, VideoTexture,\n Vector3, MeshBuilder,\n ArcRotateCamera, StandardMaterial, Texture,\n Color3, SpriteManager, Sprite\n } from 'babylonjs';\n\nimport { Game } from \"./game\";\nimport { MapMaker } from \"./mapMaker\";\n\nexport class Gate {\n\n public objType : String = \"gate\";\n private gameInstance : Game;\n private mapInstance : MapMaker;\n public doorMesh: Mesh;\n public dictKey : string;\n\n public gateKey : string;\n\n constructor(dictKey, size, x, y, z, key_){\n\n this.dictKey = this.objType+\"_\"+dictKey;\n this.gateKey = key_;\n this.gameInstance = Game.getInstance();\n this.mapInstance = MapMaker.getInstance();\n\n this.doorMesh = MeshBuilder.CreateBox( this.dictKey, {size: size}, this.gameInstance.scene);\n this.doorMesh.checkCollisions = true;\n \n let mat = new StandardMaterial(\"matGateDoor\", this.gameInstance.scene);\n mat.diffuseColor = BABYLON.Color3.Red();\n \n \n mat.freeze();\n this.doorMesh.material = mat;\n\n this.doorMesh.position.y = y;\n this.doorMesh.position.x = x;\n this.doorMesh.position.z = z;\n\n this.mapInstance.registerNewGate(this.dictKey ,this);\n\n }\n}","import {\n Engine, Scene,FreeCamera, Light,\n DirectionalLight, HemisphericLight, ShadowGenerator,\n Color4, Color3Gradient,\n Mesh, VideoTexture,\n Vector3, MeshBuilder,\n ArcRotateCamera, StandardMaterial, Texture,\n Color3, SpriteManager, Sprite\n } from 'babylonjs';\n\nimport { Game } from \"./game\";\nimport { MapMaker } from \"./mapMaker\";\nimport ItemModel from '../models/item.model';\n\nexport class Item {\n\n public objType : String = \"item\";\n private gameInstance : Game;\n private mapInstance : MapMaker;\n public itemMesh: Mesh;\n public dictKey : string;\n public itemModel : ItemModel;\n\n public spriteManagerPlayer : SpriteManager;\n public sprite : Sprite;\n\n constructor(type_, itemModel_, size_, x, y){\n\n this.itemModel = itemModel_;\n\n this.objType = type_;\n this.dictKey = this.objType+\"_\"+this.itemModel.name+\"_\"+itemModel_.key;\n this.gameInstance = Game.getInstance();\n this.mapInstance = MapMaker.getInstance();\n \n \n this.itemMesh = MeshBuilder.CreateBox( this.dictKey, {height: size_*3, width: size_, depth: size_}, this.gameInstance.scene);\n this.itemMesh.checkCollisions = false;\n this.itemMesh.visibility = 0;\n this.itemMesh.position.y = (size_) *0.5;\n this.itemMesh.position.x = x;\n this.itemMesh.position.z = y;\n this.itemMesh.visibility = 0;\n \n /*let mat = new StandardMaterial(\"matBoxItem\", this.gameInstance.scene);\n mat.diffuseColor = BABYLON.Color3.Random();\n mat.freeze();\n this.itemMesh.material = mat;*/\n //if(this.objType.toLowerCase().indexOf('gate') >= 0 ) this.itemMesh.visibility = 0.2;\n \n\n //sprite\n this.spriteManagerPlayer = new SpriteManager(\"itemManager\",\"./assets/textures/cardboard_text.png\", 1, {width: 288, height: 288}, this.gameInstance.scene);\n this.sprite = new Sprite(\"item\"+itemModel_.id, this.spriteManagerPlayer);\n\n this.sprite.width = 6;\n this.sprite.height = 6;\n\n this.sprite.position.x = x;\n this.sprite.position.z = y;\n this.sprite.position.y = 3;\n\n\n this.mapInstance.registerNewItem(this.dictKey ,this);\n\n }\n\n public clean(){\n\n this.spriteManagerPlayer.dispose();\n if(this.itemMesh != null)this.itemMesh.dispose();\n this.sprite.dispose();\n\n this.spriteManagerPlayer = null;\n this.itemMesh = null;\n this.sprite = null;\n\n }\n\n}","import {\n Engine, Scene,FreeCamera, Light,\n DirectionalLight, HemisphericLight, ShadowGenerator,\n Color4, Color3Gradient,\n Mesh,\n Vector3, MeshBuilder,\n ArcRotateCamera, StandardMaterial, Texture,\n Color3, SpriteManager, Sprite, Layer\n } from 'babylonjs';\n \n import { Tile } from \"./tile\";\n import { Game } from \"./game\";\n import { CanvasPlane } from \"./canvasPlane\";\n import { Door } from \"./door\";\n import { Item } from \"./item\";\n import { Gate } from \"./gate\";\n import { PostModel } from '../models/post.model';\n import { MapModel } from '../models/map.model';\n import { GameUtils, } from './gameUtils';\nimport ItemModel from '../models/item.model';\nimport { GameDataModel } from '../models/game-data.model';\nimport {PlayerMotor} from './playerMotor';\nimport { PlayerModel } from '../models/player.model';\nimport { PlayerMesh } from './playerMesh';\n\nimport * as GUI from 'babylonjs-gui';\nimport { AdvertisementModel } from '../models/advertisement.model';\n\nexport class MapMaker {\n\n private gameInstance : Game;\n private static _instance : MapMaker;\n\n public static get TILE_SIZE():number { return 10; }\n\n //Game data\n private mapModel : MapModel;\n private mapData : string[];\n\n public gameData: GameDataModel;\n\n public players: any[];\n public posts: PostModel[];\n public items: ItemModel[] = [];\n\n public anonList: PlayerMesh[] = [];\n public itemMesh: Item[] = [];\n\n public TileGroundMeshes : Mesh[] = [];\n public TileWallMeshes : Mesh[] = [];\n\n public DIR_N = 0;\n public DIR_E = 1;\n public DIR_S = 2;\n public DIR_W = 3;\n\n //Canvas PLane dictionnary\n public canvasDict: { [id: string] : CanvasPlane; } = {};\n public advertisementDict: { [id: string] : CanvasPlane; } = {};\n public doorDict: { [id: string] : Door; } = {};\n public gateDict: { [id: string] : Gate; } = {};\n public itemDict: { [id: string] : Item; } = {};\n\n static getInstance() {\n return this._instance;\n }\n\n constructor() {\n\n this.gameInstance = Game.getInstance();\n MapMaker._instance = this;\n }\n\n loadMapData(map_: MapModel){\n \n Tile.meshGrassInstance = null;\n Tile.meshGroundInstance = null;\n Tile.meshWallInstance = null;\n\n this.mapModel = map_;\n this.buildMap();\n }\n\n cleanMap(){\n \n this.TileGroundMeshes = [];\n this.TileWallMeshes = [];\n this.canvasDict = {};\n this.advertisementDict = {};\n this.doorDict = {};\n this.gateDict = {};\n this.itemDict = {};\n\n }\n\n buildMap(){\n this.cleanMap();\n //console.log(\"buildMap=\"+ this.mapModel );\n this.mapData = this.getMapData();\n\n let x = 0;\n let y = 0;\n let l = 0; //layer\n\n let playerPos = {x: -1, y: -1};\n\n //Generate a layer\n for(let n = 0; n < this.mapData.length; n++){\n //console.log(this.mapData[n]);\n if(parseInt(this.mapData[n]) != Tile.TILE_GATES && parseInt(this.mapData[n]) != Tile.TILE_GATES_SECRET){\n new Tile(this.mapData[n] , MapMaker.TILE_SIZE,x,l,y, null);\n\n if(parseInt(this.mapData[n]) === Tile.TILE_START){\n playerPos.x = x;\n playerPos.y = y;\n } \n } else if(parseInt(this.mapData[n]) == Tile.TILE_GATES) {\n\n console.log(\"x: \"+x+\"; y:\"+y+\"; width:\"+this.mapModel.width+\"; heihgt: \"+ this.mapModel.height);\n /*\n let key = \"\";\n if(y == 0){\n key = this.mapModel.door_key_n;\n } else if(x == this.mapModel.width-1){\n key = this.mapModel.door_key_e;\n } else if(y == this.mapModel.height-1){\n key = this.mapModel.door_key_s;\n } else if(x == 0){\n key = this.mapModel.door_key_w;\n }*/\n\n //console.log(\"GATE x: \"+x+\"; y:\"+y+\"; width:\"+this.mapModel.width+\"; heihgt: \"+ this.mapModel.height+\" key:\"+key);\n\n //Managing gates\n new Tile(this.mapData[n], MapMaker.TILE_SIZE,x,l,y, \"???\");\n\n }else if(parseInt(this.mapData[n]) == Tile.TILE_GATES_SECRET) {\n //Managing gates\n new Tile(this.mapData[n], MapMaker.TILE_SIZE,x,l,y, \"secret\");\n }\n //console.log(\"new tile-> type:\"+this.tileDict[n]+\" x:\"+x+\"y:\"+y);\n x += 1;\n if(x >= this.mapModel.width){\n x = 0;\n y += 1;\n } \n\n }\n\n let player = new PlayerModel();\n if(this.gameData != null) \n player = this.gameData.player;\n player.position_x = playerPos.x;\n player.position_y = playerPos.y;\n \n PlayerMotor.getInstance().setPlayerPos(player);\n\n if(this.gameData != null) this.updateNonStaticData(this.gameData);\n\n }\n\n /********************\n * UPDATE NON STATIC DATA\n * players, items and others\n ********************/\n updateNonStaticData(gameData_ :GameDataModel){\n\n this.itemDict = {};\n\n this.gameData = gameData_;\n\n //Post\n //Update teh posts DATA\n if(this.gameData.posts != undefined){\n this.posts = this.gameData.posts;\n for (let post of this.gameData.posts) {\n if(post !== null && post.canvas_key !== null){\n let canvas = this.getCanvasByKey(post.canvas_key);\n\n if(canvas!= null && canvas.isVirgin){\n //if(post.graffiti && canvas.postModelGraffiti == null){\n canvas.setPostData(post);\n /*\n } else if(!post.graffiti && canvas.postModel.id == null){\n canvas.setPostData(post);\n }*/\n }\n }\n }\n }\n\n //items\n this.itemMesh.forEach((item_: Item) =>{\n if(item_ != null && item_ != undefined){\n item_.clean();\n item_ = null;\n }\n });\n this.itemMesh = [];\n this.items = this.gameData.itemsMap;\n\n for(let i = 0; i < this.items.length; i++){\n let itemModel: ItemModel = this.items[i];\n let itemMesh = new Item(\"item\",itemModel, MapMaker.TILE_SIZE*0.2, itemModel.x * MapMaker.TILE_SIZE ,itemModel.y * MapMaker.TILE_SIZE);\n this.itemMesh.push(itemMesh);\n\n }\n\n //PLayers\n /*\n this.anonList.forEach((playerMesh: PlayerMesh) =>{\n playerMesh.clean();\n playerMesh = null;\n });\n\n let anonListNew = [];\n let anonListOld = this.anonList;\n let characters = this.gameData.players;\n\n for(let c = 0; c < characters.length; c++){\n let chara: PlayerModel = characters[c];\n let anon: PlayerMesh = null;\n //Is this anon exist?\n for(let a= 0; a <anonListOld.length; a ++){\n \n if(anonListOld[a].playerModel.id === chara.id){\n //if yes we move it\n anon = anonListOld[a];\n anon.updatePlayerModel(chara);\n //+ clean the array\n anonListOld.splice(a,1);\n break;\n }\n }\n\n //If no we create if\n if(anon === null){\n anon = new PlayerMesh(\"player\",chara, MapMaker.TILE_SIZE);\n }\n anonListNew.push(anon);\n }\n //after this we clean all the all anons.\n \n anonListOld.forEach((playerMesh: PlayerMesh) =>{\n //playerMesh.dispose();\n playerMesh.clean();\n playerMesh = null;\n });\n\n this.anonList = anonListNew;*/\n\n this.anonList.forEach((playerMesh: PlayerMesh) =>{\n //playerMesh.dispose();\n playerMesh.clean();\n playerMesh = null;\n });\n this.anonList = [];\n\n let characters = this.gameData.players;\n for(let c = 0; c < characters.length; c++){\n let chara: PlayerModel = characters[c];\n let anon: PlayerMesh = new PlayerMesh(\"player\",chara, MapMaker.TILE_SIZE);\n this.anonList.push(anon);\n }\n\n\n }\n\n /********************\n * MANAGE UI\n ********************/\n\n private linesReplyTo;\n private linesReplyFrom;\n\n drawlines(key_){\n\n let currentPost = this.canvasDict[key_].postModel;\n if(this.linesReplyFrom != null) this.linesReplyFrom.dispose();\n if(this.linesReplyTo != null) this.linesReplyTo.dispose();\n\n\n //https://doc.babylonjs.com/babylon101/parametric_shapes\n let pointsTo = [];\n let pointsFrom = [];\n\n pointsTo.push( this.canvasDict[key_].planeMesh.position);\n pointsFrom.push( this.canvasDict[key_].planeMesh.position);\n\n for (let keyDict in this.canvasDict) {\n let canvas : CanvasPlane = this.canvasDict[keyDict];\n if (!canvas.isVirgin) {\n let found = false;\n if(canvas.postModel.id === currentPost.reply){\n pointsTo.push(canvas.planeMesh.position);\n found = true;\n } else if(canvas.postModel.reply === currentPost.id){\n pointsFrom.push(canvas.planeMesh.position);\n found = true;\n }\n\n if(found){\n for (let keyDict2 in this.canvasDict) {\n let canvas2 : CanvasPlane = this.canvasDict[keyDict2];\n if (!canvas2.isVirgin) {\n if(canvas2.postModel.id === canvas.postModel.reply){\n pointsTo.push(canvas2.planeMesh.position);\n }else if(canvas2.postModel.reply === canvas.postModel.id){\n pointsFrom.push(canvas2.planeMesh.position);\n }\n }\n }\n }\n }\n }\n this.linesReplyTo = BABYLON.MeshBuilder.CreateLines(\"lines\", {points: pointsTo}, this.gameInstance.scene);\n this.linesReplyFrom = BABYLON.MeshBuilder.CreateLines(\"lines\", {points: pointsFrom}, this.gameInstance.scene);\n /*\n this.linesReplyTo.Color4 = BABYLON.Color3.Blue;\n this.linesReplyFrom.Color4 = BABYLON.Color3.Green;\n */\n\n }\n\n cleanLines(){\n if(this.linesReplyFrom != null) this.linesReplyFrom.dispose();\n if(this.linesReplyTo != null) this.linesReplyTo.dispose();\n }\n\n private cubeUI: Mesh;\n private uiAdvancedTexture: any;\n private rectUI: BABYLON.GUI.Rectangle;\n private label: BABYLON.GUI.TextBlock;\n\n displayUI(key_){\n\n /*\n //To hard for memory\n let canvas: CanvasPlane = this.canvasDict[key_];\n\n if( this.cubeUI == null){\n this.cubeUI = MeshBuilder.CreateBox(\"meshUI\", {size: MapMaker.TILE_SIZE *0.5}, this.gameInstance.scene);\n //this.cubeUI.visibility = 0; \n } \n\n this.cubeUI.position.y = MapMaker.TILE_SIZE *0.5;\n this.cubeUI.position.x = canvas.planeMesh.position.x * MapMaker.TILE_SIZE;\n this.cubeUI.position.z = canvas.planeMesh.position.z * MapMaker.TILE_SIZE;\n\n if(this.uiAdvancedTexture == null){\n this.uiAdvancedTexture = BABYLON.GUI.AdvancedDynamicTexture.CreateFullscreenUI(\"UI\");\n this.rectUI = new BABYLON.GUI.Rectangle();\n \n this.rectUI.fontFamily = \"Courier New, Courier, monospace\";\n this.rectUI.cornerRadius = 10;\n this.rectUI.color = \"Grey\";\n this.rectUI.background = \"#161616\";\n this.uiAdvancedTexture.addControl(this.rectUI);\n this.label = new BABYLON.GUI.TextBlock();\n this.rectUI.addControl(this.label);\n this.rectUI.linkWithMesh(this.cubeUI); \n this.rectUI.linkOffsetY = 0;\n this.rectUI.linkOffsetX = 0;\n this.rectUI.width = 0.2;\n this.rectUI.height = 0.3;\n }\n\n this.label.text = canvas.postModel.message;\n */\n }\n\n clearUI(){\n \n }\n\n /********************\n * UTILS\n ********************/\n\n\n //Get potential Canvas orientation\n public getCanvasOrientation( x, z){\n\n let potentialDir: Number[] = [];\n if( this.getTileAt(x,z-1) === '0') potentialDir.push(this.DIR_N);\n if( this.getTileAt(x+1,z) === '0' ) potentialDir.push(this.DIR_E);\n if( this.getTileAt(x,z+1) === '0' ) potentialDir.push(this.DIR_S);\n if( this.getTileAt(x-1,z) === '0' ) potentialDir.push(this.DIR_W);\n\n if(potentialDir.length === 0) {\n //console.log(\"NO ORIENTATION FOUND\");\n return -1;\n }\n //We choose a random direction\n let indexChoosed = Math.floor(Math.random() * potentialDir.length);\n return potentialDir[indexChoosed];\n\n }\n\n //Return the value of a tile\n public getTileAt( x, y ){\n\n //Out of bounds\n if(x < 0 || x > this.mapModel.width || y< 0 || y > this.mapModel.height) return -1;\n let indexTile = (y*this.mapModel.width )+ x;\n return this.mapData[indexTile];\n\n }\n\n public registerNewCanvas(key_,canvas_){\n if( this.canvasDict[key_] === undefined) this.canvasDict[key_] = canvas_;\n }\n\n public registerNewAd(key_,canvas_){\n if( this.advertisementDict[key_] === undefined) this.advertisementDict[key_] = canvas_;\n }\n\n public registerNewDoor(key_,door_){\n if( this.doorDict[key_] === undefined) this.doorDict[key_] = door_;\n }\n\n public registerNewItem(key_,item_){\n if( this.itemDict[key_] === undefined) this.itemDict[key_] = item_;\n }\n\n public getCanvasByKey(key_){\n return this.canvasDict[key_];\n }\n\n public registerNewGate(key_,gate_){\n this.gateDict[key_] = gate_;\n }\n\n public getDoorByKey(key_){\n return this.doorDict[key_];\n }\n\n public getAdByKey(key_){\n return this.advertisementDict[key_];\n }\n\n public getGateByKey(key_){\n return this.gateDict[key_];\n }\n\n public getItemByKey(key_){\n return this.itemDict[key_];\n }\n\n public setPictureOnCanvas(post_: PostModel){\n let canvas = this.canvasDict[post_.canvas_key];\n console.log(this.canvasDict);\n if(canvas !== undefined){\n console.log(\"canvas to change: \"+post_.canvas_key+\"; to post url: \"+post_.url);\n canvas.setPostData(post_);\n } else {\n console.log(\"no canvas\");\n }\n }\n\n /********************\n * PERF MAnAGEMENT\n ********************/\n\n public addMeshToCluster(mesh_,type_){\n switch(type_){\n\n case Tile.TILE_GROUND: \n this.TileGroundMeshes.push(mesh_);\n break;\n\n case Tile.TILE_WALL: \n this.TileWallMeshes.push(type_);\n break;\n }\n }\n\n public createClusters(){\n BABYLON.Mesh.MergeMeshes(this.TileWallMeshes);\n BABYLON.Mesh.MergeMeshes(this.TileGroundMeshes);\n }\n\n /********************\n * PARSING MAP\n ********************/\n \n public getMapData(){\n return this.mapModel.level_data.split(\",\");\n }\n\n /*\n public getTileMapScaling(val_){\n val_ = (val_/this.mapModel.width)* MapMaker.TILE_SIZE;\n return val_;\n }*/\n\n }","import {\n Engine, Scene,FreeCamera, Light,\n DirectionalLight, HemisphericLight, ShadowGenerator,\n Color4, Color3Gradient,\n Mesh, VideoTexture,\n Vector3, MeshBuilder,\n ArcRotateCamera, StandardMaterial, Texture,\n Color3, SpriteManager, Sprite\n } from 'babylonjs';\n\n//import * as GUI from 'babylonjs-gui';\n\nimport { Game } from \"./game\";\nimport { MapMaker } from \"./mapMaker\";\nimport { PlayerModel } from '../models/player.model';\n\nexport class PlayerMesh {\n\n public objType : String = \"player\";\n private gameInstance : Game;\n private mapInstance : MapMaker;\n public playerMesh: Mesh;\n public dictKey : string;\n public playerModel : PlayerModel;\n\n public spriteManagerPlayer : SpriteManager;\n public sprite : Sprite;\n\n public uiAdvancedTexture: any;\n public rectUI: BABYLON.GUI.Rectangle;\n public label: BABYLON.GUI.TextBlock;\n public size;\n\n\n constructor(type_, playerModel_: PlayerModel, size_,){\n\n this.size = size_;\n\n this.playerModel = playerModel_;\n this.objType = type_;\n this.gameInstance = Game.getInstance();\n this.mapInstance = MapMaker.getInstance();\n\n if(this.playerModel.hp < 1 ){\n this.spriteManagerPlayer = new SpriteManager(\"playerManager\",\"./assets/textures/anon_sprite_dead.png\", 1, {width: 288, height: 288}, this.gameInstance.scene);\n this.sprite = new Sprite(\"player_\"+playerModel_.id, this.spriteManagerPlayer);\n } else {\n this.spriteManagerPlayer = new SpriteManager(\"playerManager\",\"./assets/textures/anon_sprite.png\", 1, {width: 290, height: 290}, this.gameInstance.scene);\n this.sprite = new Sprite(\"player_\"+playerModel_.id, this.spriteManagerPlayer);\n }\n \n\n this.sprite.width = 6;\n this.sprite.height = 6;\n\n this.sprite.position.x = this.playerModel .position_x * size_;\n this.sprite.position.z = this.playerModel .position_y * size_;\n this.sprite.position.y = 3;\n\n //Display player UI\n this.playerMesh = MeshBuilder.CreateBox( this.dictKey+\"_\"+playerModel_.id, {size: size_*0.5}, this.gameInstance.scene); \n this.playerMesh.position.y = size_ *0.5;\n this.playerMesh.position.x = this.playerModel.position_x * size_;\n this.playerMesh.position.z = this.playerModel.position_y * size_;\n this.playerMesh.visibility = 0;\n\n /*\n this.uiAdvancedTexture = BABYLON.GUI.AdvancedDynamicTexture.CreateFullscreenUI(\"UI\");\n this.uiAdvancedTexture.is3D = false;\n this.rectUI = new BABYLON.GUI.Rectangle();\n this.rectUI.width = 0.1;\n this.rectUI.height = 0.05;\n this.rectUI.fontFamily = \"Courier New, Courier, monospace\";\n this.rectUI.cornerRadius = 10;\n this.rectUI.color = \"Grey\";\n this.rectUI.background = \"#161616\";\n this.uiAdvancedTexture.addControl(this.rectUI);\n this.label = new BABYLON.GUI.TextBlock();\n this.label.text = \"#\"+this.playerModel.id+\"\\n💬\"+this.playerModel.talk;\n this.rectUI.addControl(this.label);\n this.rectUI.linkWithMesh( this.playerMesh); \n this.rectUI.linkOffsetY = -60;\n this.rectUI.linkOffsetX = 0;\n this.uiAdvancedTexture.freeze = true;*/\n\n return this;\n\n }\n\n public updatePlayerModel(model_: PlayerModel){\n\n this.playerModel = model_;\n let y = this.size *0.5;\n let x = this.playerModel.position_x * this.size ;\n let z = this.playerModel.position_y * this.size ;\n\n //this.playerMesh.locallyTranslate(new BABYLON.Vector3(x, y, z));\n \n let ySprite = 3;\n\n if(this.sprite != null){\n this.sprite.position.x = x;\n this.sprite.position.z = z;\n this.sprite.position.y = ySprite;\n }\n\n if(this.playerMesh != null){\n this.playerMesh.position.x = x;\n this.playerMesh.position.y = y;\n this.playerMesh.position.z = z;\n }\n\n //this.label.text = \"#\"+this.playerModel.id+\"\\n💬\"+this.playerModel.talk;\n }\n\n public clean(){\n\n this.spriteManagerPlayer.dispose();\n if(this.playerMesh != null) this.playerMesh.dispose();\n this.sprite.dispose();\n\n this.spriteManagerPlayer = null;\n this.playerMesh = null;\n this.sprite = null;\n /*\n this.rectUI.dispose();\n this.label.dispose();\n this.uiAdvancedTexture.dispose();*/\n\n }\n\n}","import {\n Engine, Scene,FreeCamera, Light,\n DirectionalLight, HemisphericLight, ShadowGenerator,\n Color4, Color3Gradient, Mesh,\n Vector3, MeshBuilder, ArcRotateCamera,\n StandardMaterial, Texture, Color3\n} from 'babylonjs'\n\nimport { Game } from \"./game\";\nimport { GameUtils } from \"./gameUtils\";\nimport { Helpers } from \"../utils/helpers\";\nimport { GameUIServiceService } from '../services/game-uiservice.service';\nimport { PlayerModel } from '../models/player.model';\nimport { MapMaker } from './mapMaker';\n\nexport class PlayerMotor {\n\n private gameInstance : Game;\n private static _instance : PlayerMotor;\n public playerBox : BABYLON.Mesh;\n\n //Properties for cam\n private playerHeight = 4; // The player eyes height\n private speed = 1;\n private inertia = 0.9;\n private angularSensibility = 1000;\n private angularSensibilityMobile = 13000;\n public playerModel : PlayerModel;\n\n private playerRotation;\n private joystickMoveSpeedY = 18;\n private joystickMoveSpeedX = 0.9;\n private isJoystick = false;\n\n static getInstance() {\n return this._instance || (this._instance = new this());\n }\n\n constructor() {\n\n }\n\n initMotor(){\n this.gameInstance = Game.getInstance();\n this.gameInstance.gameUIServiceService.changeStateEmitter.subscribe((state_)=>{\n console.log(state_);\n if(state_ === GameUIServiceService.STATE_GAME_RUNNING) {\n this.activateMotion(true);\n } else {\n this.activateMotion(false);\n }\n });\n\n this.gameInstance.camera = new BABYLON.FreeCamera('freeCamera', new BABYLON.Vector3(0, 5,-10), this.gameInstance.scene);\n this.activateMotion(true);\n }\n\n activateMotion(val_: boolean){\n if(val_){\n\n //Free cam\n this.gameInstance.camera.attachControl(this.gameInstance.scene.getEngine().getRenderingCanvas());\n\n // Activate gravity !\n //https://doc.babylonjs.com/babylon101/cameras,_mesh_collisions_and_gravity\n this.gameInstance.scene.gravity = new BABYLON.Vector3(0, -0.7, 0);\n this.gameInstance.camera.applyGravity = true;\n\n this.gameInstance.camera.ellipsoid = new BABYLON.Vector3(2.5, this.playerHeight, 2.5);\n this.gameInstance.camera.ellipsoidOffset = new BABYLON.Vector3(0, this.playerHeight, 0);\n this.gameInstance.camera.checkCollisions = true;\n \n GameUtils.setKeyBoardMapping(this.gameInstance);\n\n this.gameInstance.camera.speed = this.speed;\n this.gameInstance.camera.inertia = this.inertia;\n this.gameInstance.camera.angularSensibility = ( Helpers.isMobile())? this.angularSensibilityMobile : this.angularSensibility;\n\n } else {\n this.gameInstance.camera.detachControl(this.gameInstance.scene.getEngine().getRenderingCanvas());\n }\n }\n\n /*******************\n * PLACE THE PLAYER\n ******************/\n\n setPlayerPos(playerData_){\n\n //console.log(this.playerRotation );\n this.playerModel = playerData_;\n\n //convert teh X + y in position\n //console.log(\"playerPosY= \"+this.playerModel.position_x+\"; playerPosX= \"+this.playerModel.position_y);\n\n //Placing the player\n this.gameInstance.camera.position.x = this.playerModel.position_x * MapMaker.TILE_SIZE;\n this.gameInstance.camera.position.z = this.playerModel.position_y * MapMaker.TILE_SIZE;\n\n if(this.playerRotation != null) this.gameInstance.camera.rotation = this.playerRotation;\n }\n\n savePlayerRotation(){\n //We memorize the player rotation\n this.playerRotation = this.gameInstance.camera.rotation;\n }\n\n getPlayerPos(){\n\n if(this.playerModel == null){\n this.playerModel = new PlayerModel();\n this.playerModel.position_x = -1;\n this.playerModel.position_y = -1;\n } else {\n this.playerModel.position_x = this.gameInstance.camera.position.x / MapMaker.TILE_SIZE;\n this.playerModel.position_y = this.gameInstance.camera.position.z / MapMaker.TILE_SIZE;\n }\n \n\n return this.playerModel;\n }\n \n public activeJoystick(){\n\n this.isJoystick = true;\n let rightJoystick = new BABYLON.VirtualJoystick(false);\n \n this.gameInstance.scene.onBeforeRenderObservable.add(()=>{\n if(rightJoystick.pressed){\n\n //OLD position\n let moveY = rightJoystick.deltaPosition.y * (this.gameInstance.engine.getDeltaTime()/1000) * this.joystickMoveSpeedY;\n \n this.gameInstance.camera.position.z += moveY * Math.cos( this.gameInstance.camera.rotation.y );\n this.gameInstance.camera.position.x += moveY * Math.sin( this.gameInstance.camera.rotation.y );\n\n let moveX = rightJoystick.deltaPosition.x * (this.gameInstance.engine.getDeltaTime()/1000) * this.joystickMoveSpeedX;\n this.gameInstance.camera.rotation.y += moveX;\n }\n });\n \n }\n}","import {\n Engine, Scene,FreeCamera, Light,\n DirectionalLight, HemisphericLight, ShadowGenerator,\n Color4, Color3Gradient,\n Mesh,\n Vector3, MeshBuilder,\n ArcRotateCamera, StandardMaterial, Texture,\n Color3, SpriteManager, Sprite\n } from 'babylonjs';\n\n import * as BABYLON from 'babylonjs';\n\nimport { Game } from \"./game\";\nimport { MapMaker } from \"./mapMaker\";\nimport { CanvasPlane } from \"./canvasPlane\";\nimport { Door } from './door';\nimport { Gate } from './gate';\n\n\nexport class Tile {\n\n public static get TILE_EMPTY():number { return -1; }\n public static get TILE_GROUND():number { return 0; }\n public static get TILE_WALL():number { return 1; }\n public static get TILE_GATES():number { return 3; }\n public static get TILE_DOOR():number { return 4; }\n public static get TILE_DOOR_SECRET():number { return 5; }\n public static get TILE_LADDER():number { return 66; }\n public static get TILE_GRASS():number { return 7; }\n //public static get TILE_ADVERTISEMENT():number { return 12; }\n public static get TILE_START():number { return 13; }\n public static get TILE_GATES_SECRET():number { return 14; }\n \n\n public static meshGroundInstance: Mesh;\n public static meshGrassInstance: Mesh;\n public static meshWallInstance: Mesh;\n\n private gameInstance : Game;\n private mapInstance : MapMaker;\n private box : BABYLON.Mesh;\n private door : BABYLON.Mesh;\n\n //Type of tile\n private tileCoordonates: number[];\n\n constructor(type_, size, x: number,y: number,z: number, val_: string) {\n\n let type = parseInt(type_);\n this.tileCoordonates = [x, y, z];\n x = x*size;\n y = y*size;\n z = z*size;\n\n this.gameInstance = Game.getInstance();\n this.mapInstance = MapMaker.getInstance();\n\n if(type === Tile.TILE_WALL){\n\n this.box = this.getMeshWall(size);\n this.box.position.y = size * 0.5 + y;\n this.box.position.x = x;\n this.box.position.z = z;\n\n new CanvasPlane(\"canvas\",this.tileCoordonates[0]+\"_\"+this.tileCoordonates[1]+\"_\"+this.tileCoordonates[2], size, x, y, z, this.mapInstance.DIR_N);\n new CanvasPlane(\"canvas\",this.tileCoordonates[0]+\"_\"+this.tileCoordonates[1]+\"_\"+this.tileCoordonates[2], size, x, y, z, this.mapInstance.DIR_E);\n new CanvasPlane(\"canvas\",this.tileCoordonates[0]+\"_\"+this.tileCoordonates[1]+\"_\"+this.tileCoordonates[2], size, x, y, z, this.mapInstance.DIR_S);\n new CanvasPlane(\"canvas\",this.tileCoordonates[0]+\"_\"+this.tileCoordonates[1]+\"_\"+this.tileCoordonates[2], size, x, y, z, this.mapInstance.DIR_W);\n\n } else if(type === Tile.TILE_GROUND || type === Tile.TILE_START) {\n\n this.box = this.getMeshGround(size,\"./assets/textures/floor_dalle_text.jpg\");\n this.box.position.y = -size * 0.5 + y;\n this.box.position.x = x;\n this.box.position.z = z;\n this.mapInstance.addMeshToCluster(this.box,type);\n \n } else if(type === Tile.TILE_GRASS) {\n\n this.box = this.getMeshGrass(size,\"./assets/textures/grass_text.jpg\");\n this.box.position.y = -size * 0.5 + y;\n this.box.position.x = x;\n this.box.position.z = z;\n this.mapInstance.addMeshToCluster(this.box,type);\n\n } else if(type === Tile.TILE_LADDER) {\n\n console.log(\"GOT LADDER!\");\n this.box = this.getMeshLadder(size);\n this.box.position.y = size * 0.5 + y;\n this.box.position.x = x;\n this.box.position.z = z;\n this.mapInstance.addMeshToCluster(this.box,type);\n\n } else if(type === Tile.TILE_GATES || type === Tile.TILE_GATES_SECRET) {\n console.log(\"GOT GATES!\");\n\n //Create the ground\n this.box = this.getMeshGround(size, \"./assets/textures/floor_dalle_text.jpg\");\n this.box.position.y = -size * 0.5 + y;\n this.box.position.x = x;\n this.box.position.z = z;\n this.mapInstance.addMeshToCluster(this.box,Tile.TILE_GROUND);\n\n this.door = this.getMeshGate(size,x,y,z,val_);\n this.door.position.y = size * 0.5 + y;\n this.door.position.x = x;\n this.door.position.z = z;\n\n } else if(type === Tile.TILE_DOOR) {\n console.log(\"GOT DOOR!\");\n\n //Create the ground\n this.box = this.getMeshGround(size, \"./assets/textures/floor_dalle_text.jpg\");\n this.box.position.y = -size * 0.5 + y;\n this.box.position.x = x;\n this.box.position.z = z;\n this.mapInstance.addMeshToCluster(this.box,Tile.TILE_GROUND);\n\n this.door = this.getMeshDoor(size,x,y,z,false);\n this.door.position.y = size * 0.5 + y;\n this.door.position.x = x;\n this.door.position.z = z;\n\n } else if(type === Tile.TILE_DOOR_SECRET) {\n console.log(\"GOT DOOR!\");\n \n //Create the ground\n this.box = this.getMeshGround(size,\"./assets/textures/floor_dalle_text.jpg\");\n this.box.position.y = -size * 0.5 + y;\n this.box.position.x = x;\n this.box.position.z = z;\n this.mapInstance.addMeshToCluster(this.box,Tile.TILE_GROUND);\n \n this.door = this.getMeshDoor(size,x,y,z,true);\n this.door.position.y = size * 0.5 + y;\n this.door.position.x = x;\n this.door.position.z = z;\n } else {\n console.log(\"type not found! type \"+type);\n }\n \n\n /*\n \n this.gameInstance.shadowGen.getShadowMap().renderList.push( this.box );\n this.box.receiveShadows = true;*/\n }\n\n getMeshGround(size_,text_){\n\n if(!Tile.meshGroundInstance){\n\n let mesh = BABYLON.MeshBuilder.CreateBox(\"groundTile\", {size: size_}, this.gameInstance.scene);\n mesh.checkCollisions = true;\n \n let mat = new StandardMaterial(\"matGround\", this.gameInstance.scene);\n let textureBox = new Texture(text_, this.gameInstance.scene);\n mat.diffuseTexture = textureBox;\n mat.diffuseTexture.scale(1/4) ;\n mesh.material = mat;\n Tile.meshGroundInstance = mesh;\n this.gameInstance.setShadow(mesh);\n mat.freeze();\n mesh.convertToUnIndexedMesh();\n mesh.freezeWorldMatrix();\n }\n\n return Tile.meshGroundInstance.clone(\"Box Ground\");\n }\n\n getMeshGrass(size_,text_){\n\n if(!Tile.meshGrassInstance){\n\n let mesh = BABYLON.MeshBuilder.CreateBox(\"grassTile\", {size: size_}, this.gameInstance.scene);\n mesh.checkCollisions = true;\n \n let mat = new StandardMaterial(\"matGrass\", this.gameInstance.scene);\n let textureBox = new Texture(text_, this.gameInstance.scene);\n mat.diffuseTexture = textureBox;\n mat.diffuseTexture.scale(1/4) ;\n mesh.material = mat;\n Tile.meshGrassInstance = mesh;\n this.gameInstance.setShadow(mesh);\n mat.freeze();\n mesh.convertToUnIndexedMesh();\n mesh.freezeWorldMatrix();\n }\n\n return Tile.meshGrassInstance.clone(\"Box Grass\");\n }\n\n\n getMeshWall(size_){\n\n if(!Tile.meshWallInstance ){\n\n let mesh = MeshBuilder.CreateBox(\"myBox\", {size: size_}, this.gameInstance.scene);\n mesh.checkCollisions = true;\n let mat = new StandardMaterial(\"matBox\", this.gameInstance.scene);\n let textureBox = new Texture(\"./assets/textures/concrete_text.jpg\", this.gameInstance.scene);\n mat.diffuseTexture = textureBox;\n mesh.material = mat;\n Tile.meshWallInstance = mesh;\n this.gameInstance.setShadow(mesh);\n mat.freeze();\n mesh.convertToUnIndexedMesh();\n mesh.freezeWorldMatrix();\n \n }\n\n return Tile.meshWallInstance.clone(\"groundTile\");\n }\n /*\n getMeshAd(size_){\n\n let mesh = MeshBuilder.CreateBox(\"myBox\", {size: size_}, this.gameInstance.scene);\n mesh.checkCollisions = true;\n let mat = new StandardMaterial(\"matBoxLadder\", this.gameInstance.scene);\n mat.diffuseColor = BABYLON.Color3.Black();\n mesh.material = mat;\n mesh.convertToUnIndexedMesh();\n mat.freeze();\n\n return mesh;\n }*/\n\n getMeshLadder(size_){\n let mesh = MeshBuilder.CreateBox(\"ladder\", {size: size_}, this.gameInstance.scene);\n mesh.checkCollisions = true;\n let mat = new StandardMaterial(\"matBoxLadder\", this.gameInstance.scene);\n mat.diffuseColor = BABYLON.Color3.Red();\n mesh.material = mat;\n mesh.convertToUnIndexedMesh();\n mat.freeze();\n return mesh;\n }\n\n getMeshDoor(size_,x_,y_,z_, secret_){\n let door = new Door(this.tileCoordonates[0]+\"_\"+this.tileCoordonates[1]+\"_\"+this.tileCoordonates[2], size_, x_, y_, z_, secret_);\n return door.doorMesh;\n }\n\n getMeshGate(size_,x_,y_,z_, key_){\n let gate = new Gate(this.tileCoordonates[0]+\"_\"+this.tileCoordonates[1]+\"_\"+this.tileCoordonates[2], size_, x_, y_, z_,key_);\n return gate.doorMesh;\n }\n\n}","import { Injectable } from '@angular/core';\nimport { environment } from '../../environments/environment';\nimport { HttpClient, HttpParams, HttpHeaders } from '@angular/common/http';\nimport{ GameDataResponseModel } from '../models/game-data.response.model';\nimport{ PostStuffResponseModel } from '../models/postStuff.response.model';\nimport{ AdminResponseModel} from '../models/admin.response.model';\nimport{ GenericResponseModel } from '../models/generic.response.model';\nimport{ PostListResponseModel} from '../models/post-list.response.model';\n\nimport { PostModel } from '../models/post.model';\nimport { ActionModel } from '../models/action.model';\nimport { AllPostResponseModel } from '../models/all-post.response.model'\nimport { AllMapResponseModel } from '../models/all-map.response.model'\nimport { PlayerResponseModel } from '../models/player.response.model';\nimport {AllTilesResponseModel} from '../models/all-tiles.response.model';\nimport { PlayerModel } from '../models/player.model';\nimport { MapModel } from '../models/map.model';\nimport { OfflineService } from './offline.service';\nimport { AdvertisementModel } from '../models/advertisement.model';\n\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ChanWebService {\n\n serverUrl : string = environment.apiUrl;\n //playerData : PlayerModel;\n\n constructor(private http:HttpClient, private offlineService: OfflineService) {}\n\n/***********************\n * CHAN/POST WEBSERVICE\n **********************/\n\n //Init the server URL for the WS\n setServerUrl( url ){\n this.serverUrl = url;\n }\n\n //Get thread posts list\n getMapPostList(playerX_, playerY_, name_, talk_){\n let body = new HttpParams();\n body = this.addPlayerParams(body);\n body = body.append('action', 'getMapPosts');\n body = body.append('position_x', playerX_);\n body = body.append('position_y', playerY_);\n body = body.append('name', name_);\n body = body.append('talk', talk_);\n return this.http.post<GameDataResponseModel>(this.serverUrl+'ChanWebService.php',body);\n }\n\n//Get thread posts list\ngetCanvasPostList(mapKey, canvasKey){\n let body = new HttpParams();\n body = this.addPlayerParams(body);\n body = body.append('action', 'getPostsByCanvas');\n body = body.append('map_key', mapKey);\n body = body.append('canvas_key', canvasKey);\n return this.http.post<PostListResponseModel>(this.serverUrl+'ChanWebService.php',body);\n}\n\n//Get thread posts list\ngetReplyPostList(id_){\n let body = new HttpParams();\n body = this.addPlayerParams(body);\n body = body.append('action', 'getReplies');\n body = body.append('post_id', id_);\n return this.http.post<PostListResponseModel>(this.serverUrl+'ChanWebService.php',body);\n}\n\n//Create post\ncreatePost(post_ : PostModel){\n\n let body = new HttpParams();\n body = this.addPlayerParams(body);\n body = body.append('action', 'createPost');\n body = body.append('url', post_.url);\n body = body.append('message', post_.message);\n body = body.append('canvas_key', post_.canvas_key);\n body = body.append('map_key', post_.map_key);\n body = body.append('reply', post_.reply.toString());\n\n //body = body.set('action' , 'createThread');\n return this.http.post<PostStuffResponseModel>(this.serverUrl+'ChanWebService.php',body);\n\n}\n\ncreateLog(action_: ActionModel){\n let body = new HttpParams();\n body = this.addPlayerParams(body);\n body = body.append('action', 'setAction');\n body = body.append('player_action', action_.action);\n body = body.append('value', action_.value);\n return this.http.post<any>(this.serverUrl+'ChanWebService.php',body);\n}\n\ncreateAndUploadPaint(post_ : PostModel, imageData_ ){\n \n let body = new HttpParams();\n body = this.addPlayerParams(body);\n body = body.append('action', 'createPost');\n body = body.append('message', post_.message);\n body = body.append('canvas_key', post_.canvas_key);\n body = body.append('map_key', post_.map_key);\n body = body.append('reply', post_.reply.toString());\n body = body.append('image_data', imageData_);\n body = body.append('graffiti', post_.graffiti.toString());\n\n let headers = new HttpHeaders();\n headers.append(\"Content-Type\", \"application/x-www-form-urlencoded\");\n\n //http://j-query.blogspot.com/2011/02/save-base64-encoded-canvas-image-to-png.html\n\n //body = body.set('action' , 'createThread');\n return this.http.post<PostStuffResponseModel>(this.serverUrl+'ChanWebService.php',body);\n}\n\n/***********************\n * PLAYER WEBSERVICE\n **********************/\n\n//Get thread posts list\n/*setMap(mapKey){\n\n let body = new HttpParams();\n body = this.addPlayerParams(body);\n body = body.append('map_key', mapKey);\n body = body.append('action', 'changeMapPlayer');\n return this.http.post<PlayerResponseModel>(this.serverUrl+'ChanWebService.php',body);\n\n}*/\n\nchangeMapPlayerName(mapName){\n\n let body = new HttpParams();\n body = this.addPlayerParams(body);\n body = body.append('map_name', mapName);\n body = body.append('action', 'changeMapPlayerName');\n return this.http.post<PlayerResponseModel>(this.serverUrl+'ChanWebService.php',body);\n\n}\n\nchangeMapRandom(isSecret_){\n\n let body = new HttpParams();\n body = this.addPlayerParams(body);\n body = body.append('secret', isSecret_);\n body = body.append('action', 'changeMapRandom');\n return this.http.post<GameDataResponseModel>(this.serverUrl+'ChanWebService.php',body);\n\n}\n\ngetItem(itemKey){\n\n let body = new HttpParams();\n body = this.addPlayerParams(body);\n body = body.append('item_key', itemKey);\n body = body.append('action', 'setPlayerItem');\n return this.http.post<PlayerResponseModel>(this.serverUrl+'ChanWebService.php',body);\n\n}\n\naddPlayerParams(body_: HttpParams){\n let playerData: PlayerModel = this.offlineService.getPlayerData();\n body_ = body_.append('player_id',playerData.id.toString());\n body_ = body_.append('player_key',playerData.player_key);\n return body_;\n}\n\ncreateUser(anonId, anonToken, password, mapKey){\n let body = new HttpParams();\n body = body.append('action', 'initPlayer');\n if(anonId) body = body.append('player_id', anonId);\n if(anonToken) body = body.append('player_key', anonToken);\n if(password) body = body.append('player_password', password);\n if(mapKey) body = body.append('map_key', mapKey);\n return this.http.post<GameDataResponseModel>(this.serverUrl+'ChanWebService.php',body);\n}\n\n\ngetAds(){\n return this.http.get<AdvertisementModel[]>('./assets/amaz/amaz.json');\n}\n\n/***********************\n * ADMIN WEBSERVICE\n **********************/\n\ndeletePost(postId_,threadId_){\n let body = new HttpParams();\n body = this.addPlayerParams(body);\n body = body.append('action', 'deletePost');\n body = body.append('post_id', postId_.toString());\n body = body.append('map_key', threadId_);\n\n return this.http.post<GenericResponseModel>(this.serverUrl+'ChanWebService.php',body);\n }\n\n\n \n setPostUrlToFile(postId_){\n let body = new HttpParams();\n body = this.addPlayerParams(body);\n body = body.append('action', 'setPostUrlToFile');\n body = body.append('post_id', postId_.toString());\n\n return this.http.post<GenericResponseModel>(this.serverUrl+'ChanWebService.php',body);\n }\n\n deletePostForVal(val_){\n let body = new HttpParams();\n body = this.addPlayerParams(body);\n body = body.append('action', 'deletePostForVal');\n body = body.append('val',val_);\n\n return this.http.post<GenericResponseModel>(this.serverUrl+'ChanWebService.php',body);\n }\n\n setBan(id_){\n let body = new HttpParams();\n body = this.addPlayerParams(body);\n body = body.append('action', 'setBan');\n body = body.append('post_id',id_);\n\n return this.http.post<GenericResponseModel>(this.serverUrl+'ChanWebService.php',body);\n }\n\n canonPost(postId_,threadId_){\n let body = new HttpParams();\n body = this.addPlayerParams(body);\n body = body.append('action', 'setPostCanon');\n body = body.append('post_id', postId_.toString());\n body = body.append('map_key', threadId_);\n\n return this.http.post<GenericResponseModel>(this.serverUrl+'ChanWebService.php',body);\n }\n\n isAdminConnected(){\n let body = new HttpParams();\n body = body.append('action', 'testAdminSession');\n return this.http.post<AdminResponseModel>(this.serverUrl+'ChanWebService.php',body);\n }\n\n connectAdmin(password_){\n let body = new HttpParams();\n body = body.append('action', 'validAdmin');\n body = body.append('password', password_);\n return this.http.post<AdminResponseModel>(this.serverUrl+'ChanWebService.php',body);\n }\n\n setAdminPassword(password_){\n let body = new HttpParams();\n body = body.append('action', 'setAdminPassword');\n body = body.append('password', password_);\n return this.http.post<AdminResponseModel>(this.serverUrl+'ChanWebService.php',body);\n }\n\n logout(){\n let body = new HttpParams();\n body = body.append('action', 'unLog');\n return this.http.post<AdminResponseModel>(this.serverUrl+'ChanWebService.php',body);\n }\n\n getAllPost(){\n let body = new HttpParams();\n body = this.addPlayerParams(body);\n body = body.append('action', 'getAllPost');\n return this.http.post<AllPostResponseModel>(this.serverUrl+'ChanWebService.php',body);\n }\n\n getAllMaps(){\n let body = new HttpParams();\n body = this.addPlayerParams(body);\n body = body.append('action', 'getAllMaps');\n return this.http.post<AllMapResponseModel>(this.serverUrl+'ChanWebService.php',body);\n }\n\ngetAllTiles(){\n let body = new HttpParams();\n body = this.addPlayerParams(body);\n body = body.append('action', 'getAllTiles');\n return this.http.post<AllTilesResponseModel>(this.serverUrl+'ChanWebService.php',body);\n}\n\nsaveMapModel(map_: MapModel){\n let body = new HttpParams();\n body = this.addPlayerParams(body);\n body = body.append('action', 'saveMapModel');\n\n body = body.append('id', map_.id.toString());\n body = body.append('key', map_.key);\n body = body.append('name', map_.name);\n body = body.append('theme', map_.theme);\n body = body.append('x', map_.x.toString());\n body = body.append('y', map_.y.toString());\n body = body.append('door_key_n', map_.door_key_n);\n body = body.append('door_key_e', map_.door_key_e);\n body = body.append('door_key_s', map_.door_key_s);\n body = body.append('door_key_w', map_.door_key_w);\n\n body = body.append('level_data', map_.level_data);\n\n body = body.append('height', map_.height.toString());\n body = body.append('width', map_.width.toString());\n\n return this.http.post<any>(this.serverUrl+'ChanWebService.php',body);\n}\n\n\n}\n","import { Injectable, EventEmitter } from '@angular/core';\nimport { InteractionModel } from '../models/interaction-model';\nimport { PlayerModel } from '../models/player.model';\nimport { PostModel} from '../models/post.model';\nimport { ConfigModel } from '../models/config.model';\nimport ItemModel from '../models/item.model';\nimport { GameDataModel } from '../models/game-data.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class GameUIServiceService {\n\n public changeStateEmitter = new EventEmitter<number>();\n //public changePlayerDataEmitter = new EventEmitter<PlayerModel>();\n //public changeItemsDataEmitter = new EventEmitter<any>();\n public changeGameDataEmitter = new EventEmitter<GameDataModel>();\n public changeConfigEmitter = new EventEmitter<ConfigModel>();\n public sendInteractionsEmitter = new EventEmitter<InteractionModel>();\n public postArtCanvasEmitter = new EventEmitter<PostModel>();\n public deletePostEmitter = new EventEmitter<PostModel>();\n\n public static get STATE_GAME_RUNNING():number { return 0; }\n public static get STATE_POSTING_UI():number { return 1; }\n public static get STATE_POST_VIEWER_UI():number { return 2; }\n public static get STATE_POSTING_LOADING():number { return 3; }\n public static get STATE_PAINTING_UI():number { return 4; }\n public static get STATE_CMD_UI():number { return 5; }\n public static get STATE_INFO_UI():number { return 6; }\n public static get STATE_ITEMS_UI():number { return 7; }\n public static get STATE_NO_PLAYER():number { return 8; }\n public static get STATE_PLAYER_UI():number { return 9; }\n\n public forceWSEmitter = new EventEmitter<any>();\n\n\n private gameState : number = GameUIServiceService.STATE_GAME_RUNNING;\n\n constructor() {\n\n }\n\n public changeState( state_ : number){\n this.gameState = state_;\n this.changeStateEmitter.emit( this.gameState);\n }\n\n public sendInteraction(interact_ : InteractionModel){\n this.sendInteractionsEmitter.emit( interact_);\n }\n\n public sendPost(post_ : PostModel){\n this.postArtCanvasEmitter.emit( post_);\n }\n\n public updateGameData(gameData_ : GameDataModel){\n this.changeGameDataEmitter.emit( gameData_ );\n }\n\n /*\n public updatePlayerData(playerData_ : PlayerModel){\n this.changePlayerDataEmitter.emit( playerData_);\n }\n\n public updateItemsData(itemsData){\n console.log(itemsData);\n this.changeItemsDataEmitter.emit( {items: itemsData});\n }*/\n\n public updateConfigData(config_ : ConfigModel){\n this.changeConfigEmitter.emit( config_);\n }\n\n public forceWS(){\n this.forceWSEmitter.emit();\n }\n\n public deletePost(post_){\n this.deletePostEmitter.emit(post_);\n }\n\n}\n","import { Injectable } from '@angular/core';\nimport { PlayerModel } from '../models/player.model';\nimport * as localforage from \"localforage\";\nimport { ConfigModel } from '../models/config.model';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class OfflineService {\n\n PLAYER_KEY: string = \"player_one_data2\";\n PLAYER_NAME_KEY: string = \"player_name\";\n KEYBOARD_KEY: string = \"keyboard\";\n CONFIG_KEY: string = \"config_key\";\n CHAN_KEY: string = \"CHAN_KEY3\";\n\n constructor() {\n }\n\n getPlayerData(){\n let data = localStorage.getItem(this.PLAYER_KEY);\n if(data != null ) return JSON.parse(data);\n return new PlayerModel();\n }\n\n savePlayer(player_ : PlayerModel){\n return localStorage.setItem(this.PLAYER_KEY, JSON.stringify(player_));\n }\n\n getPlayerName(){\n let data = localStorage.getItem(this.PLAYER_NAME_KEY);\n if(data != null ) return data;\n let name = Math.random().toString(36).substr(2, 9);\n this.savePlayerName(name);\n return name;\n }\n\n savePlayerName(playerName_){\n return localStorage.setItem(this.PLAYER_NAME_KEY, JSON.stringify(playerName_));\n }\n\n getConfig(){\n let data = localStorage.getItem(this.CONFIG_KEY);\n console.log(\"getConfig\"+data);\n if(data != null ) return JSON.parse(data);\n return new ConfigModel();\n }\n\n saveConfig(config_: ConfigModel){\n localStorage.setItem(this.CONFIG_KEY, JSON.stringify(config_));\n }\n\n getChanData(){\n let data = localStorage.getItem(this.CHAN_KEY);\n if(data != null ) return JSON.parse(data);\n return ['alpha'];\n }\n\n saveChan(chan_ : string){\n let listChan: string[] = this.getChanData();\n for(let c = 0; c < listChan.length; c++){\n if(listChan[c] == chan_) return;\n }\n listChan.push(chan_);\n return localStorage.setItem(this.CHAN_KEY, JSON.stringify(listChan));\n }\n \n /*\n getKeyboard(){\n return localStorage.getItem(this.KEYBOARD_KEY);\n }\n\n saveKeyboard(keyboard_){\n console.log(\"saveKeyboard()\"+keyboard_);\n return localStorage.setItem(this.KEYBOARD_KEY, keyboard_);\n }*/\n}\n","export class Constants{\n\n public static get ITEM_KEY_UPLOAD_RING():string { return \"upload\"; }\n public static get ITEM_KEY_DELETE_SPONGE():string { return \"post delete\"; }\n public static get ITEM_KEY_VARNISH():string { return \"varnish powder\"; } \n\n}","export class Helpers {\n\n /**\n * Determine the mobile operating system.\n * This function returns one of 'iOS', 'Android', 'Windows Phone', or 'unknown'.\n *\n * @returns {Boolean}\n */\n\n public static isMobile() {\n\n let userAgent = navigator.userAgent || navigator.vendor ;\n \n // Windows Phone must come first because its UA also contains \"Android\"\n if (/windows phone/i.test(userAgent)) {\n return true;\n }\n \n if (/android/i.test(userAgent)) {\n return true;\n }\n \n // iOS detection from: http://stackoverflow.com/a/9039885/177710\n if (/iPad|iPhone|iPod/.test(userAgent) ) {\n return true;\n }\n \n return false;\n }\n\n public static antiWord(message_){\n return message_.replace(/nigger/ig, 'noggel');\n }\n\n public static isPT(){\n let lang = navigator.language ; \n return (lang.toLowerCase().indexOf('pt') > -1 || lang.toLowerCase().indexOf('BR') > -1);\n }\n\n}","import { DomSanitizer } from '@angular/platform-browser';\n\nexport class UrlParser {\n\n public url: string;\n public type: number = 0;\n\n public static get TYPE_LINK():number { return 0; }\n public static get TYPE_IMG():number { return 1; }\n public static get TYPE_IMG_GIF():number { return 2; }\n public static get TYPE_MOVIE():number { return 3; }\n public static get TYPE_YOUTUBE():number { return 4; }\n public static get TYPE_MP3():number { return 5; }\n\n constructor(url_ : string){\n this.url = url_;\n this.type = this.getUrlType();\n return this;\n }\n\n public setUrl(url_: string){\n this.url = url_;\n this.type = this.getUrlType();\n return this;\n }\n\n public getUrlType(){\n\n if(this.url != undefined){\n let tempUrl = this.url.toLowerCase();\n if(tempUrl.indexOf(\"png\") > -1 || tempUrl.indexOf(\"jpg\") > -1 || tempUrl.indexOf(\"jpeg\") > -1 || tempUrl.indexOf(\"webp\") > -1 ){\n return UrlParser.TYPE_IMG;\n } else if(tempUrl.indexOf(\"gif\") > -1 ){\n return UrlParser.TYPE_IMG_GIF;\n } else if(tempUrl.indexOf(\".mp4\") > -1 || tempUrl.indexOf(\".webm\") > -1 ){\n return UrlParser.TYPE_MOVIE;\n } else if(tempUrl.indexOf(\"youtube.com\") > -1 || tempUrl.indexOf(\"youtu.be\") > -1 ){\n return UrlParser.TYPE_YOUTUBE;\n } else if(tempUrl.indexOf(\"mp3\") > -1){\n return UrlParser.TYPE_MP3;\n }\n }\n\n return UrlParser.TYPE_LINK;\n }\n\n public getYoutubeId(){\n let regExp = /^.*(youtu\\.be\\/|v\\/|u\\/\\w\\/|embed\\/|watch\\?v=|\\&v=)([^#\\&\\?]*).*/;\n let match = this.url.match(regExp);\n if (match && match[2].length == 11) {\n return match[2];\n } else {\n return \"\";\n }\n }\n\n public getImage(){\n\n if(this.type === UrlParser.TYPE_YOUTUBE){\n //get the preview\n return \"https://img.youtube.com/vi/\"+this.getYoutubeId()+\"/hqdefault.jpg\";\n }\n\n return this.url;\n }\n\n public getSafeTubeURL(sanitizer_ : DomSanitizer){\n let tmpURl;\n if(this.type === UrlParser.TYPE_YOUTUBE){\n //get the preview\n tmpURl = \"https://www.youtube.com/embed/\"+this.getYoutubeId();\n return sanitizer_.bypassSecurityTrustResourceUrl(tmpURl);\n }\n\n return this.url;\n }\n}","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false,\n apiUrl: 'http://localhost:8888/srv/php/',\n clientUrl: '/',\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n\n"],"sourceRoot":""} |