diff --git a/app/actors/LobbieActor.scala b/app/actors/LobbieActor.scala index dd5f1f4..ceac990 100644 --- a/app/actors/LobbieActor.scala +++ b/app/actors/LobbieActor.scala @@ -261,9 +261,9 @@ case class ChangeIsNecronSelected(isSelected: Boolean) case object InfoQuery -case class SelectedRaces(mainRaces: List[Int], additionalRaces: List[Int]) +case class SelectedRaces(mainRaces: List[Int], additionalRaces: List[Int], raceTextInput: String) -case class UserInfo(name: String, isReady: Boolean, selectedRaces: Option[SelectedRaces] = None) +case class UserInfo(name: String, isReady: Boolean, selectedRaces: Option[SelectedRaces] = None, selectedRacesText: Option[String] = None) case class LobbyInfo(user1Info: UserInfo, user2Info: UserInfo, diff --git a/app/actors/UserActor.scala b/app/actors/UserActor.scala index 145729f..bdb2971 100644 --- a/app/actors/UserActor.scala +++ b/app/actors/UserActor.scala @@ -176,7 +176,8 @@ class UserActor(out: ActorRef, logger.info("RACES: " + json.toString()) val races = (json \ "mainRaces").as[List[Int]] val additionalRaces = (json \ "additionalRaces").as[List[Int]] - lobbieActor.foreach(lobby => lobby ! SelectedRaces(races, additionalRaces)) + val raceTextInput = (json \ "raceTextInput").as[String] + lobbieActor.foreach(lobby => lobby ! SelectedRaces(races, additionalRaces, raceTextInput)) case Some("getLobbies") => logger.debug("Get all lobby request") diff --git a/app/assets/images/maps/2p_gavrix_imperial_ale.jpg b/app/assets/images/maps/2p_gavrix_imperial_ale.jpg new file mode 100644 index 0000000..14b920c Binary files /dev/null and b/app/assets/images/maps/2p_gavrix_imperial_ale.jpg differ diff --git a/app/assets/images/maps/6p_constellation.jpg b/app/assets/images/maps/6p_constellation.jpg new file mode 100644 index 0000000..c78c954 Binary files /dev/null and b/app/assets/images/maps/6p_constellation.jpg differ diff --git a/app/assets/images/maps/6p_trivian_groves_BM.jpg b/app/assets/images/maps/6p_trivian_groves_BM.jpg new file mode 100644 index 0000000..f558867 Binary files /dev/null and b/app/assets/images/maps/6p_trivian_groves_BM.jpg differ diff --git a/app/assets/images/raceIcons/cancel.png b/app/assets/images/raceIcons/cancel.png new file mode 100644 index 0000000..c4a7450 Binary files /dev/null and b/app/assets/images/raceIcons/cancel.png differ diff --git a/app/assets/javascripts/index.js b/app/assets/javascripts/index.js index 558f86f..e2f96d3 100644 --- a/app/assets/javascripts/index.js +++ b/app/assets/javascripts/index.js @@ -4,6 +4,7 @@ var userName = "" var raceCount = $("#raceCount").html() var existAdditionalRaces = $("#existAdditionalRaces").html() === "true" +var existTextFieldRaces = $("#existTextFieldRaces").html() === "true" var isMuted = false; var isDraftStarted = false; @@ -227,6 +228,8 @@ function disconnectLobby(error) { function getRaceImageByNumber(number) { switch (number) { + case 10: + return "/assets/images/raceIcons/cancel.png"; case 1: return "/assets/images/raceIcons/SM.gif"; case 2: @@ -248,28 +251,6 @@ function getRaceImageByNumber(number) { } } -function getRaceVideoByNumber(number) { - switch (number) { - case 1: - return "/assets/video/races/SM.mp4"; - case 2: - return "/assets/video/races/Chaos.mp4"; - case 3: - return "/assets/video/races/Eldar.mp4"; - case 4: - return "/assets/video/races/Orks.mp4"; - case 5: - return "/assets/video/races/IG.mp4"; - case 6: - return "/assets/video/races/Nec.mp4"; - case 7: - return "/assets/video/races/Tau.mp4"; - case 8: - return "/assets/video/races/Sob.mp4"; - case 9: - return "/assets/video/races/SM.mp4"; - } -} function renderRaces() { @@ -277,7 +258,7 @@ function renderRaces() { var resHtml = ""; for(var raceNum = 1; raceNum <= raceCount; raceNum++){ resHtml += "

" + raceType + " race " + raceNum + "

"; - for (var i = 1; i <= 9; i++) { + for (var i = 1; i <= 10; i++) { var selected = "raceNotSelected"; if ($.cookie("race-" + raceType + "-" + raceNum) == i) { selected = "raceSelected"; @@ -293,9 +274,21 @@ function renderRaces() { return resHtml; } + function renderInputField() { + var raceTextInput = '' + if($.cookie("raceTextInput") !== undefined){ + raceTextInput = $.cookie("raceTextInput") + } + return '
'; + } + var resHtml = ""; - resHtml += getRaceSelectHtml("main", selectedRaces); - if(existAdditionalRaces) resHtml += getRaceSelectHtml("additional", selectedAdditionalRaces); + if(!existTextFieldRaces){ + resHtml += getRaceSelectHtml("main", selectedRaces); + if(existAdditionalRaces) resHtml += getRaceSelectHtml("additional", selectedAdditionalRaces); + }else { + resHtml += renderInputField(); + } resHtml += "

"; resHtml += "
" @@ -327,15 +320,23 @@ function selectRace(button, race, raceNum, raceType) { function checkRaceSelectFinish() { if(selectedRaces.filter(x => x).length >= raceCount){ $("#selectRace").removeAttr("disabled"); + } else if($("#raceInput").val().trim() !== ''){ + $("#selectRace").removeAttr("disabled"); } } function sendSelectedRacesToServer() { + $.cookie('raceTextInput', $("#raceInput").val(), {expires: 1}); + var selectedInput = $("#raceInput").val(); + if(selectedInput === undefined){ + selectedInput = "" + } console.log(selectedRaces); ws.send(JSON.stringify({ type: "selectRace", mainRaces: selectedRaces.filter(x => x), - additionalRaces: selectedAdditionalRaces.filter(x => x) + additionalRaces: selectedAdditionalRaces.filter(x => x), + raceTextInput: selectedInput })); $("#mapList").html("
Waiting another player...
"); } @@ -524,12 +525,13 @@ function getRenderRaces(userInfo1, userInfo2) { function getRacesBlock(playerRaces, name){ let resHtml = "
" + "

" + name + "

"; - resHtml += "main:"; playerRaces.mainRaces.forEach((raceId) => resHtml += " "); - resHtml += "
addt:"; playerRaces.additionalRaces.forEach((raceId) => resHtml += " "); + if(existTextFieldRaces){ + resHtml += "" + playerRaces.raceTextInput + ""; + } resHtml += "
"; return resHtml; } diff --git a/app/controllers/HomeController.scala b/app/controllers/HomeController.scala index 89a9809..24e955b 100644 --- a/app/controllers/HomeController.scala +++ b/app/controllers/HomeController.scala @@ -44,10 +44,11 @@ class HomeController @Inject()(cc: ControllerComponents) extends AbstractControl val deciderHumanName = config.getString(s"deciders.$deciderName.name") val deciderDescription = config.getString(s"deciders.$deciderName.rules") val existAdditionalRaces = Try(config.getBoolean(s"deciders.$deciderName.existAdditionalRaces")).getOrElse(false) + val existTextFieldRaces = Try(config.getBoolean(s"deciders.$deciderName.existTextFieldRaces")).getOrElse(false) val raceCount = Try(config.getInt(s"deciders.$deciderName.raceCount")).getOrElse(1) val lastmapsSettings = LastMapsSelectConfig(true, true, true, true) val raceSelect = RaceSelect(true, false) - Ok(views.html.index(deciderName, deciderHumanName, raceCount, deciderDescription, raceSelect, lastmapsSettings, existAdditionalRaces)) + Ok(views.html.index(deciderName, deciderHumanName, raceCount, deciderDescription, raceSelect, lastmapsSettings, existAdditionalRaces, existTextFieldRaces)) } /** diff --git a/app/views/index.scala.html b/app/views/index.scala.html index 92a5e0b..0942bd8 100644 --- a/app/views/index.scala.html +++ b/app/views/index.scala.html @@ -1,9 +1,10 @@ -@(deciderName: String, deciderHumanName: String, raceCount: Int, rules: String, raceSelect: RaceSelect, boSettings: LastMapsSelectConfig, existAdditionalRaces: Boolean)(implicit r: Request[_]) +@(deciderName: String, deciderHumanName: String, raceCount: Int, rules: String, raceSelect: RaceSelect, boSettings: LastMapsSelectConfig, existAdditionalRaces: Boolean, existTextFieldRaces: Boolean)(implicit r: Request[_]) + @@ -20,7 +21,7 @@ - +