Merge branch 'release/1.12.4'

This commit is contained in:
Mashy 2020-01-20 16:04:02 +10:00
commit 350db19f46
18 changed files with 44 additions and 36 deletions

View File

@ -1 +1 @@
1.12.3 1.12.4

View File

@ -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": {

View File

@ -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": {

View File

@ -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>

View File

@ -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>;

View File

@ -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>

View File

@ -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>

View File

@ -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}

View File

@ -14,7 +14,7 @@ const addState = connect(
} = state; } = state;
return { return {
promptRegister: tutorial === 99, // see events promptRegister: !tutorial,
}; };
}, },
); );

View File

@ -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"

View File

@ -181,7 +181,7 @@ function registerEvents(store) {
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,

View File

@ -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,

View File

@ -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]

View File

@ -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": {

View File

@ -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]

View File

@ -61,7 +61,6 @@ pub enum RpcMessage {
SubscriptionState(Option<Subscription>), SubscriptionState(Option<Subscription>),
Pong(()), Pong(()),
StartTutorial(()),
PromptRegister(()), PromptRegister(()),
QueueRequested(()), QueueRequested(()),

View File

@ -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(())
} }

View File

@ -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": {