Minor tweaks to UI gameplay
Signed-off-by: James Ketrenos <james_eikona@ketrenos.com>
This commit is contained in:
parent
32ba1c03b1
commit
2182d9b0c1
@ -57,11 +57,18 @@ body {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.Table .WarningDialog .Warning {
|
.Table .WarningDialog .Warning {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
padding: 0.25rem;
|
||||||
|
}
|
||||||
|
|
||||||
|
.Table .WarningDialog .Warning > div {
|
||||||
display: flex;
|
display: flex;
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
.Table .PlayersStatus {
|
.Table .PlayersStatus {
|
||||||
z-index: 5000;
|
z-index: 5000;
|
||||||
}
|
}
|
||||||
|
@ -304,7 +304,10 @@ const Table = () => {
|
|||||||
</Paper>
|
</Paper>
|
||||||
</div> }
|
</div> }
|
||||||
{ warning && <div className="WarningDialog">
|
{ warning && <div className="WarningDialog">
|
||||||
<Paper className="Warning">{ warning }</Paper>
|
<Paper className="Warning">
|
||||||
|
<div>{ warning }</div>
|
||||||
|
<Button onClick={() => { setWarning("")}}>dismiss</Button>
|
||||||
|
</Paper>
|
||||||
</div> }
|
</div> }
|
||||||
{ state === 'normal' && <SelectPlayer/> }
|
{ state === 'normal' && <SelectPlayer/> }
|
||||||
{ color && state === 'game-order' && <GameOrder/> }
|
{ color && state === 'game-order' && <GameOrder/> }
|
||||||
|
@ -162,13 +162,13 @@
|
|||||||
.Board .Option .Tile-Shape,
|
.Board .Option .Tile-Shape,
|
||||||
.Board .Option .Corner-Shape,
|
.Board .Option .Corner-Shape,
|
||||||
.Board .Option .Road-Shape {
|
.Board .Option .Road-Shape {
|
||||||
background-color: rgba(255, 255, 255, 0.5) !important;
|
/* background-color: rgba(255, 255, 255, 0.5) !important;*/
|
||||||
}
|
}
|
||||||
|
|
||||||
.Board .Option .Tile-Shape:hover,
|
.Board .Option .Tile-Shape:hover,
|
||||||
.Board .Option .Corner-Shape:hover,
|
.Board .Option .Corner-Shape:hover,
|
||||||
.Board .Option .Road-Shape :hover{
|
.Board .Option .Road-Shape :hover{
|
||||||
background-color: rgba(255, 255, 255, 0.75) !important;
|
/* background-color: rgba(255, 255, 255, 0.75) !important; */
|
||||||
}
|
}
|
||||||
|
|
||||||
.Robber .Pip-Shape {
|
.Robber .Pip-Shape {
|
||||||
@ -217,19 +217,19 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
.Road[data-longest="5"] {
|
.Road[data-longest="5"] {
|
||||||
filter: drop-shadow(0px 0px 5px black);
|
filter: brightness(110%) drop-shadow(0px 0px 5px black);
|
||||||
}
|
}
|
||||||
.Road[data-longest="6"] {
|
.Road[data-longest="6"] {
|
||||||
filter: drop-shadow(0px 0px 6px black);
|
filter: brightness(120%) drop-shadow(0px 0px 6px black);
|
||||||
}
|
}
|
||||||
.Road[data-longest="7"] {
|
.Road[data-longest="7"] {
|
||||||
filter: drop-shadow(0px 0px 7px black);
|
filter: brightness(130%) drop-shadow(0px 0px 7px black);
|
||||||
}
|
}
|
||||||
.Road[data-longest="8"] {
|
.Road[data-longest="8"] {
|
||||||
filter: drop-shadow(0px 0px 8px black);
|
filter: brightness(140%) drop-shadow(0px 0px 8px black);
|
||||||
}
|
}
|
||||||
.Road[data-longest="9"] {
|
.Road[data-longest="9"] {
|
||||||
filter: drop-shadow(0px 0px 9px black);
|
filter: brightness(150%) drop-shadow(0px 0px 9px black);
|
||||||
}
|
}
|
||||||
.Road[data-longest="10"],
|
.Road[data-longest="10"],
|
||||||
.Road[data-longest="11"],
|
.Road[data-longest="11"],
|
||||||
@ -237,7 +237,7 @@
|
|||||||
.Road[data-longest="13"],
|
.Road[data-longest="13"],
|
||||||
.Road[data-longest="14"],
|
.Road[data-longest="14"],
|
||||||
.Road[data-longest="15"] {
|
.Road[data-longest="15"] {
|
||||||
filter: drop-shadow(0px 0px 10px black);
|
filter: brightness(160%) drop-shadow(0px 0px 10px black);
|
||||||
}
|
}
|
||||||
|
|
||||||
.Board .Selected {
|
.Board .Selected {
|
||||||
@ -264,3 +264,40 @@
|
|||||||
[data-color='B'] > .Road-Shape {
|
[data-color='B'] > .Road-Shape {
|
||||||
background-color: rgba(0, 0, 255, 1);
|
background-color: rgba(0, 0, 255, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
@keyframes blink {
|
||||||
|
from {
|
||||||
|
filter: brightness(90%);
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
50% {
|
||||||
|
filter: brightness(150%);
|
||||||
|
}
|
||||||
|
|
||||||
|
to {
|
||||||
|
filter: brightness(150%);
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
.Board .Option:hover {
|
||||||
|
filter: brightness(100%) drop-shadow(0 0 2px black);
|
||||||
|
opacity: 1;
|
||||||
|
/*
|
||||||
|
animation-play-state: paused;
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
|
.Board .Option {
|
||||||
|
filter: brightness(200%) drop-shadow(0 0 3px rgba(255, 0, 255, 1));
|
||||||
|
opacity: 1;
|
||||||
|
/*
|
||||||
|
transition-timing-function: ease-in-out;
|
||||||
|
animation-duration: 0.5s;
|
||||||
|
animation-name: blink;
|
||||||
|
animation-iteration-count: infinite;
|
||||||
|
animation-direction: alternate;
|
||||||
|
*/
|
||||||
|
}
|
@ -54,6 +54,8 @@ const Board = () => {
|
|||||||
'placements', 'turn', 'state', 'color', 'longestRoadLength'
|
'placements', 'turn', 'state', 'color', 'longestRoadLength'
|
||||||
], []);
|
], []);
|
||||||
|
|
||||||
|
console.log(`board - render ws is ${!ws ? 'NULL' : (ws.readyState === ws.OPEN ? 'OPEN' : '!OPEN')}`);
|
||||||
|
|
||||||
const onWsMessage = (event) => {
|
const onWsMessage = (event) => {
|
||||||
const data = JSON.parse(event.data);
|
const data = JSON.parse(event.data);
|
||||||
switch (data.type) {
|
switch (data.type) {
|
||||||
@ -608,6 +610,7 @@ const Board = () => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
el.classList.add('Option');
|
el.classList.add('Option');
|
||||||
|
el.setAttribute('data-color', turn.color);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (turn.limits['corners']) {
|
if (turn.limits['corners']) {
|
||||||
@ -617,6 +620,7 @@ const Board = () => {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
el.classList.add('Option');
|
el.classList.add('Option');
|
||||||
|
el.setAttribute('data-color', turn.color);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
if (turn.limits['tiles']) {
|
if (turn.limits['tiles']) {
|
||||||
|
@ -95,7 +95,7 @@ const Hand = ({buildActive, setBuildActive, setCardActive}) => {
|
|||||||
if (B.played) {
|
if (B.played) {
|
||||||
return +1;
|
return +1;
|
||||||
}
|
}
|
||||||
return 0;
|
return B.turn - A.turn; /* Put playable cards on top */
|
||||||
}).map(card => <Development
|
}).map(card => <Development
|
||||||
onClick={() => cardClicked(card)}
|
onClick={() => cardClicked(card)}
|
||||||
card={card}
|
card={card}
|
||||||
|
@ -18,6 +18,10 @@ const Player = ({ player, onClick, reverse, color,
|
|||||||
? <Resource label={true} type={'progress-back'}
|
? <Resource label={true} type={'progress-back'}
|
||||||
count={player.unplayed} disabled/>
|
count={player.unplayed} disabled/>
|
||||||
: undefined;
|
: undefined;
|
||||||
|
const resourceCards = player.resources
|
||||||
|
? <Resource label={true} type={'resource-back'}
|
||||||
|
count={player.resources} disabled/>
|
||||||
|
: undefined;
|
||||||
const armyCards = player.army
|
const armyCards = player.army
|
||||||
? <Resource label={true} type={'army-1'} count={player.army} disabled/>
|
? <Resource label={true} type={'army-1'} count={player.army} disabled/>
|
||||||
: undefined;
|
: undefined;
|
||||||
@ -38,13 +42,13 @@ const Player = ({ player, onClick, reverse, color,
|
|||||||
count={player.longestRoad}
|
count={player.longestRoad}
|
||||||
/> : undefined;
|
/> : undefined;
|
||||||
|
|
||||||
const largestArmyPlacard = largestArmy && largestArmy === color ?
|
const largestArmyPlacard = largestArmy && largestArmy === color ?
|
||||||
<Placard
|
<Placard
|
||||||
disabled
|
disabled
|
||||||
active={false}
|
active={false}
|
||||||
type='largest-army'
|
type='largest-army'
|
||||||
count={player.army}
|
count={player.army}
|
||||||
/> : undefined;
|
/> : undefined;
|
||||||
|
|
||||||
return <div className="Player">
|
return <div className="Player">
|
||||||
<div className="Who">
|
<div className="Who">
|
||||||
@ -64,8 +68,10 @@ const Player = ({ player, onClick, reverse, color,
|
|||||||
{ longestRoadPlacard }
|
{ longestRoadPlacard }
|
||||||
{ !largestArmyPlacard && armyCards }
|
{ !largestArmyPlacard && armyCards }
|
||||||
{ developmentCards }
|
{ developmentCards }
|
||||||
|
{ resourceCards }
|
||||||
</> }
|
</> }
|
||||||
{ reverse && <>
|
{ reverse && <>
|
||||||
|
{ resourceCards }
|
||||||
{ developmentCards }
|
{ developmentCards }
|
||||||
{ !largestArmyPlacard && armyCards }
|
{ !largestArmyPlacard && armyCards }
|
||||||
{ longestRoadPlacard }
|
{ longestRoadPlacard }
|
||||||
|
@ -101,6 +101,8 @@ const Winner = () => {
|
|||||||
Throughout the game, the robber stole <b>{winner.robberStole}</b> resources:
|
Throughout the game, the robber stole <b>{winner.robberStole}</b> resources:
|
||||||
<div>{stolen}</div>
|
<div>{stolen}</div>
|
||||||
</div>;
|
</div>;
|
||||||
|
} else {
|
||||||
|
robber = <div>The robber never stole any resources from anyone!</div>;
|
||||||
}
|
}
|
||||||
|
|
||||||
const averageSeconds = Math.floor(winner.totalTime / turnCount / 1000),
|
const averageSeconds = Math.floor(winner.totalTime / turnCount / 1000),
|
||||||
|
@ -2054,14 +2054,15 @@ const buyDevelopment = (game, session) => {
|
|||||||
card.turn = game.turns;
|
card.turn = game.turns;
|
||||||
player.development.push(card);
|
player.development.push(card);
|
||||||
|
|
||||||
|
sendUpdateToPlayer(game, session, {
|
||||||
|
private: session.player
|
||||||
|
});
|
||||||
|
|
||||||
sendUpdateToPlayers(game, {
|
sendUpdateToPlayers(game, {
|
||||||
chat: game.chat,
|
chat: game.chat,
|
||||||
activities: game.activities,
|
activities: game.activities,
|
||||||
players: getFilteredPlayers(game)
|
players: getFilteredPlayers(game)
|
||||||
});
|
});
|
||||||
sendUpdateToPlayer(game, session, {
|
|
||||||
private: session.player
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const playCard = (game, session, card) => {
|
const playCard = (game, session, card) => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user