diff --git a/app/actors/LobbieActor.scala b/app/actors/LobbieActor.scala
index 004024b..870a0b1 100644
--- a/app/actors/LobbieActor.scala
+++ b/app/actors/LobbieActor.scala
@@ -41,7 +41,7 @@ class LobbieActor(hostUser: LobbyUser) extends Actor with LazyLogging {
private var status: LobbyStatus = NotStarted()
- private var lobbyType: LobbyType = Last3()
+ private var lobbyType: LobbyType = LooserPick()
private val mapsLobby: Set[DeciderMap] = {
val configMaps = config.getStringList("maps").asScala
diff --git a/app/assets/images/maps/4p_imperial_area.jpg b/app/assets/images/maps/4p_imperial_area.jpg
new file mode 100644
index 0000000..022a5f2
Binary files /dev/null and b/app/assets/images/maps/4p_imperial_area.jpg differ
diff --git a/app/assets/images/maps/allMaps.json b/app/assets/images/maps/allMaps.json
index 474a7cd..a81042c 100644
--- a/app/assets/images/maps/allMaps.json
+++ b/app/assets/images/maps/allMaps.json
@@ -89,6 +89,8 @@
"4p_van_de_mar_mountains": "Van de Mar Mountains (4)",
"4p_sands_of_victory":"Sands of Victory (4)",
"4p_antiga_bay":"Antiga Bay (4)",
+ "4p_testcake":"Testcake [Rem] (4)",
+ "4p_imperial_area":"Imperial Area [Ed] (4)",
"4p_volcanic_reaction": "Volcanic Reaction (4)",
"4p_broken_lands": "Broken Lands (4)",
"5p_vyasastan": "Vyasastan (5)",
diff --git a/app/assets/javascripts/index.js b/app/assets/javascripts/index.js
index 51bfdf2..42ca550 100644
--- a/app/assets/javascripts/index.js
+++ b/app/assets/javascripts/index.js
@@ -38,10 +38,10 @@ window.onload = function() {
var lobbiesAsTableRows = _.reduce(this.lobbies, function (memo, lobby) {
var joinButton = (lobby.status === "NotStarted()") ? '' +
- ' Join lobby ' +
+ ' Join lobby ' +
' ' : "";
var observerButton = '' +
- ' Observer ' +
+ ' Observer ' +
' ';
return memo + '
\n' +
@@ -118,12 +118,12 @@ window.onload = function() {
message = JSON.parse(event.data);
switch (message.type) {
case "refreshLobby":
- renderMaps(message.lobby.maps);
+ renderMaps(message.lobby.maps, message.lobby.status);
renderPlayersAndStats(message.lobby);
break;
case "switchToLobby":
console.log(message);
- switchToLobby(message.lobby.maps);
+ switchToLobby(message.lobby.maps, message.lobby.status);
renderPlayersAndStats(message.lobby);
break;
case "sendMessage":
@@ -180,9 +180,9 @@ function changeNick() {
// -----ф-ии прихода с сервера
-function switchToLobby(maps) {
+function switchToLobby(maps, status) {
console.log(maps);
- renderMaps(maps);
+ renderMaps(maps, status);
$("#lobbies").hide();
$(".navbar").hide();
$("#decider").show();
@@ -199,7 +199,7 @@ function disconnectLobby(error) {
alert(error);
}
-function renderMaps(maps) {
+function renderMaps(maps, lobbyStatus) {
var resHtml = "";
_.each(maps, function (map) {
@@ -210,8 +210,9 @@ function renderMaps(maps) {
banHtml = "✕
";
banClass = "bannedMap";
}
-
-
+ if(lobbyStatus === "NotStarted()"){
+ banClass = "bannedMap";
+ }
resHtml = resHtml + ''+
'' +
@@ -303,8 +304,8 @@ function renderPlayersAndStats(lobby) {
disabledText = "disabled";
}
resHtml += "" +
- "Play on last 3 maps " +
- "Play on last 4 maps " +
+ /*"Play on last 3 maps " +
+ "Play on last 4 maps " +*/
"Decide first, then looserpick " +
" "
resHtml += "
";
diff --git a/app/assets/stylesheets/main.css b/app/assets/stylesheets/main.css
new file mode 100644
index 0000000..fd68dca
--- /dev/null
+++ b/app/assets/stylesheets/main.css
@@ -0,0 +1,87 @@
+
+.readyImg{
+ height: 25px;
+}
+
+#playerName{
+ color: white;
+}
+
+.banX{
+ font-size: 128px;
+ margin-top: -174px;
+ left: 34px;
+ color: red;
+ position: absolute;
+ z-index: 1;
+}
+
+.bannedMap{
+ -webkit-filter: grayscale(1); /* Webkit браузеры */
+}
+
+.mapSelect{
+ margin: 4px;
+ position:relative;
+ width: 175px;
+ height: 155px;
+ white-space: nowrap;
+ overflow: hidden;
+}
+
+@keyframes glowing {
+ 0% {
+ box-shadow: 0 0 2px #074673;
+ }
+ 50% {
+ box-shadow: 0 0 9px #0e87de;
+ }
+ 100% {
+ box-shadow: 0 0 2px #094d7d;
+ }
+}
+
+.warningButton {
+ animation: glowing 1300ms infinite;
+}
+
+#chat{
+ width: 354px;
+ float: right;
+}
+
+#chatbox {
+ text-align:left;
+ margin:0 auto;
+ margin-bottom:3px;
+ padding:10px;
+ background:#fff;
+ height:200px;
+ width:352px;
+ border:1px solid #ACD8F0;
+ overflow:auto; }
+
+.inputMsg{
+ width: 100%;
+}
+
+#usermsg {
+ border: 1px solid #ACD8F0;
+ width: 300px;
+}
+
+#exit{
+ margin: 5px;
+}
+
+#mapList {
+ border: 1px solid #0f0f0f;
+ padding: 10px;
+ background-color: #e3e3e3;
+}
+
+#submit { width: 60px; }
+
+.error { color: #ff0000; }
+
+#menu { padding:12.5px 25px 12.5px 25px; }
diff --git a/app/assets/stylesheets/main.less b/app/assets/stylesheets/main.less
deleted file mode 100644
index ff9ca46..0000000
--- a/app/assets/stylesheets/main.less
+++ /dev/null
@@ -1,145 +0,0 @@
-.perspective (@value) {
- -webkit-perspective: @value;
- -moz-perspective: @value;
- perspective: @value;
-}
-
-.transform (@value) {
- -webkit-transform: rotateY(@value);
- -moz-transform: rotateY(@value);
- transform: rotateY(@value);
-}
-
-.border-radius (@value) {
- -webkit-border-radius: @value;
- -moz-border-radius: @value;
- border-radius: @value;
-}
-
-
-#lobbies {
- margin-top: 50px;
-}
-
-.flip-container {
- .perspective(1000);
- margin-bottom: 20px;
- &:hover .flipper {
- .transform(10deg);
- }
- &.flipped .flipper {
- .transform(180deg);
- }
-}
-
-.flipper {
- height: 250px;
-
- background-color: #fafafa;
- border: 1px solid #ddd;
-
- .border-radius(4px);
-
- cursor: hand;
- cursor: pointer;
-
- -webkit-transition: 0.6s;
- -moz-transition: 0.6s;
- transition: 0.6s;
-
- -webkit-transform-style: preserve-3d;
- -moz-transform-style: preserve-3d;
- transform-style: preserve-3d;
-
- &:after {
- content: attr(data-content);
- position: absolute;
- top: -1px;
- left: -1px;
- padding: 3px 7px;
- font-size: 12px;
- font-weight: bold;
- background-color: #ffffff;
- border: 1px solid #ddd;
- color: #9da0a4;
-
- .border-radius(4px 0 4px 0);
- }
-}
-
-.readyImg{
- height: 25px;
-}
-
-#playerName{
- color: white;
-}
-
-.banX{
- font-size: 128px;
- margin-top: -174px;
- left: 34px;
- color: red;
- position: absolute;
- z-index: 1;
-}
-
-.bannedMap{
- -webkit-filter: grayscale(1); /* Webkit браузеры */
-}
-
-.mapSelect{
- margin: 4px;
- position:relative;
- width: 175px;
- height: 155px;
- white-space: nowrap;
- overflow: hidden;
-}
-
-@keyframes glowing {
- 0% {
- box-shadow: 0 0 2px #074673;
- }
- 50% {
- box-shadow: 0 0 9px #0e87de;
- }
- 100% {
- box-shadow: 0 0 2px #094d7d;
- }
-}
-.warningButton {
- animation: glowing 1300ms infinite;
-}
-
-#chat{
- width: 354px;
- float: right;
-}
-
-#chatbox {
- text-align:left;
- margin:0 auto;
- margin-bottom:3px;
- padding:10px;
- background:#fff;
- height:200px;
- width:352px;
- border:1px solid #ACD8F0;
- overflow:auto; }
-
-.inputMsg{
- width: 100%;
-}
-
-#usermsg {
- border: 1px solid #ACD8F0;
- width: 300px;
-}
-
-
-#submit { width: 60px; }
-
-.error { color: #ff0000; }
-
-#menu { padding:12.5px 25px 12.5px 25px; }
diff --git a/app/controllers/AdminController.scala b/app/controllers/AdminController.scala
index e8d39ce..50cbec3 100644
--- a/app/controllers/AdminController.scala
+++ b/app/controllers/AdminController.scala
@@ -8,6 +8,7 @@ import akka.pattern.ask
import akka.stream._
import akka.stream.scaladsl._
import akka.util.Timeout
+import com.typesafe.config.ConfigFactory
import javax.inject._
import org.reactivestreams.Publisher
import play.api.libs.json._
@@ -28,9 +29,6 @@ class AdminController @Inject()(cc: ControllerComponents) extends AbstractContro
// Use a direct reference to SLF4J
private val logger = org.slf4j.LoggerFactory.getLogger("controllers.HomeController")
- val lobbiesActror: ActorRef = actorSystem.actorOf(Props[LobbiesActor]())
- val userParentActor: ActorRef = actorSystem.actorOf(Props(classOf[UserParentActor], actorSystem))
-
// Home page that renders template
def viewAllLobbies() = Action { implicit request =>
logger.info(s"Received request from: ${request.remoteAddress}")
@@ -41,14 +39,9 @@ class AdminController @Inject()(cc: ControllerComponents) extends AbstractContro
}
-
- /**
- * Returns true if the value of the Origin header contains an acceptable value.
- */
- def originMatches(origin: String): Boolean = {
- origin.contains("139.59.210.74") || origin.contains("localhost") || origin.contains("localhost:9000") || origin.contains("localhost:19001")
+ def reloadConfig()= Action { implicit request =>
+ ConfigFactory.invalidateCaches()
+ logger.info("Config reloaded")
+ Ok("Config reloaded")
}
-
-
-
}
diff --git a/app/controllers/HomeController.scala b/app/controllers/HomeController.scala
index 16bdb8c..91a2ae2 100644
--- a/app/controllers/HomeController.scala
+++ b/app/controllers/HomeController.scala
@@ -71,7 +71,7 @@ class HomeController @Inject()(cc: ControllerComponents) extends AbstractControl
*/
def sameOriginCheck(rh: RequestHeader): Boolean = {
rh.headers.get("Origin") match {
- case Some(originValue) if originMatches(originValue) =>
+ case Some(originValue) if originMatches(originValue, rh.remoteAddress) =>
logger.debug(s"originCheck: originValue = $originValue")
true
@@ -88,7 +88,7 @@ class HomeController @Inject()(cc: ControllerComponents) extends AbstractControl
/**
* Returns true if the value of the Origin header contains an acceptable value.
*/
- def originMatches(origin: String): Boolean = {
+ def originMatches(origin: String, remoteAddress: String): Boolean = {
origin.contains("139.59.210.74") || origin.contains("localhost") || origin.contains("localhost:9000") || origin.contains("localhost:19001")
}
diff --git a/app/views/index.scala.html b/app/views/index.scala.html
index 4fe3f7b..b23b4d8 100644
--- a/app/views/index.scala.html
+++ b/app/views/index.scala.html
@@ -13,7 +13,7 @@
-
+
@@ -23,6 +23,8 @@
+
+
+
Exit
-
-
+
+
@@ -47,9 +50,18 @@
Send
+
+
TournamentPatch Cup:
+ Первая карта - десайдер, выбирается методом вычеркивания, далее лузерпики, повтор карт категорически запрещен.
+ В суперфинале команда из сетки победителей начинает с +1 очком, но команда из сетки проигравших имеет лузерпик со старта встречи(десайдер в суперфинале не используется).
+
+
+
+
+