selectCharacterScene and customCharacterScene in svelte
This commit is contained in:
parent
120a488121
commit
4923ce8b83
157
front/dist/resources/html/CustomCharacterScene.html
vendored
157
front/dist/resources/html/CustomCharacterScene.html
vendored
@ -1,157 +0,0 @@
|
|||||||
<style>
|
|
||||||
#customizeScene {
|
|
||||||
background: #0000;
|
|
||||||
/*border: 1px solid #ebeeee;*/
|
|
||||||
border-radius: 6px;
|
|
||||||
margin: 10px auto 0;
|
|
||||||
color: #ebeeee;
|
|
||||||
width: 42vw;
|
|
||||||
height: 48vh;
|
|
||||||
max-width: 350px;
|
|
||||||
/*max-height: 48vh;*/
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
#customizeScene h1 {
|
|
||||||
background-image: linear-gradient(top, #f1f3f3, #d4dae0);
|
|
||||||
border-bottom: 1px solid #a6abaf;
|
|
||||||
border-radius: 6px 6px 0 0;
|
|
||||||
box-sizing: border-box;
|
|
||||||
color: #727678;
|
|
||||||
display: block;
|
|
||||||
height: 43px;
|
|
||||||
padding-top: 10px;
|
|
||||||
margin: 0;
|
|
||||||
text-align: center;
|
|
||||||
text-shadow: 0 -1px 0 rgba(0,0,0,0.2), 0 1px 0 #fff;
|
|
||||||
}
|
|
||||||
#customizeScene input {
|
|
||||||
font-size: 70%;
|
|
||||||
background: linear-gradient(top, #d6d7d7, #dee0e0);
|
|
||||||
border: 1px solid #a1a3a3;
|
|
||||||
border-radius: 4px;
|
|
||||||
box-shadow: 0 1px #fff;
|
|
||||||
box-sizing: border-box;
|
|
||||||
color: #696969;
|
|
||||||
height: 30px;
|
|
||||||
transition: box-shadow 0.3s;
|
|
||||||
width: 100%;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
#customizeScene section {
|
|
||||||
margin: 10px;
|
|
||||||
}
|
|
||||||
#customizeScene section.action {
|
|
||||||
text-align: center;
|
|
||||||
position: sticky;
|
|
||||||
bottom: 0;
|
|
||||||
top: 100%;
|
|
||||||
}
|
|
||||||
#customizeScene section.action.action-move {
|
|
||||||
top: 55%;
|
|
||||||
}
|
|
||||||
#customizeScene button {
|
|
||||||
margin: 2px 10px;
|
|
||||||
background-color: black;;
|
|
||||||
color: #ebeeee;
|
|
||||||
border-radius: 7px;
|
|
||||||
padding-bottom: 4px;
|
|
||||||
}
|
|
||||||
#customizeScene button#customizeSceneFormCancel {
|
|
||||||
background-color: #aca6a600;
|
|
||||||
color: #292929;
|
|
||||||
}
|
|
||||||
#customizeScene section h6,
|
|
||||||
#customizeScene section h5{
|
|
||||||
margin: 1px;
|
|
||||||
}
|
|
||||||
#customizeScene section.text-center{
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
#customizeScene section a{
|
|
||||||
font-size: 14px;
|
|
||||||
text-decoration: underline;
|
|
||||||
color: #ebeeee;
|
|
||||||
}
|
|
||||||
#customizeScene section a:hover{
|
|
||||||
font-weight: 700;
|
|
||||||
}
|
|
||||||
#customizeScene section p{
|
|
||||||
text-align: left;
|
|
||||||
font-size: 8px;
|
|
||||||
margin: 10px 10px;
|
|
||||||
}
|
|
||||||
#customizeScene section p.err{
|
|
||||||
color: red;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
#customizeScene section p.info{
|
|
||||||
display: none;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
#customizeScene section input#customizeSceneLink{
|
|
||||||
background-color: #a1a3a3;
|
|
||||||
}
|
|
||||||
#customizeScene section button.customizeSceneButton{
|
|
||||||
position: absolute;
|
|
||||||
margin: 0;
|
|
||||||
top: -8vh;
|
|
||||||
font-size: 10px;
|
|
||||||
padding: 2px 4px;
|
|
||||||
}
|
|
||||||
#customizeScene section button.customizeSceneButton#customizeSceneButtonLeft{
|
|
||||||
left: 0vw;
|
|
||||||
}
|
|
||||||
#customizeScene section button.customizeSceneButton#customizeSceneButtonRight{
|
|
||||||
right: 0vw;
|
|
||||||
}
|
|
||||||
#customizeScene section button.customizeSceneButton#customizeSceneButtonUp{
|
|
||||||
left: calc(2vw + 40px);
|
|
||||||
transform: rotate(90deg);
|
|
||||||
margin-top: -20px;
|
|
||||||
}
|
|
||||||
#customizeScene section button.customizeSceneButton#customizeSceneButtonDown{
|
|
||||||
right: calc(2vw + 40px);
|
|
||||||
transform: rotate(90deg);
|
|
||||||
margin-top: 20px;
|
|
||||||
}
|
|
||||||
#customizeScene section.action img{
|
|
||||||
width: 8px;
|
|
||||||
height: 8px;
|
|
||||||
}
|
|
||||||
#customizeScene section.action a#customizeSceneFormBack img{
|
|
||||||
margin-top: -2px;
|
|
||||||
}
|
|
||||||
#customizeScene section.action button#customizeSceneFormSubmit img{
|
|
||||||
transform: rotate(180deg);
|
|
||||||
}
|
|
||||||
@media only screen and (max-width: 600px) {
|
|
||||||
#customizeScene {
|
|
||||||
max-width: 160px;
|
|
||||||
overflow-y: scroll;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@media only screen and (max-height: 400px) {
|
|
||||||
#customizeScene section.action {
|
|
||||||
top: 92%;
|
|
||||||
}
|
|
||||||
#customizeScene section.action.action-move {
|
|
||||||
top: 80%;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<form id="customizeScene" hidden>
|
|
||||||
<section class="text-center">
|
|
||||||
<h5>Custom your WOKA</h3>
|
|
||||||
</section>
|
|
||||||
<section class="action action-move">
|
|
||||||
<button class="customizeSceneButton" id="customizeSceneButtonLeft"> < </button>
|
|
||||||
<button class="customizeSceneButton" id="customizeSceneButtonRight"> > </button>
|
|
||||||
<!--<button class="customizeSceneButton" id="customizeSceneButtonUp"> < </button>
|
|
||||||
<button class="customizeSceneButton" id="customizeSceneButtonDown"> > </button>-->
|
|
||||||
</section>
|
|
||||||
<section class="action">
|
|
||||||
<a type="submit" id="customizeSceneFormBack">Back <img src="resources/objects/arrow_up.png"/></a>
|
|
||||||
<button type="submit" id="customizeSceneFormSubmit">Next <img src="resources/objects/arrow_up.png"/></button>
|
|
||||||
</section>
|
|
||||||
</form>
|
|
139
front/dist/resources/html/selectCharacterScene.html
vendored
139
front/dist/resources/html/selectCharacterScene.html
vendored
@ -1,139 +0,0 @@
|
|||||||
<style>
|
|
||||||
#selectCharacterScene {
|
|
||||||
background: #0000;
|
|
||||||
/*border: 1px solid #ebeeee;*/
|
|
||||||
border-radius: 6px;
|
|
||||||
margin: 10px auto 0;
|
|
||||||
color: #ebeeee;
|
|
||||||
max-height: 48vh;
|
|
||||||
max-width: 300px;
|
|
||||||
width: 40vw;
|
|
||||||
overflow: hidden;
|
|
||||||
}
|
|
||||||
#selectCharacterScene h1 {
|
|
||||||
background-image: linear-gradient(top, #f1f3f3, #d4dae0);
|
|
||||||
border-bottom: 1px solid #a6abaf;
|
|
||||||
border-radius: 6px 6px 0 0;
|
|
||||||
box-sizing: border-box;
|
|
||||||
color: #727678;
|
|
||||||
display: block;
|
|
||||||
height: 43px;
|
|
||||||
padding-top: 10px;
|
|
||||||
margin: 0;
|
|
||||||
text-align: center;
|
|
||||||
text-shadow: 0 -1px 0 rgba(0,0,0,0.2), 0 1px 0 #fff;
|
|
||||||
}
|
|
||||||
#selectCharacterScene input {
|
|
||||||
font-size: 70%;
|
|
||||||
background: linear-gradient(top, #d6d7d7, #dee0e0);
|
|
||||||
border: 1px solid #a1a3a3;
|
|
||||||
border-radius: 4px;
|
|
||||||
box-shadow: 0 1px #fff;
|
|
||||||
box-sizing: border-box;
|
|
||||||
color: #696969;
|
|
||||||
height: 30px;
|
|
||||||
transition: box-shadow 0.3s;
|
|
||||||
width: 100%;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
#selectCharacterScene section {
|
|
||||||
margin: 10px;
|
|
||||||
}
|
|
||||||
#selectCharacterScene section.action {
|
|
||||||
text-align: center;
|
|
||||||
margin: 0;
|
|
||||||
margin-top: 28vh;
|
|
||||||
}
|
|
||||||
#selectCharacterScene button {
|
|
||||||
margin: 10px 0px;
|
|
||||||
background-color: black;;
|
|
||||||
color: #ebeeee;
|
|
||||||
border-radius: 7px;
|
|
||||||
padding-bottom: 4px;
|
|
||||||
width: 100px;
|
|
||||||
}
|
|
||||||
#selectCharacterScene button#selectCharacterSceneFormCancel {
|
|
||||||
background-color: #aca6a600;
|
|
||||||
color: #292929;
|
|
||||||
}
|
|
||||||
#selectCharacterScene section h6,
|
|
||||||
#selectCharacterScene section h5{
|
|
||||||
margin: 1px;
|
|
||||||
}
|
|
||||||
#selectCharacterScene section.text-center{
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
#selectCharacterScene section a{
|
|
||||||
font-size: 8px;
|
|
||||||
text-decoration: underline;
|
|
||||||
color: #ebeeee;
|
|
||||||
}
|
|
||||||
#selectCharacterScene section a:hover{
|
|
||||||
font-weight: 700;
|
|
||||||
}
|
|
||||||
#selectCharacterScene section p{
|
|
||||||
text-align: left;
|
|
||||||
font-size: 8px;
|
|
||||||
margin: 10px 10px;
|
|
||||||
}
|
|
||||||
#selectCharacterScene section p.err{
|
|
||||||
color: red;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
#selectCharacterScene section p.info{
|
|
||||||
display: none;
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
#selectCharacterScene section input#selectCharacterSceneLink{
|
|
||||||
background-color: #a1a3a3;
|
|
||||||
}
|
|
||||||
#selectCharacterScene section img{
|
|
||||||
width: 160px;
|
|
||||||
margin: 20px 0;
|
|
||||||
}
|
|
||||||
#selectCharacterScene section button.selectCharacterButton{
|
|
||||||
position: absolute;
|
|
||||||
top: 20vh;
|
|
||||||
margin: 0;
|
|
||||||
width: 25px;
|
|
||||||
}
|
|
||||||
#selectCharacterScene section button.selectCharacterButton#selectCharacterButtonLeft{
|
|
||||||
display: none;
|
|
||||||
left: 1vw;
|
|
||||||
}
|
|
||||||
#selectCharacterScene section button.selectCharacterButton#selectCharacterButtonRight{
|
|
||||||
display: none;
|
|
||||||
right: 1vw;
|
|
||||||
}
|
|
||||||
#selectCharacterScene section button#selectCharacterSceneFormCustomYourOwnSubmit{
|
|
||||||
font-size: 14px;
|
|
||||||
width: auto;
|
|
||||||
margin-top: -2px;
|
|
||||||
background-color: #ffd700;
|
|
||||||
color: black;
|
|
||||||
}
|
|
||||||
@media only screen and (max-width: 800px),
|
|
||||||
only screen and (max-height: 600px) {
|
|
||||||
#selectCharacterScene{
|
|
||||||
overflow-y: scroll;
|
|
||||||
}
|
|
||||||
#selectCharacterScene section button.selectCharacterButton#selectCharacterButtonRight{
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
#selectCharacterScene section button.selectCharacterButton#selectCharacterButtonLeft{
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<form id="selectCharacterScene" hidden>
|
|
||||||
<section class="text-center">
|
|
||||||
<h5>Select your WOKA</h5>
|
|
||||||
<button class="selectCharacterButton" id="selectCharacterButtonLeft"> < </button>
|
|
||||||
<button class="selectCharacterButton" id="selectCharacterButtonRight"> > </button>
|
|
||||||
</section>
|
|
||||||
<section class="action">
|
|
||||||
<button type="submit" id="selectCharacterSceneFormSubmit">Continue</button>
|
|
||||||
<button type="submit" id="selectCharacterSceneFormCustomYourOwnSubmit">Custom your WOKA</button>
|
|
||||||
</section>
|
|
||||||
</form>
|
|
BIN
front/dist/resources/objects/arrow_down.png
vendored
Normal file
BIN
front/dist/resources/objects/arrow_down.png
vendored
Normal file
Binary file not shown.
After Width: | Height: | Size: 4.7 KiB |
BIN
front/dist/resources/objects/arrow_up.png
vendored
BIN
front/dist/resources/objects/arrow_up.png
vendored
Binary file not shown.
Before Width: | Height: | Size: 149 B After Width: | Height: | Size: 4.6 KiB |
@ -6,15 +6,27 @@
|
|||||||
import MyCamera from "./MyCamera.svelte";
|
import MyCamera from "./MyCamera.svelte";
|
||||||
import SelectCompanionScene from "./SelectCompanion/SelectCompanionScene.svelte";
|
import SelectCompanionScene from "./SelectCompanion/SelectCompanionScene.svelte";
|
||||||
import {selectCompanionSceneVisibleStore} from "../Stores/SelectCompanionStore";
|
import {selectCompanionSceneVisibleStore} from "../Stores/SelectCompanionStore";
|
||||||
|
import {selectCharacterSceneVisibleStore} from "../Stores/SelectCharacterStore";
|
||||||
|
import SelectCharacterScene from "./selectCharacter/SelectCharacterScene.svelte";
|
||||||
|
import {customCharacterSceneVisibleStore} from "../Stores/CustomCharacterStore";
|
||||||
|
|
||||||
import {Game} from "../Phaser/Game/Game";
|
import {Game} from "../Phaser/Game/Game";
|
||||||
|
import CustomCharacterScene from "./CustomCharacterScene/CustomCharacterScene.svelte";
|
||||||
|
|
||||||
|
|
||||||
export let game: Game;
|
export let game: Game;
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
|
{#if $selectCharacterSceneVisibleStore}
|
||||||
|
<SelectCharacterScene game={ game }></SelectCharacterScene>
|
||||||
|
{/if}
|
||||||
|
{#if $customCharacterSceneVisibleStore}
|
||||||
|
<CustomCharacterScene game={ game }></CustomCharacterScene>
|
||||||
|
{/if}
|
||||||
{#if $selectCompanionSceneVisibleStore}
|
{#if $selectCompanionSceneVisibleStore}
|
||||||
<SelectCompanionScene game={game}></SelectCompanionScene>
|
<SelectCompanionScene game={ game }></SelectCompanionScene>
|
||||||
{/if}
|
{/if}
|
||||||
<!-- {#if $menuIconVisible}
|
<!-- {#if $menuIconVisible}
|
||||||
<MenuIcon />
|
<MenuIcon />
|
||||||
|
@ -0,0 +1,110 @@
|
|||||||
|
<script lang="typescript">
|
||||||
|
import { Game } from "../../Phaser/Game/Game";
|
||||||
|
import { CustomizeScene } from "../../Phaser/Login/CustomizeScene";
|
||||||
|
|
||||||
|
export let game: Game;
|
||||||
|
|
||||||
|
const customCharacterScene = game.scene.scenes.find((scene) => scene instanceof CustomizeScene);
|
||||||
|
let activeRow = customCharacterScene.activeRow;
|
||||||
|
|
||||||
|
function selectLeft() {
|
||||||
|
customCharacterScene.moveCursorHorizontally(-1);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selectRight() {
|
||||||
|
customCharacterScene.moveCursorHorizontally(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
function selectUp() {
|
||||||
|
customCharacterScene.moveCursorVertically(-1);
|
||||||
|
activeRow = customCharacterScene.activeRow;
|
||||||
|
}
|
||||||
|
|
||||||
|
function selectDown() {
|
||||||
|
customCharacterScene.moveCursorVertically(1);
|
||||||
|
activeRow = customCharacterScene.activeRow;
|
||||||
|
}
|
||||||
|
|
||||||
|
function previousScene() {
|
||||||
|
customCharacterScene.backToPreviousScene();
|
||||||
|
}
|
||||||
|
|
||||||
|
function finish() {
|
||||||
|
customCharacterScene.nextSceneToCamera();
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<form class="customCharacterScene">
|
||||||
|
<section class="text-center">
|
||||||
|
<h2>Customize your WOKA</h2>
|
||||||
|
</section>
|
||||||
|
<section class="action action-move">
|
||||||
|
<button class="customCharacterSceneButton customCharacterSceneButtonLeft nes-btn" on:click|preventDefault={ selectLeft }> < </button>
|
||||||
|
<button class="customCharacterSceneButton customCharacterSceneButtonRight nes-btn" on:click|preventDefault={ selectRight }> > </button>
|
||||||
|
</section>
|
||||||
|
<section class="action">
|
||||||
|
{#if activeRow === 0}
|
||||||
|
<button type="submit" class="customCharacterSceneFormBack nes-btn" on:click|preventDefault={ previousScene }>Return</button>
|
||||||
|
{/if}
|
||||||
|
{#if activeRow !== 0}
|
||||||
|
<button type="submit" class="customCharacterSceneFormBack nes-btn" on:click|preventDefault={ selectUp }>Back <img src="resources/objects/arrow_up.png" alt=""/></button>
|
||||||
|
{/if}
|
||||||
|
{#if activeRow === 5}
|
||||||
|
<button type="submit" class="customCharacterSceneFormSubmit nes-btn is-primary" on:click|preventDefault={ finish }>Finish</button>
|
||||||
|
{/if}
|
||||||
|
{#if activeRow !== 5}
|
||||||
|
<button type="submit" class="customCharacterSceneFormSubmit nes-btn is-primary" on:click|preventDefault={ selectDown }>Next <img src="resources/objects/arrow_down.png" alt=""/></button>
|
||||||
|
{/if}
|
||||||
|
</section>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
form.customCharacterScene {
|
||||||
|
font-family: "Press Start 2P";
|
||||||
|
pointer-events: auto;
|
||||||
|
color: #ebeeee;
|
||||||
|
}
|
||||||
|
.customCharacterScene button {
|
||||||
|
font-family: "Press Start 2P";
|
||||||
|
}
|
||||||
|
.customCharacterScene section {
|
||||||
|
margin: 10px;
|
||||||
|
}
|
||||||
|
.customCharacterScene section.action {
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 55vh;
|
||||||
|
}
|
||||||
|
.customCharacterScene section h2 {
|
||||||
|
font-family: "Press Start 2P";
|
||||||
|
margin: 1px;
|
||||||
|
}
|
||||||
|
.customCharacterScene section.text-center{
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.customCharacterScene section button.customCharacterSceneButton{
|
||||||
|
position: absolute;
|
||||||
|
top: 33vh;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.customCharacterScene section button.customCharacterSceneFormBack{
|
||||||
|
color: #292929;
|
||||||
|
}
|
||||||
|
.customCharacterScene button.customCharacterSceneButtonLeft{
|
||||||
|
left: 33vw;
|
||||||
|
}
|
||||||
|
.customCharacterScene button.customCharacterSceneButtonRight{
|
||||||
|
right: 33vw;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 800px) {
|
||||||
|
.customCharacterScene button.customCharacterSceneButtonLeft{
|
||||||
|
left: 10vw;
|
||||||
|
}
|
||||||
|
.customCharacterScene button.customCharacterSceneButtonRight{
|
||||||
|
right: 10vw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
</style>
|
@ -0,0 +1,84 @@
|
|||||||
|
<script lang="typescript">
|
||||||
|
import { Game } from "../../Phaser/Game/Game";
|
||||||
|
import { SelectCharacterScene } from "../../Phaser/Login/SelectCharacterScene";
|
||||||
|
|
||||||
|
export let game: Game;
|
||||||
|
|
||||||
|
const selectCharacterScene = game.scene.scenes.find((scene) => scene instanceof SelectCharacterScene);
|
||||||
|
|
||||||
|
function selectLeft() {
|
||||||
|
selectCharacterScene.moveToLeft();
|
||||||
|
}
|
||||||
|
|
||||||
|
function selectRight() {
|
||||||
|
selectCharacterScene.moveToRight();
|
||||||
|
}
|
||||||
|
|
||||||
|
function cameraScene() {
|
||||||
|
selectCharacterScene.nextSceneToCameraScene();
|
||||||
|
}
|
||||||
|
|
||||||
|
function customizeScene() {
|
||||||
|
selectCharacterScene.nextSceneToCustomizeScene();
|
||||||
|
}
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<form class="selectCharacterScene">
|
||||||
|
<section class="text-center">
|
||||||
|
<h2>Select your WOKA</h2>
|
||||||
|
<button class="selectCharacterButton selectCharacterButtonLeft nes-btn" on:click|preventDefault={ selectLeft }> < </button>
|
||||||
|
<button class="selectCharacterButton selectCharacterButtonRight nes-btn" on:click|preventDefault={ selectRight }> > </button>
|
||||||
|
</section>
|
||||||
|
<section class="action">
|
||||||
|
<button type="submit" class="selectCharacterSceneFormSubmit nes-btn is-primary" on:click|preventDefault={ cameraScene }>Continue</button>
|
||||||
|
<button type="submit" class="selectCharacterSceneFormCustomYourOwnSubmit nes-btn" on:click|preventDefault={ customizeScene }>Customize your WOKA</button>
|
||||||
|
</section>
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
form.selectCharacterScene {
|
||||||
|
font-family: "Press Start 2P";
|
||||||
|
pointer-events: auto;
|
||||||
|
color: #ebeeee;
|
||||||
|
}
|
||||||
|
.selectCharacterScene button {
|
||||||
|
font-family: "Press Start 2P";
|
||||||
|
}
|
||||||
|
.selectCharacterScene section {
|
||||||
|
margin: 10px;
|
||||||
|
}
|
||||||
|
.selectCharacterScene section.action {
|
||||||
|
text-align: center;
|
||||||
|
margin-top: 55vh;
|
||||||
|
}
|
||||||
|
.selectCharacterScene section h2 {
|
||||||
|
font-family: "Press Start 2P";
|
||||||
|
margin: 1px;
|
||||||
|
}
|
||||||
|
.selectCharacterScene section.text-center{
|
||||||
|
text-align: center;
|
||||||
|
}
|
||||||
|
.selectCharacterScene section button.selectCharacterButton{
|
||||||
|
position: absolute;
|
||||||
|
top: 33vh;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
.selectCharacterScene button.selectCharacterButtonLeft{
|
||||||
|
left: 33vw;
|
||||||
|
}
|
||||||
|
.selectCharacterScene button.selectCharacterButtonRight{
|
||||||
|
right: 33vw;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media only screen and (max-width: 800px) {
|
||||||
|
.selectCharacterScene button.selectCharacterButtonLeft{
|
||||||
|
left: 10vw;
|
||||||
|
}
|
||||||
|
.selectCharacterScene button.selectCharacterButtonRight{
|
||||||
|
right: 10vw;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
</style>
|
@ -11,6 +11,8 @@ import {AbstractCharacterScene} from "./AbstractCharacterScene";
|
|||||||
import {areCharacterLayersValid} from "../../Connexion/LocalUser";
|
import {areCharacterLayersValid} from "../../Connexion/LocalUser";
|
||||||
import { MenuScene } from "../Menu/MenuScene";
|
import { MenuScene } from "../Menu/MenuScene";
|
||||||
import { SelectCharacterSceneName } from "./SelectCharacterScene";
|
import { SelectCharacterSceneName } from "./SelectCharacterScene";
|
||||||
|
import {customCharacterSceneVisibleStore} from "../../Stores/CustomCharacterStore";
|
||||||
|
import {selectCharacterSceneVisibleStore} from "../../Stores/SelectCharacterStore";
|
||||||
|
|
||||||
export const CustomizeSceneName = "CustomizeScene";
|
export const CustomizeSceneName = "CustomizeScene";
|
||||||
|
|
||||||
@ -22,7 +24,7 @@ export class CustomizeScene extends AbstractCharacterScene {
|
|||||||
|
|
||||||
private selectedLayers: number[] = [0];
|
private selectedLayers: number[] = [0];
|
||||||
private containersRow: Container[][] = [];
|
private containersRow: Container[][] = [];
|
||||||
private activeRow:number = 0;
|
public activeRow:number = 0;
|
||||||
private layers: BodyResourceDescriptionInterface[][] = [];
|
private layers: BodyResourceDescriptionInterface[][] = [];
|
||||||
|
|
||||||
private customizeSceneElement!: Phaser.GameObjects.DOMElement;
|
private customizeSceneElement!: Phaser.GameObjects.DOMElement;
|
||||||
@ -51,35 +53,9 @@ export class CustomizeScene extends AbstractCharacterScene {
|
|||||||
}
|
}
|
||||||
|
|
||||||
create() {
|
create() {
|
||||||
this.customizeSceneElement = this.add.dom(-1000, 0).createFromCache(customizeSceneKey);
|
customCharacterSceneVisibleStore.set(true);
|
||||||
this.centerXDomElement(this.customizeSceneElement, 350);
|
|
||||||
MenuScene.revealMenusAfterInit(this.customizeSceneElement, customizeSceneKey);
|
|
||||||
|
|
||||||
this.customizeSceneElement.addListener('click');
|
this.events.addListener('wake', () => { customCharacterSceneVisibleStore.set(true); });
|
||||||
this.customizeSceneElement.on('click', (event:MouseEvent) => {
|
|
||||||
event.preventDefault();
|
|
||||||
if((event?.target as HTMLInputElement).id === 'customizeSceneButtonLeft') {
|
|
||||||
this.moveCursorHorizontally(-1);
|
|
||||||
}else if((event?.target as HTMLInputElement).id === 'customizeSceneButtonRight') {
|
|
||||||
this.moveCursorHorizontally(1);
|
|
||||||
}else if((event?.target as HTMLInputElement).id === 'customizeSceneButtonDown') {
|
|
||||||
this.moveCursorVertically(1);
|
|
||||||
}else if((event?.target as HTMLInputElement).id === 'customizeSceneButtonUp') {
|
|
||||||
this.moveCursorVertically(-1);
|
|
||||||
}else if((event?.target as HTMLInputElement).id === 'customizeSceneFormBack') {
|
|
||||||
if(this.activeRow > 0){
|
|
||||||
this.moveCursorVertically(-1);
|
|
||||||
}else{
|
|
||||||
this.backToPreviousScene();
|
|
||||||
}
|
|
||||||
}else if((event?.target as HTMLButtonElement).id === 'customizeSceneFormSubmit') {
|
|
||||||
if(this.activeRow < 5){
|
|
||||||
this.moveCursorVertically(1);
|
|
||||||
}else{
|
|
||||||
this.nextSceneToCamera();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
this.Rectangle = this.add.rectangle(this.cameras.main.worldView.x + this.cameras.main.width / 2, this.cameras.main.worldView.y + this.cameras.main.height / 3, 32, 33)
|
this.Rectangle = this.add.rectangle(this.cameras.main.worldView.x + this.cameras.main.width / 2, this.cameras.main.worldView.y + this.cameras.main.height / 3, 32, 33)
|
||||||
this.Rectangle.setStrokeStyle(2, 0xFFFFFF);
|
this.Rectangle.setStrokeStyle(2, 0xFFFFFF);
|
||||||
@ -116,7 +92,7 @@ export class CustomizeScene extends AbstractCharacterScene {
|
|||||||
this.onResize();
|
this.onResize();
|
||||||
}
|
}
|
||||||
|
|
||||||
private moveCursorHorizontally(index: number): void {
|
public moveCursorHorizontally(index: number): void {
|
||||||
this.selectedLayers[this.activeRow] += index;
|
this.selectedLayers[this.activeRow] += index;
|
||||||
if (this.selectedLayers[this.activeRow] < 0) {
|
if (this.selectedLayers[this.activeRow] < 0) {
|
||||||
this.selectedLayers[this.activeRow] = 0
|
this.selectedLayers[this.activeRow] = 0
|
||||||
@ -128,27 +104,7 @@ export class CustomizeScene extends AbstractCharacterScene {
|
|||||||
this.saveInLocalStorage();
|
this.saveInLocalStorage();
|
||||||
}
|
}
|
||||||
|
|
||||||
private moveCursorVertically(index:number): void {
|
public moveCursorVertically(index:number): void {
|
||||||
|
|
||||||
if(index === -1 && this.activeRow === 5){
|
|
||||||
const button = this.customizeSceneElement.getChildByID('customizeSceneFormSubmit') as HTMLButtonElement;
|
|
||||||
button.innerHTML = `Next <img src="resources/objects/arrow_up.png"/>`;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(index === 1 && this.activeRow === 4){
|
|
||||||
const button = this.customizeSceneElement.getChildByID('customizeSceneFormSubmit') as HTMLButtonElement;
|
|
||||||
button.innerText = 'Finish';
|
|
||||||
}
|
|
||||||
|
|
||||||
if(index === -1 && this.activeRow === 1){
|
|
||||||
const button = this.customizeSceneElement.getChildByID('customizeSceneFormBack') as HTMLButtonElement;
|
|
||||||
button.innerText = `Return`;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(index === 1 && this.activeRow === 0){
|
|
||||||
const button = this.customizeSceneElement.getChildByID('customizeSceneFormBack') as HTMLButtonElement;
|
|
||||||
button.innerHTML = `Back <img src="resources/objects/arrow_up.png"/>`;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.activeRow += index;
|
this.activeRow += index;
|
||||||
if (this.activeRow < 0) {
|
if (this.activeRow < 0) {
|
||||||
@ -269,8 +225,6 @@ export class CustomizeScene extends AbstractCharacterScene {
|
|||||||
|
|
||||||
this.Rectangle.x = this.cameras.main.worldView.x + this.cameras.main.width / 2;
|
this.Rectangle.x = this.cameras.main.worldView.x + this.cameras.main.width / 2;
|
||||||
this.Rectangle.y = this.cameras.main.worldView.y + this.cameras.main.height / 3;
|
this.Rectangle.y = this.cameras.main.worldView.y + this.cameras.main.height / 3;
|
||||||
|
|
||||||
this.centerXDomElement(this.customizeSceneElement, 350);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private nextSceneToCamera(){
|
private nextSceneToCamera(){
|
||||||
@ -290,10 +244,13 @@ export class CustomizeScene extends AbstractCharacterScene {
|
|||||||
this.scene.sleep(CustomizeSceneName);
|
this.scene.sleep(CustomizeSceneName);
|
||||||
this.scene.remove(SelectCharacterSceneName);
|
this.scene.remove(SelectCharacterSceneName);
|
||||||
gameManager.tryResumingGame(this, EnableCameraSceneName);
|
gameManager.tryResumingGame(this, EnableCameraSceneName);
|
||||||
|
customCharacterSceneVisibleStore.set(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private backToPreviousScene(){
|
private backToPreviousScene(){
|
||||||
this.scene.sleep(CustomizeSceneName);
|
this.scene.sleep(CustomizeSceneName);
|
||||||
this.scene.run(SelectCharacterSceneName);
|
this.scene.run(SelectCharacterSceneName);
|
||||||
|
customCharacterSceneVisibleStore.set(false);
|
||||||
|
selectCharacterSceneVisibleStore.set(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,46 +7,46 @@ export class SelectCharacterMobileScene extends SelectCharacterScene {
|
|||||||
this.selectedRectangle.destroy();
|
this.selectedRectangle.destroy();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected defineSetupPlayer(numero: number){
|
protected defineSetupPlayer(num: number){
|
||||||
const deltaX = 30;
|
const deltaX = 30;
|
||||||
const deltaY = 2;
|
const deltaY = 2;
|
||||||
let [playerX, playerY] = this.getCharacterPosition();
|
let [playerX, playerY] = this.getCharacterPosition();
|
||||||
let playerVisible = true;
|
let playerVisible = true;
|
||||||
let playerScale = 1.5;
|
let playerScale = 1.5;
|
||||||
let playserOpactity = 1;
|
let playerOpacity = 1;
|
||||||
|
|
||||||
if( this.currentSelectUser !== numero ){
|
if( this.currentSelectUser !== num ){
|
||||||
playerVisible = false;
|
playerVisible = false;
|
||||||
}
|
}
|
||||||
if( numero === (this.currentSelectUser + 1) ){
|
if( num === (this.currentSelectUser + 1) ){
|
||||||
playerY -= deltaY;
|
playerY -= deltaY;
|
||||||
playerX += deltaX;
|
playerX += deltaX;
|
||||||
playerScale = 0.8;
|
playerScale = 0.8;
|
||||||
playserOpactity = 0.6;
|
playerOpacity = 0.6;
|
||||||
playerVisible = true;
|
playerVisible = true;
|
||||||
}
|
}
|
||||||
if( numero === (this.currentSelectUser + 2) ){
|
if( num === (this.currentSelectUser + 2) ){
|
||||||
playerY -= deltaY;
|
playerY -= deltaY;
|
||||||
playerX += (deltaX * 2);
|
playerX += (deltaX * 2);
|
||||||
playerScale = 0.8;
|
playerScale = 0.8;
|
||||||
playserOpactity = 0.6;
|
playerOpacity = 0.6;
|
||||||
playerVisible = true;
|
playerVisible = true;
|
||||||
}
|
}
|
||||||
if( numero === (this.currentSelectUser - 1) ){
|
if( num === (this.currentSelectUser - 1) ){
|
||||||
playerY -= deltaY;
|
playerY -= deltaY;
|
||||||
playerX -= deltaX;
|
playerX -= deltaX;
|
||||||
playerScale = 0.8;
|
playerScale = 0.8;
|
||||||
playserOpactity = 0.6;
|
playerOpacity = 0.6;
|
||||||
playerVisible = true;
|
playerVisible = true;
|
||||||
}
|
}
|
||||||
if( numero === (this.currentSelectUser - 2) ){
|
if( num === (this.currentSelectUser - 2) ){
|
||||||
playerY -= deltaY;
|
playerY -= deltaY;
|
||||||
playerX -= (deltaX * 2);
|
playerX -= (deltaX * 2);
|
||||||
playerScale = 0.8;
|
playerScale = 0.8;
|
||||||
playserOpactity = 0.6;
|
playerOpacity = 0.6;
|
||||||
playerVisible = true;
|
playerVisible = true;
|
||||||
}
|
}
|
||||||
return {playerX, playerY, playerScale, playserOpactity, playerVisible}
|
return {playerX, playerY, playerScale, playerOpacity, playerVisible}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -11,6 +11,8 @@ import {areCharacterLayersValid} from "../../Connexion/LocalUser";
|
|||||||
import {touchScreenManager} from "../../Touch/TouchScreenManager";
|
import {touchScreenManager} from "../../Touch/TouchScreenManager";
|
||||||
import {PinchManager} from "../UserInput/PinchManager";
|
import {PinchManager} from "../UserInput/PinchManager";
|
||||||
import {MenuScene} from "../Menu/MenuScene";
|
import {MenuScene} from "../Menu/MenuScene";
|
||||||
|
import {selectCharacterSceneVisibleStore} from "../../Stores/SelectCharacterStore";
|
||||||
|
import {customCharacterSceneVisibleStore} from "../../Stores/CustomCharacterStore";
|
||||||
|
|
||||||
//todo: put this constants in a dedicated file
|
//todo: put this constants in a dedicated file
|
||||||
export const SelectCharacterSceneName = "SelectCharacterScene";
|
export const SelectCharacterSceneName = "SelectCharacterScene";
|
||||||
@ -49,24 +51,7 @@ export class SelectCharacterScene extends AbstractCharacterScene {
|
|||||||
}
|
}
|
||||||
|
|
||||||
create() {
|
create() {
|
||||||
|
selectCharacterSceneVisibleStore.set(true);
|
||||||
this.selectCharacterSceneElement = this.add.dom(-1000, 0).createFromCache(selectCharacterKey);
|
|
||||||
this.centerXDomElement(this.selectCharacterSceneElement, 300);
|
|
||||||
MenuScene.revealMenusAfterInit(this.selectCharacterSceneElement, selectCharacterKey);
|
|
||||||
|
|
||||||
this.selectCharacterSceneElement.addListener('click');
|
|
||||||
this.selectCharacterSceneElement.on('click', (event:MouseEvent) => {
|
|
||||||
event.preventDefault();
|
|
||||||
if((event?.target as HTMLInputElement).id === 'selectCharacterButtonLeft') {
|
|
||||||
this.moveToLeft();
|
|
||||||
}else if((event?.target as HTMLInputElement).id === 'selectCharacterButtonRight') {
|
|
||||||
this.moveToRight();
|
|
||||||
}else if((event?.target as HTMLInputElement).id === 'selectCharacterSceneFormSubmit') {
|
|
||||||
this.nextSceneToCameraScene();
|
|
||||||
}else if((event?.target as HTMLInputElement).id === 'selectCharacterSceneFormCustomYourOwnSubmit') {
|
|
||||||
this.nextSceneToCustomizeScene();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
if (touchScreenManager.supportTouchScreen) {
|
if (touchScreenManager.supportTouchScreen) {
|
||||||
new PinchManager(this);
|
new PinchManager(this);
|
||||||
@ -109,6 +94,7 @@ export class SelectCharacterScene extends AbstractCharacterScene {
|
|||||||
gameManager.setCharacterLayers([this.selectedPlayer.texture.key]);
|
gameManager.setCharacterLayers([this.selectedPlayer.texture.key]);
|
||||||
gameManager.tryResumingGame(this, EnableCameraSceneName);
|
gameManager.tryResumingGame(this, EnableCameraSceneName);
|
||||||
this.scene.remove(SelectCharacterSceneName);
|
this.scene.remove(SelectCharacterSceneName);
|
||||||
|
selectCharacterSceneVisibleStore.set(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected nextSceneToCustomizeScene(): void {
|
protected nextSceneToCustomizeScene(): void {
|
||||||
@ -117,6 +103,7 @@ export class SelectCharacterScene extends AbstractCharacterScene {
|
|||||||
}
|
}
|
||||||
this.scene.sleep(SelectCharacterSceneName);
|
this.scene.sleep(SelectCharacterSceneName);
|
||||||
this.scene.run(CustomizeSceneName);
|
this.scene.run(CustomizeSceneName);
|
||||||
|
selectCharacterSceneVisibleStore.set(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
createCurrentPlayer(): void {
|
createCurrentPlayer(): void {
|
||||||
@ -186,35 +173,35 @@ export class SelectCharacterScene extends AbstractCharacterScene {
|
|||||||
this.moveUser();
|
this.moveUser();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected defineSetupPlayer(numero: number){
|
protected defineSetupPlayer(num: number){
|
||||||
const deltaX = 32;
|
const deltaX = 32;
|
||||||
const deltaY = 32;
|
const deltaY = 32;
|
||||||
let [playerX, playerY] = this.getCharacterPosition(); // player X and player y are middle of the
|
let [playerX, playerY] = this.getCharacterPosition(); // player X and player y are middle of the
|
||||||
|
|
||||||
playerX = ( (playerX - (deltaX * 2.5)) + ((deltaX) * (numero % this.nbCharactersPerRow)) ); // calcul position on line users
|
playerX = ( (playerX - (deltaX * 2.5)) + ((deltaX) * (num % this.nbCharactersPerRow)) ); // calcul position on line users
|
||||||
playerY = ( (playerY - (deltaY * 2)) + ((deltaY) * ( Math.floor(numero / this.nbCharactersPerRow) )) ); // calcul position on column users
|
playerY = ( (playerY - (deltaY * 2)) + ((deltaY) * ( Math.floor(num / this.nbCharactersPerRow) )) ); // calcul position on column users
|
||||||
|
|
||||||
const playerVisible = true;
|
const playerVisible = true;
|
||||||
const playerScale = 1;
|
const playerScale = 1;
|
||||||
const playserOpactity = 1;
|
const playerOpacity = 1;
|
||||||
|
|
||||||
// if selected
|
// if selected
|
||||||
if( numero === this.currentSelectUser ){
|
if( num === this.currentSelectUser ){
|
||||||
this.selectedRectangle.setX(playerX);
|
this.selectedRectangle.setX(playerX);
|
||||||
this.selectedRectangle.setY(playerY);
|
this.selectedRectangle.setY(playerY);
|
||||||
}
|
}
|
||||||
|
|
||||||
return {playerX, playerY, playerScale, playserOpactity, playerVisible}
|
return {playerX, playerY, playerScale, playerOpacity, playerVisible}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected setUpPlayer(player: Phaser.Physics.Arcade.Sprite, numero: number){
|
protected setUpPlayer(player: Phaser.Physics.Arcade.Sprite, num: number){
|
||||||
|
|
||||||
const {playerX, playerY, playerScale, playserOpactity, playerVisible} = this.defineSetupPlayer(numero);
|
const {playerX, playerY, playerScale, playerOpacity, playerVisible} = this.defineSetupPlayer(num);
|
||||||
player.setBounce(0.2);
|
player.setBounce(0.2);
|
||||||
player.setCollideWorldBounds(false);
|
player.setCollideWorldBounds(false);
|
||||||
player.setVisible( playerVisible );
|
player.setVisible( playerVisible );
|
||||||
player.setScale(playerScale, playerScale);
|
player.setScale(playerScale, playerScale);
|
||||||
player.setAlpha(playserOpactity);
|
player.setAlpha(playerOpacity);
|
||||||
player.setX(playerX);
|
player.setX(playerX);
|
||||||
player.setY(playerY);
|
player.setY(playerY);
|
||||||
}
|
}
|
||||||
@ -243,7 +230,5 @@ export class SelectCharacterScene extends AbstractCharacterScene {
|
|||||||
public onResize(): void {
|
public onResize(): void {
|
||||||
//move position of user
|
//move position of user
|
||||||
this.moveUser();
|
this.moveUser();
|
||||||
|
|
||||||
this.centerXDomElement(this.selectCharacterSceneElement, 300);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
3
front/src/Stores/CustomCharacterStore.ts
Normal file
3
front/src/Stores/CustomCharacterStore.ts
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
import { derived, writable, Writable } from "svelte/store";
|
||||||
|
|
||||||
|
export const customCharacterSceneVisibleStore = writable(false);
|
3
front/src/Stores/SelectCharacterStore.ts
Normal file
3
front/src/Stores/SelectCharacterStore.ts
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
import { derived, writable, Writable } from "svelte/store";
|
||||||
|
|
||||||
|
export const selectCharacterSceneVisibleStore = writable(false);
|
Loading…
Reference in New Issue
Block a user