From ed924b99572464df6fce4bf8f11239f91e5c9eab Mon Sep 17 00:00:00 2001 From: Deukhoofd Date: Sat, 20 Feb 2016 15:18:22 +0100 Subject: [PATCH] Removed alt button, set level to max level for generation on team creation as to prevent confusion. Feature Complete for 1.0 beta. --- client/app/js/helpers/challenge_pane.coffee | 374 +++++++++--------- .../teambuilder/pokemon_edit_view.coffee | 9 +- client/views/new_battle.jade | 12 - public/js/app.js | 14 +- public/js/templates.js | 2 +- 5 files changed, 207 insertions(+), 204 deletions(-) diff --git a/client/app/js/helpers/challenge_pane.coffee b/client/app/js/helpers/challenge_pane.coffee index 1f34028..4e1f459 100644 --- a/client/app/js/helpers/challenge_pane.coffee +++ b/client/app/js/helpers/challenge_pane.coffee @@ -1,189 +1,189 @@ -# eventName should be one of "challenge" or "find battle" -# opts may include whether to enable clauses, for example -@challengePaneArray = [] - -class @challengePaneObject - constructor: (@object) -> - @event = @object.eventName - @button = @object.button - @populate = @object.populate - @clauses = @object.defaultClauses - @blockedClauses = @object.blockedClauses - -@SelectedTeamID = null -@SelectedFormat = null - -@ChallengePaneOpts = - SelectedTeamID : null - SelectedFormat : null - SelectedAlt : null - -@createChallengeButton = (opts) -> - $button = opts.button - $eventName = opts.eventName - $clauses = opts.clauses - capitalizedEventName = "#{$eventName[0].toUpperCase()}#{$eventName.substr(1)}" - acceptEventName = "accept#{capitalizedEventName}" - rejectEventName = "reject#{capitalizedEventName}" - cancelEventName = "cancel#{capitalizedEventName}" - - - getSelectedTeam = -> - PokeBattle.TeamStore.get(@ChallengePaneOpts.SelectedTeamID) || PokeBattle.TeamStore.at(0) - - cancelChallenge = -> - #enableButtons() - format = getChallengeOpts().SelectedFormat - PokeBattle.primus.send(cancelEventName, format) - $button.trigger('cancelChallenge') - - getChallengeOpts = -> - return @ChallengePaneOpts - - - disableButtons = -> - $('.select').addClass('disabled') - #$buttons.addClass('disabled') - - defaultformat = -> - return @DEFAULT_FORMAT - - $button.on 'click.challenge', -> - # Start requesting for notify permission here - PokeBattle.requestNotifyPermission() - options = getChallengeOpts() - if options.SelectedFormat != null - format = options.SelectedFormat - else - format = defaultformat() - # Toggle state when you press the button. - if !$button.hasClass('disabled') - team = getSelectedTeam() - unless team - alert("You need to create a team using the Teambuilder before you can battle.") - PokeBattle.navigation.showTeambuilder() - return - disableButtons() - teamJSON = team.toNonNullJSON().pokemon - # Send the event - PokeBattle.primus.send($eventName, format, teamJSON, options.selectedAlt) - $button.addClass('disabled').trigger('challenge') - else - cancelChallenge() - - -@createChallengePaneNew = (opts) -> - $wrapper = opts.populate - $accept = opts.acceptButton || $() - $reject = opts.rejectButton || $() - generation = opts.generation - getSelectedTeam = -> - PokeBattle.TeamStore.get(@ChallengePaneOpts.SelectedTeamID) || PokeBattle.TeamStore.at(0) - - renderCurrentTeam = ($context) -> - $selectTeam = $context.find('.select-team') - if PokeBattle.TeamStore.length > 0 - currentTeam = getSelectedTeam() - html = JST['team_dropdown'](window: window, team: currentTeam) - $selectTeam.html(html) - else - $selectTeam.html("You have no teams!") - - disableButtons = -> - $('.select').addClass('disabled') - - $wrapper.html(JST['new_battle']({window})) - $selectFormat = $wrapper.find(".select-format") - - # Clicking the alts dropdown brings down an alt selection dropdown menu - $wrapper.find('.select-alt').click (e) -> - html = JST['alt_dropdown'](alts: PokeBattle.alts.list, username: PokeBattle.username) - $wrapper.find('.alt-dropdown').html(html) - - setAlt = (altname) -> - @ChallengePaneOpts.SelectedAlt = altname - - # Selecting an alt from the dropdown - $wrapper.find('.alt-dropdown').on 'click', '.select-alt-dropdown-item', (e) -> - setAlt($(this).data('alt-name')) - $wrapper.find('.select-alt').html($(this).html()) - - # When add alt is clicked, show the alt input form - $wrapper.find('.alt-dropdown').on 'click', '.add-alt-dropdown-item', (e) -> - toggleAltInput(true) - - # Clicking the Add Alt Button - $wrapper.find('.alt-input .add-button').click (e) -> - altName = $wrapper.find('.alt-input input').val().trim() - PokeBattle.alts.createAlt(altName) - - # Clicking the Cancel Add Alt Button - $wrapper.find('.alt-input .cancel-button').click (e) -> - toggleAltInput(false) - - # Clicking the team dropdown brings down a team selection menu. - # Also updates the allTeams collection - $wrapper.find('.select-team').click (e) -> - allTeams = PokeBattle.TeamStore.models || [] - html = JST['team_dropdown'](window: window, teams: allTeams) - $wrapper.find('.team-dropdown').html(html) - - setTeam = (slot) -> - @ChallengePaneOpts.SelectedTeamID = PokeBattle.TeamStore.at(slot).id - - # Selecting a team from the menu - $wrapper.find('.team-dropdown').on 'click', '.select-team-dropdown-item', (e) -> - slot = $(e.currentTarget).data('slot') - setTeam(slot) - renderCurrentTeam($wrapper) - - # Selecting build team from the menu - $wrapper.find('.team-dropdown').on 'click', '.build-team-option', (e) -> - PokeBattle.navigation.showTeambuilder() - - setFormat = (format) -> - @ChallengePaneOpts.SelectedFormat = format - - # Selecting the format changes the dropdown. - $wrapper.find('.format-dropdown').on 'click', '.select-format-dropdown-item', (e) -> - $target = $(e.currentTarget) - format = $target.data('format') - $selectFormat.text($target.text()) - setFormat(format) - $selectFormat.data('format', format) - - # Select non-alt option - $wrapper.find('.select-alt').html(JST['alt_dropdown'](alt: null, username: PokeBattle.username)) - - # Auto-select format. - if generation - # If a generation is passed, auto-select it. - $format = $wrapper.find(".format-dropdown a[data-format='#{generation}']") - $format.first().click() - $wrapper.find('.select-format').addClass('disabled') - else - # Auto-select first available format. - $wrapper.find('.format-dropdown a').first().click() - - isAttachedToDom = -> - $.contains(document, $wrapper.get(0)) - - - renderCurrentTeam($wrapper) - - # Called when a team has been updated - teamUpdated = -> - # If this challenge panel no longer exists, remove the callback - if not isAttachedToDom() - PokeBattle.TeamStore.off 'add remove reset saved', teamUpdated - return - - # Rerender the current team - renderCurrentTeam($wrapper) - - # Start listening for team updated events - PokeBattle.TeamStore.on 'add remove reset saved', teamUpdated - +# eventName should be one of "challenge" or "find battle" +# opts may include whether to enable clauses, for example +@challengePaneArray = [] + +class @challengePaneObject + constructor: (@object) -> + @event = @object.eventName + @button = @object.button + @populate = @object.populate + @clauses = @object.defaultClauses + @blockedClauses = @object.blockedClauses + +@SelectedTeamID = null +@SelectedFormat = null + +@ChallengePaneOpts = + SelectedTeamID : null + SelectedFormat : null + SelectedAlt : null + +@createChallengeButton = (opts) -> + $button = opts.button + $eventName = opts.eventName + $clauses = opts.clauses + capitalizedEventName = "#{$eventName[0].toUpperCase()}#{$eventName.substr(1)}" + acceptEventName = "accept#{capitalizedEventName}" + rejectEventName = "reject#{capitalizedEventName}" + cancelEventName = "cancel#{capitalizedEventName}" + + + getSelectedTeam = -> + PokeBattle.TeamStore.get(@ChallengePaneOpts.SelectedTeamID) || PokeBattle.TeamStore.at(0) + + cancelChallenge = -> + #enableButtons() + format = getChallengeOpts().SelectedFormat + PokeBattle.primus.send(cancelEventName, format) + $button.trigger('cancelChallenge') + + getChallengeOpts = -> + return @ChallengePaneOpts + + + disableButtons = -> + $('.select').addClass('disabled') + #$buttons.addClass('disabled') + + defaultformat = -> + return @DEFAULT_FORMAT + + $button.on 'click.challenge', -> + # Start requesting for notify permission here + PokeBattle.requestNotifyPermission() + options = getChallengeOpts() + if options.SelectedFormat != null + format = options.SelectedFormat + else + format = defaultformat() + # Toggle state when you press the button. + if !$button.hasClass('disabled') + team = getSelectedTeam() + unless team + alert("You need to create a team using the Teambuilder before you can battle.") + PokeBattle.navigation.showTeambuilder() + return + disableButtons() + teamJSON = team.toNonNullJSON().pokemon + # Send the event + PokeBattle.primus.send($eventName, format, teamJSON, options.selectedAlt) + $button.addClass('disabled').trigger('challenge') + else + cancelChallenge() + + +@createChallengePaneNew = (opts) -> + $wrapper = opts.populate + $accept = opts.acceptButton || $() + $reject = opts.rejectButton || $() + generation = opts.generation + getSelectedTeam = -> + PokeBattle.TeamStore.get(@ChallengePaneOpts.SelectedTeamID) || PokeBattle.TeamStore.at(0) + + renderCurrentTeam = ($context) -> + $selectTeam = $context.find('.select-team') + if PokeBattle.TeamStore.length > 0 + currentTeam = getSelectedTeam() + html = JST['team_dropdown'](window: window, team: currentTeam) + $selectTeam.html(html) + else + $selectTeam.html("You have no teams!") + + disableButtons = -> + $('.select').addClass('disabled') + + $wrapper.html(JST['new_battle']({window})) + $selectFormat = $wrapper.find(".select-format") + + # Clicking the alts dropdown brings down an alt selection dropdown menu + $wrapper.find('.select-alt').click (e) -> + html = JST['alt_dropdown'](alts: PokeBattle.alts.list, username: PokeBattle.username) + $wrapper.find('.alt-dropdown').html(html) + + setAlt = (altname) -> + @ChallengePaneOpts.SelectedAlt = altname + + # Selecting an alt from the dropdown + $wrapper.find('.alt-dropdown').on 'click', '.select-alt-dropdown-item', (e) -> + setAlt($(this).data('alt-name')) + $wrapper.find('.select-alt').html($(this).html()) + + # When add alt is clicked, show the alt input form + $wrapper.find('.alt-dropdown').on 'click', '.add-alt-dropdown-item', (e) -> + toggleAltInput(true) + + # Clicking the Add Alt Button + $wrapper.find('.alt-input .add-button').click (e) -> + altName = $wrapper.find('.alt-input input').val().trim() + PokeBattle.alts.createAlt(altName) + + # Clicking the Cancel Add Alt Button + $wrapper.find('.alt-input .cancel-button').click (e) -> + toggleAltInput(false) + + # Clicking the team dropdown brings down a team selection menu. + # Also updates the allTeams collection + $wrapper.find('.select-team').click (e) -> + allTeams = PokeBattle.TeamStore.models || [] + html = JST['team_dropdown'](window: window, teams: allTeams) + $wrapper.find('.team-dropdown').html(html) + + setTeam = (slot) -> + @ChallengePaneOpts.SelectedTeamID = PokeBattle.TeamStore.at(slot).id + + # Selecting a team from the menu + $wrapper.find('.team-dropdown').on 'click', '.select-team-dropdown-item', (e) -> + slot = $(e.currentTarget).data('slot') + setTeam(slot) + renderCurrentTeam($wrapper) + + # Selecting build team from the menu + $wrapper.find('.team-dropdown').on 'click', '.build-team-option', (e) -> + PokeBattle.navigation.showTeambuilder() + + setFormat = (format) -> + @ChallengePaneOpts.SelectedFormat = format + + # Selecting the format changes the dropdown. + $wrapper.find('.format-dropdown').on 'click', '.select-format-dropdown-item', (e) -> + $target = $(e.currentTarget) + format = $target.data('format') + $selectFormat.text($target.text()) + setFormat(format) + $selectFormat.data('format', format) + + # Select non-alt option + $wrapper.find('.select-alt').html(JST['alt_dropdown'](alt: null, username: PokeBattle.username)) + + # Auto-select format. + if generation + # If a generation is passed, auto-select it. + $format = $wrapper.find(".format-dropdown a[data-format='#{generation}']") + $format.first().click() + $wrapper.find('.select-format').addClass('disabled') + else + # Auto-select first available format. + $wrapper.find('.format-dropdown a').first().click() + + isAttachedToDom = -> + $.contains(document, $wrapper.get(0)) + + + renderCurrentTeam($wrapper) + + # Called when a team has been updated + teamUpdated = -> + # If this challenge panel no longer exists, remove the callback + if not isAttachedToDom() + PokeBattle.TeamStore.off 'add remove reset saved', teamUpdated + return + + # Rerender the current team + renderCurrentTeam($wrapper) + + # Start listening for team updated events + PokeBattle.TeamStore.on 'add remove reset saved', teamUpdated + @createChallengePane = (opts) -> $wrapper = opts.populate $button = opts.button @@ -373,4 +373,4 @@ class @challengePaneObject renderCurrentTeam($wrapper) # Start listening for team updated events - PokeBattle.TeamStore.on 'add remove reset saved', teamUpdated + PokeBattle.TeamStore.on 'add remove reset saved', teamUpdated \ No newline at end of file diff --git a/client/app/js/views/teambuilder/pokemon_edit_view.coffee b/client/app/js/views/teambuilder/pokemon_edit_view.coffee index 20713e2..0f2c223 100644 --- a/client/app/js/views/teambuilder/pokemon_edit_view.coffee +++ b/client/app/js/views/teambuilder/pokemon_edit_view.coffee @@ -183,8 +183,12 @@ class @PokemonEditView extends Backbone.View value = parseInt($input.val(), 10) value = @generation.maxLevel if isNaN(value) || value > @generation.maxLevel value = 1 if value < 1 - $input.val(value) - @pokemon.set("level", value) + @changeLevel2(value) + + changeLevel2: (level) => + $levelBox = $(".selected_level") + $levelBox.val(level) + @pokemon.set("level", level) changeIv: (e) => # todo: make changeIv and changeEv DRY @@ -391,6 +395,7 @@ class @PokemonEditView extends Backbone.View @renderStats() @renderMoves() @renderFormat() + @changeLevel2(@generation.maxLevel) if typeof @pokemon.get("level") == "undefined" # Disable entering values if this is a NullPokemon $elements = @$el.find("input, select").not(".species input, .species select") diff --git a/client/views/new_battle.jade b/client/views/new_battle.jade index 60b73f1..de8ee20 100644 --- a/client/views/new_battle.jade +++ b/client/views/new_battle.jade @@ -1,15 +1,3 @@ -p - strong In-battle display name: -.alt-input.clearfix.hidden - .input-wrapper - input(type="text") - .buttons-wrapper - button.button.add-button Add - button.button.cancel-button Cancel -.alt-dropdown-section.dropdown - .select.select-alt(data-toggle="dropdown") - ul.dropdown-menu.alt-dropdown(role = "menu") - p strong Format: .dropdown diff --git a/public/js/app.js b/public/js/app.js index fee5660..863baba 100644 --- a/public/js/app.js +++ b/public/js/app.js @@ -5496,6 +5496,7 @@ this.changeEv = __bind(this.changeEv, this); this.focusEv = __bind(this.focusEv, this); this.changeIv = __bind(this.changeIv, this); + this.changeLevel2 = __bind(this.changeLevel2, this); this.changeLevel = __bind(this.changeLevel, this); this.changeGender = __bind(this.changeGender, this); this.changeItem = __bind(this.changeItem, this); @@ -5750,8 +5751,14 @@ if (value < 1) { value = 1; } - $input.val(value); - return this.pokemon.set("level", value); + return this.changeLevel2(value); + }; + + PokemonEditView.prototype.changeLevel2 = function(level) { + var $levelBox; + $levelBox = $(".selected_level"); + $levelBox.val(level); + return this.pokemon.set("level", level); }; PokemonEditView.prototype.changeIv = function(e) { @@ -6031,6 +6038,9 @@ this.renderStats(); this.renderMoves(); this.renderFormat(); + if (typeof this.pokemon.get("level") === "undefined") { + this.changeLevel2(this.generation.maxLevel); + } $elements = this.$el.find("input, select").not(".species input, .species select"); $elements.prop("disabled", this.pokemon.isNull); setSelectizeDisabled($elements, this.pokemon.isNull); diff --git a/public/js/templates.js b/public/js/templates.js index bbdec8e..8a53582 100644 --- a/public/js/templates.js +++ b/public/js/templates.js @@ -626,7 +626,7 @@ buf.push("

Chat