Merge branch 'release/1.12.4'
This commit is contained in:
commit
350db19f46
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "mnml-client",
|
"name": "mnml-client",
|
||||||
"version": "1.12.3",
|
"version": "1.12.4",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "mnml-client",
|
"name": "mnml-client",
|
||||||
"version": "1.12.3",
|
"version": "1.12.4",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@ -15,7 +15,7 @@ const addState = connect(
|
|||||||
ws,
|
ws,
|
||||||
game,
|
game,
|
||||||
|
|
||||||
authenticated,
|
instance,
|
||||||
activeSkill,
|
activeSkill,
|
||||||
animFocus,
|
animFocus,
|
||||||
resolution,
|
resolution,
|
||||||
@ -30,7 +30,7 @@ const addState = connect(
|
|||||||
|
|
||||||
return {
|
return {
|
||||||
game,
|
game,
|
||||||
authenticated,
|
instance,
|
||||||
activeSkill,
|
activeSkill,
|
||||||
animFocus,
|
animFocus,
|
||||||
resolution,
|
resolution,
|
||||||
@ -54,7 +54,7 @@ class GameConstruct extends preact.Component {
|
|||||||
render() {
|
render() {
|
||||||
const {
|
const {
|
||||||
// Changing state variables
|
// Changing state variables
|
||||||
authenticated,
|
instance,
|
||||||
game,
|
game,
|
||||||
activeSkill,
|
activeSkill,
|
||||||
animFocus,
|
animFocus,
|
||||||
@ -81,7 +81,9 @@ class GameConstruct extends preact.Component {
|
|||||||
const unfocus = animFocus && !animFocus.includes(construct.id) ? 'unfocus' : '';
|
const unfocus = animFocus && !animFocus.includes(construct.id) ? 'unfocus' : '';
|
||||||
|
|
||||||
const targeted = game.stack.find(c => c.target === construct.id);
|
const targeted = game.stack.find(c => c.target === construct.id);
|
||||||
const highlight = !authenticated && !targeted && activeSkill ? 'highlight' : '';
|
|
||||||
|
const firstRoundTutorial = instance && instance.time_control === 'Practice' && !game.resolutions.length;
|
||||||
|
const highlight = firstRoundTutorial && !targeted && activeSkill ? 'highlight' : '';
|
||||||
|
|
||||||
const crypSkills = player
|
const crypSkills = player
|
||||||
? <div class="skills"> {range(0, 3).map(j => <SkillBtn key={j} construct={construct} i={j} />)} </div>
|
? <div class="skills"> {range(0, 3).map(j => <SkillBtn key={j} construct={construct} i={j} />)} </div>
|
||||||
|
|||||||
@ -10,6 +10,7 @@ const addState = connect(
|
|||||||
game,
|
game,
|
||||||
account,
|
account,
|
||||||
authenticated,
|
authenticated,
|
||||||
|
instance,
|
||||||
chatShow,
|
chatShow,
|
||||||
animating,
|
animating,
|
||||||
} = state;
|
} = state;
|
||||||
@ -35,6 +36,7 @@ const addState = connect(
|
|||||||
game,
|
game,
|
||||||
account,
|
account,
|
||||||
authenticated,
|
authenticated,
|
||||||
|
instance,
|
||||||
chatShow,
|
chatShow,
|
||||||
sendAbandon,
|
sendAbandon,
|
||||||
sendGameSkillClear,
|
sendGameSkillClear,
|
||||||
@ -68,6 +70,7 @@ function GameCtrlBtns(args) {
|
|||||||
account,
|
account,
|
||||||
chatShow,
|
chatShow,
|
||||||
authenticated,
|
authenticated,
|
||||||
|
instance,
|
||||||
|
|
||||||
getInstanceState,
|
getInstanceState,
|
||||||
sendGameSkillClear,
|
sendGameSkillClear,
|
||||||
@ -86,7 +89,8 @@ function GameCtrlBtns(args) {
|
|||||||
quit();
|
quit();
|
||||||
}
|
}
|
||||||
|
|
||||||
const noTargets = !authenticated && game.stack.length === 0;
|
const firstRoundTutorial = instance && instance.time_control === 'Practice' && !game.resolutions.length;
|
||||||
|
const noTargets = firstRoundTutorial && game.stack.length === 0;
|
||||||
|
|
||||||
const readyBtn = <button disabled={animating || noTargets} class="ready" onClick={() => sendReady()}>Ready</button>;
|
const readyBtn = <button disabled={animating || noTargets} class="ready" onClick={() => sendReady()}>Ready</button>;
|
||||||
const quitBtn = <button disabled={animating} class="quit" onClick={quitClick}>Back</button>;
|
const quitBtn = <button disabled={animating} class="quit" onClick={quitClick}>Back</button>;
|
||||||
|
|||||||
@ -50,7 +50,7 @@ function InstanceCtrlBtns(args) {
|
|||||||
} = args;
|
} = args;
|
||||||
|
|
||||||
const finished = instance && instance.phase === 'Finished';
|
const finished = instance && instance.phase === 'Finished';
|
||||||
const tutorialDisable = tutorial && tutorial < 8;
|
const tutorialDisable = instance.time_control === 'Practice' && tutorial && tutorial < 8;
|
||||||
return (
|
return (
|
||||||
<div class="instance-ctrl-btns">
|
<div class="instance-ctrl-btns">
|
||||||
<button disabled={!account.subscribed} onClick={() => setChatShow(!chatShow)}>Chat</button>
|
<button disabled={!account.subscribed} onClick={() => setChatShow(!chatShow)}>Chat</button>
|
||||||
|
|||||||
@ -44,15 +44,14 @@ class TargetSvg extends Component {
|
|||||||
animating,
|
animating,
|
||||||
game,
|
game,
|
||||||
gameEffectInfo,
|
gameEffectInfo,
|
||||||
authenticated,
|
|
||||||
} = props;
|
} = props;
|
||||||
const { width, height } = state;
|
const { width, height } = state;
|
||||||
|
|
||||||
if (!game) return false; // game will be null when battle ends
|
if (!game) return false; // game will be null when battle ends
|
||||||
if (game.phase === 'Finished') return false; // Clear everything if its over (in case of abandon)
|
if (game.phase === 'Finished') return false; // Clear everything if its over (in case of abandon)
|
||||||
|
|
||||||
// First time joining game phase
|
// First round of a game
|
||||||
if (!authenticated && game.stack.length === 0) {
|
if (!game.resolutions.length && game.stack.length === 0) {
|
||||||
return (
|
return (
|
||||||
<div class="resolving-skill">
|
<div class="resolving-skill">
|
||||||
<h2><b>Select a skill</b> from each construct, <b>click a target</b> for that skill and then click <b>READY</b>.</h2>
|
<h2><b>Select a skill</b> from each construct, <b>click a target</b> for that skill and then click <b>READY</b>.</h2>
|
||||||
|
|||||||
@ -9,7 +9,7 @@ const buttons = require('./buttons');
|
|||||||
const { removeTier } = require('../utils');
|
const { removeTier } = require('../utils');
|
||||||
|
|
||||||
const addState = connect(
|
const addState = connect(
|
||||||
({ itemUnequip, vboxHighlight, vboxSelected, tutorial }) => ({ itemUnequip, vboxHighlight, vboxSelected, tutorial }));
|
({ itemUnequip, vboxHighlight, vboxSelected, tutorial, instance }) => ({ itemUnequip, vboxHighlight, vboxSelected, tutorial, instance }));
|
||||||
|
|
||||||
class stashElement extends preact.Component {
|
class stashElement extends preact.Component {
|
||||||
shouldComponentUpdate(newProps) {
|
shouldComponentUpdate(newProps) {
|
||||||
@ -41,6 +41,7 @@ class stashElement extends preact.Component {
|
|||||||
vboxHighlight,
|
vboxHighlight,
|
||||||
vboxSelected,
|
vboxSelected,
|
||||||
tutorial,
|
tutorial,
|
||||||
|
instance,
|
||||||
} = props;
|
} = props;
|
||||||
|
|
||||||
const { storeSelect, stashSelect } = vboxSelected;
|
const { storeSelect, stashSelect } = vboxSelected;
|
||||||
@ -97,7 +98,7 @@ class stashElement extends preact.Component {
|
|||||||
: `${border} ${notValidCombo ? 'fade' : ''}`;
|
: `${border} ${notValidCombo ? 'fade' : ''}`;
|
||||||
|
|
||||||
const invObject = shapes[v] ? shapes[v]() : v;
|
const invObject = shapes[v] ? shapes[v]() : v;
|
||||||
const tutorialDisable = tutorial === 1;
|
const tutorialDisable = tutorial === 1 && instance.time_control === 'Practice' && instance.rounds.length === 1;
|
||||||
return (
|
return (
|
||||||
<label
|
<label
|
||||||
key={i}
|
key={i}
|
||||||
|
|||||||
@ -14,7 +14,7 @@ const addState = connect(
|
|||||||
} = state;
|
} = state;
|
||||||
|
|
||||||
return {
|
return {
|
||||||
promptRegister: tutorial === 99, // see events
|
promptRegister: !tutorial,
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|||||||
@ -38,9 +38,13 @@ function Register(args) {
|
|||||||
|
|
||||||
const registerSubmit = (event) => {
|
const registerSubmit = (event) => {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
this.setState({ name: '', password: '', confirm: '' });
|
||||||
submitRegister(name, password);
|
submitRegister(name, password);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const pwLen = () =>
|
||||||
|
!password || password && password.length > 3;
|
||||||
|
|
||||||
const registerConfirm = () =>
|
const registerConfirm = () =>
|
||||||
password === confirm;
|
password === confirm;
|
||||||
|
|
||||||
@ -50,24 +54,30 @@ function Register(args) {
|
|||||||
|
|
||||||
return (
|
return (
|
||||||
<div class="login">
|
<div class="login">
|
||||||
<label for="username">Username</label>
|
<label class="login-input" for="username">Username </label>
|
||||||
<input
|
<input
|
||||||
class="login-input"
|
class="login-input"
|
||||||
type="email"
|
type="text"
|
||||||
placeholder="username"
|
placeholder="username"
|
||||||
value={this.state.name}
|
value={this.state.name}
|
||||||
onInput={linkState(this, 'name')}
|
onInput={linkState(this, 'name')}
|
||||||
/>
|
/>
|
||||||
<label for="password">Password - min 4 chars</label>
|
<label
|
||||||
|
class={`${pwLen() ? '' : 'red'} login-input`}
|
||||||
|
for="password">Password - min 4 chars
|
||||||
|
</label>
|
||||||
<input
|
<input
|
||||||
class="login-input"
|
class={`${pwLen() ? '' : 'red'} login-input`}
|
||||||
type="password"
|
type="password"
|
||||||
placeholder="password"
|
placeholder="password"
|
||||||
autocomplete="new-password"
|
autocomplete="new-password"
|
||||||
value={this.state.password}
|
value={this.state.password}
|
||||||
onInput={linkState(this, 'password')}
|
onInput={linkState(this, 'password')}
|
||||||
/>
|
/>
|
||||||
<label for="confirm">Confirm Password</label>
|
<label
|
||||||
|
class={`${registerConfirm() ? '' : 'red'} login-input`}
|
||||||
|
for="confirm">Confirm Password
|
||||||
|
</label>
|
||||||
<input
|
<input
|
||||||
class={`${registerConfirm() ? '' : 'red'} login-input`}
|
class={`${registerConfirm() ? '' : 'red'} login-input`}
|
||||||
type="password"
|
type="password"
|
||||||
|
|||||||
@ -180,8 +180,8 @@ function registerEvents(store) {
|
|||||||
setPvp(false);
|
setPvp(false);
|
||||||
const player = v.players.find(p => p.id === account.id);
|
const player = v.players.find(p => p.id === account.id);
|
||||||
store.dispatch(actions.setPlayer(player));
|
store.dispatch(actions.setPlayer(player));
|
||||||
|
|
||||||
if (tutorial) tutorialVbox(player, store, tutorial);
|
if (tutorial && v.rounds.length === 1 && v.time_control === 'Practice') tutorialVbox(player, store, tutorial);
|
||||||
|
|
||||||
if (v.phase === 'Finished') {
|
if (v.phase === 'Finished') {
|
||||||
ws.sendAccountInstances();
|
ws.sendAccountInstances();
|
||||||
@ -211,12 +211,8 @@ function registerEvents(store) {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
function startTutorial() {
|
|
||||||
store.dispatch(actions.setTutorial(1));
|
|
||||||
}
|
|
||||||
|
|
||||||
function promptRegister() {
|
function promptRegister() {
|
||||||
store.dispatch(actions.setTutorial(99));
|
store.dispatch(actions.setTutorial(null));
|
||||||
store.dispatch(actions.setInstance(null));
|
store.dispatch(actions.setInstance(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -249,7 +245,6 @@ function registerEvents(store) {
|
|||||||
setSubscription,
|
setSubscription,
|
||||||
setWs,
|
setWs,
|
||||||
|
|
||||||
startTutorial,
|
|
||||||
promptRegister,
|
promptRegister,
|
||||||
|
|
||||||
urlHashChange,
|
urlHashChange,
|
||||||
|
|||||||
@ -299,7 +299,7 @@ function createSocket(events) {
|
|||||||
ChatWheel: wheel => events.setChatWheel(wheel),
|
ChatWheel: wheel => events.setChatWheel(wheel),
|
||||||
// Joining: () => events.notify('Searching for instance...'),
|
// Joining: () => events.notify('Searching for instance...'),
|
||||||
|
|
||||||
StartTutorial: () => events.startTutorial(),
|
// StartTutorial: () => events.startTutorial(),
|
||||||
PromptRegister: () => events.promptRegister(),
|
PromptRegister: () => events.promptRegister(),
|
||||||
|
|
||||||
Processing: () => true,
|
Processing: () => true,
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "mnml_core"
|
name = "mnml_core"
|
||||||
version = "1.12.3"
|
version = "1.12.4"
|
||||||
authors = ["ntr <ntr@smokestack.io>", "mashy <mashy@mnml.gg>"]
|
authors = ["ntr <ntr@smokestack.io>", "mashy <mashy@mnml.gg>"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "mnml-ops",
|
"name": "mnml-ops",
|
||||||
"version": "1.12.3",
|
"version": "1.12.4",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "mnml"
|
name = "mnml"
|
||||||
version = "1.12.3"
|
version = "1.12.4"
|
||||||
authors = ["ntr <ntr@smokestack.io>"]
|
authors = ["ntr <ntr@smokestack.io>"]
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
|
|||||||
@ -61,7 +61,6 @@ pub enum RpcMessage {
|
|||||||
SubscriptionState(Option<Subscription>),
|
SubscriptionState(Option<Subscription>),
|
||||||
|
|
||||||
Pong(()),
|
Pong(()),
|
||||||
StartTutorial(()),
|
|
||||||
PromptRegister(()),
|
PromptRegister(()),
|
||||||
|
|
||||||
QueueRequested(()),
|
QueueRequested(()),
|
||||||
|
|||||||
@ -69,8 +69,6 @@ impl User for Anonymous {
|
|||||||
info!("anonymous connection");
|
info!("anonymous connection");
|
||||||
|
|
||||||
self.ws.send(RpcMessage::AccountState(self.account.clone()))?;
|
self.ws.send(RpcMessage::AccountState(self.account.clone()))?;
|
||||||
self.ws.send(RpcMessage::StartTutorial(()))?;
|
|
||||||
|
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "mnml-studios",
|
"name": "mnml-studios",
|
||||||
"version": "1.12.3",
|
"version": "1.12.4",
|
||||||
"description": "",
|
"description": "",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user