2012-01-30 01:13:51 +00:00
|
|
|
<?xml version="1.0" encoding="UTF-8" ?>
|
2012-02-02 22:47:23 +00:00
|
|
|
<%--
|
|
|
|
Copyright (c) 2012, Andy Janata
|
|
|
|
All rights reserved.
|
|
|
|
|
|
|
|
Redistribution and use in source and binary forms, with or without modification, are permitted
|
|
|
|
provided that the following conditions are met:
|
|
|
|
|
|
|
|
* Redistributions of source code must retain the above copyright notice, this list of conditions
|
|
|
|
and the following disclaimer.
|
|
|
|
* Redistributions in binary form must reproduce the above copyright notice, this list of
|
|
|
|
conditions and the following disclaimer in the documentation and/or other materials provided
|
|
|
|
with the distribution.
|
|
|
|
|
|
|
|
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
|
|
|
|
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
|
|
|
|
FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
|
|
|
|
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
|
|
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
|
|
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
|
|
|
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY
|
|
|
|
WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
--%>
|
2012-02-06 22:00:24 +00:00
|
|
|
<%--
|
|
|
|
The main game page. This is almost entirely static HTML, other than ensuring that a session is
|
|
|
|
created for the user now.
|
|
|
|
|
|
|
|
@author Andy Janata (ajanata@socialgamer.net)
|
|
|
|
--%>
|
|
|
|
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
|
2012-01-30 01:13:51 +00:00
|
|
|
<%@ page import="javax.servlet.http.HttpSession" %>
|
2012-01-31 07:49:46 +00:00
|
|
|
<%
|
|
|
|
// Ensure a session exists for the user.
|
|
|
|
@SuppressWarnings("unused")
|
|
|
|
HttpSession hSession = request.getSession(true);
|
|
|
|
%>
|
|
|
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
|
|
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
2012-01-30 01:13:51 +00:00
|
|
|
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
|
|
<head>
|
|
|
|
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
|
2012-03-15 17:14:32 +00:00
|
|
|
<title>Pretend You're Xyzzy</title>
|
2012-01-30 01:13:51 +00:00
|
|
|
<script type="text/javascript" src="js/jquery-1.7.1.js"></script>
|
|
|
|
<script type="text/javascript" src="js/jquery.cookie.js"></script>
|
|
|
|
<script type="text/javascript" src="js/QTransform.js"></script>
|
|
|
|
<script type="text/javascript" src="js/cah.js"></script>
|
2012-01-31 07:49:46 +00:00
|
|
|
<script type="text/javascript" src="js/cah.config.js"></script>
|
2012-01-30 01:13:51 +00:00
|
|
|
<%-- cah must be first, ajax must be before app. app probably has to be last. --%>
|
|
|
|
<%-- TODO make this be dynamic with looking at the filesystem and using jquery --%>
|
|
|
|
<%-- except that is nontrivial thanks to dependency ordering -_- --%>
|
|
|
|
<script type="text/javascript" src="js/cah.constants.js"></script>
|
|
|
|
<script type="text/javascript" src="js/cah.log.js"></script>
|
|
|
|
<script type="text/javascript" src="js/cah.gamelist.js"></script>
|
|
|
|
<script type="text/javascript" src="js/cah.card.js"></script>
|
2012-07-07 18:48:22 +01:00
|
|
|
<script type="text/javascript" src="js/cah.cardset.js"></script>
|
2012-01-30 01:13:51 +00:00
|
|
|
<script type="text/javascript" src="js/cah.game.js"></script>
|
|
|
|
<script type="text/javascript" src="js/cah.longpoll.js"></script>
|
|
|
|
<script type="text/javascript" src="js/cah.longpoll.handlers.js"></script>
|
|
|
|
<script type="text/javascript" src="js/cah.ajax.js"></script>
|
|
|
|
<script type="text/javascript" src="js/cah.ajax.builder.js"></script>
|
|
|
|
<script type="text/javascript" src="js/cah.ajax.handlers.js"></script>
|
|
|
|
<script type="text/javascript" src="js/cah.app.js"></script>
|
|
|
|
<link rel="stylesheet" type="text/css" href="cah.css" media="screen" />
|
2012-09-22 15:51:23 +01:00
|
|
|
<jsp:include page="analytics.jsp" />
|
2012-01-30 01:13:51 +00:00
|
|
|
</head>
|
|
|
|
<body>
|
|
|
|
|
|
|
|
<%--
|
|
|
|
<div id="browser" class="hide">
|
|
|
|
<div id="browser_inner">
|
2012-03-15 17:14:32 +00:00
|
|
|
<p>Pretend You're Xyzzy is known to have graphical glitches in
|
2012-01-30 01:13:51 +00:00
|
|
|
<span id="browser_name">$BROWSER_NAME</span>. The game should work,
|
|
|
|
but it looks much better in <a href="http://google.com/chrome/">Google Chrome.</a></p>
|
|
|
|
<p>We will not bug you about this again after you dismiss this dialog.</p>
|
|
|
|
<input type="button" id="browser_ok" value="Okay, I Understand" />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
--%>
|
|
|
|
|
2012-09-10 06:08:24 +01:00
|
|
|
<div id="welcome">
|
|
|
|
<h1>
|
|
|
|
Pretend You're <dfn style="border-bottom: 1px dotted black"
|
|
|
|
title="Xyzzy is an Artificial Unintelligence bot. You'll be making more sense than him in this game.">
|
|
|
|
Xyzzy</dfn>
|
|
|
|
</h1>
|
|
|
|
<h3>A <a href="http://cardsagainsthumanity.com/">Cards Against Humanity</a> clone.</h3>
|
|
|
|
<p>
|
|
|
|
This webapp is still in development. There will be bugs, but hopefully they won't affect gameplay
|
|
|
|
very much. To assist with development, <strong>all traffic on this server <em>may</em> be
|
|
|
|
logged.</strong>
|
|
|
|
</p>
|
|
|
|
<p>
|
|
|
|
If this is your first time playing, you may wish to read <a href="/">the changelog and list of
|
|
|
|
known issues.</a>
|
|
|
|
</p>
|
|
|
|
<div id="nickbox">
|
|
|
|
Nickname: <input type="text" id="nickname" value="" maxlength="30" />
|
|
|
|
<input type="button" id="nicknameconfirm" value="Set" />
|
|
|
|
<span id="nickbox_error" class="error"></span>
|
|
|
|
</div>
|
|
|
|
<p>
|
|
|
|
Pretend You're Xyzzy is a Cards Against Humanity clone, which is available at
|
|
|
|
<a href="http://www.cardsagainsthumanity.com/">cardsagainsthumanity.com</a>, where you can buy it
|
|
|
|
or download and print it out yourself. It is distributed under a
|
|
|
|
<a href="http://creativecommons.org/licenses/by-nc-sa/3.0/">Creative Commons - Attribution -
|
|
|
|
Noncommercial - Share Alike license</a>. This web version is in no way endorsed or sponsored by
|
|
|
|
cardsagainsthumanity.com. You may download the source code to this version from
|
|
|
|
<a href="https://github.com/ajanata/PretendYoureXyzzy">GitHub</a>. For full license
|
|
|
|
information, including information about included libraries, see the
|
|
|
|
<a href="license.html">full license information</a>.
|
|
|
|
</p>
|
2012-01-30 01:13:51 +00:00
|
|
|
</div>
|
|
|
|
|
|
|
|
<div id="canvas" class="hide">
|
|
|
|
<div id="menubar">
|
|
|
|
<div id="menubar_left">
|
|
|
|
<input type="button" id="refresh_games" class="hide" value="Refresh Games" />
|
|
|
|
<input type="button" id="create_game" class="hide" value="Create Game" />
|
|
|
|
<input type="button" id="leave_game" class="hide" value="Leave Game" />
|
|
|
|
<input type="button" id="start_game" class="hide" value="Start Game" />
|
|
|
|
</div>
|
|
|
|
<div id="menubar_right">
|
2012-03-17 01:35:13 +00:00
|
|
|
Current timer duration: <span id="current_timer">0</span> seconds
|
2012-01-30 01:13:51 +00:00
|
|
|
<input type="button" id="logout" value="Log out" />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div id="main">
|
|
|
|
<div id="game_list" class="hide">
|
|
|
|
</div>
|
|
|
|
<div id="main_holder">
|
|
|
|
</div>
|
|
|
|
</div>
|
2012-01-30 08:35:27 +00:00
|
|
|
</div>
|
|
|
|
<div id="bottom" class="hide">
|
2012-01-30 01:13:51 +00:00
|
|
|
<div id="info_area">
|
|
|
|
</div>
|
|
|
|
<div id="chat_area">
|
|
|
|
<div id="log"></div>
|
|
|
|
<input type="text" id="chat" maxlength="200" />
|
|
|
|
<input type="button" id="chat_submit" value="Chat" />
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- Template for game lobbies in the game list. -->
|
2012-02-01 01:59:53 +00:00
|
|
|
<div class="hide">
|
|
|
|
<div id="gamelist_lobby_template" class="gamelist_lobby">
|
|
|
|
<div class="gamelist_lobby_left">
|
|
|
|
Game <span class="gamelist_lobby_id">###</span>
|
|
|
|
<span class="gamelist_lobby_status">status</span>
|
2012-03-19 04:20:48 +00:00
|
|
|
<br/>
|
|
|
|
Goal: <span class="gamelist_lobby_goal"></span>
|
|
|
|
/ Cards: <span class="gamelist_lobby_cardset"></span>
|
|
|
|
<br/>
|
2012-02-01 01:59:53 +00:00
|
|
|
Host: <span class="gamelist_lobby_host">host</span>
|
|
|
|
<br/>
|
2012-03-19 04:20:48 +00:00
|
|
|
Players (<span class="gamelist_lobby_player_count"></span> of
|
|
|
|
<span class="gamelist_lobby_max_players"></span>):
|
|
|
|
<span class="gamelist_lobby_players">host, player1, player2</span>
|
2012-02-01 01:59:53 +00:00
|
|
|
</div>
|
|
|
|
<div class="gamelist_lobby_right">
|
|
|
|
<input type="button" class="gamelist_lobby_join" value="Join" />
|
|
|
|
</div>
|
|
|
|
</div>
|
2012-01-30 01:13:51 +00:00
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- Template for face-up black cards. -->
|
2012-02-01 01:59:53 +00:00
|
|
|
<div class="hide">
|
|
|
|
<div id="black_up_template" class="card blackcard">
|
|
|
|
<span class="card_text">The quick brown fox jumped over the lazy dog.</span>
|
2012-02-01 04:22:07 +00:00
|
|
|
<div class="logo">
|
|
|
|
<div class="logo_1 logo_element">
|
|
|
|
</div>
|
|
|
|
<div class="logo_2 logo_element">
|
|
|
|
</div>
|
2012-07-07 23:01:33 +01:00
|
|
|
<div class="logo_3 logo_element watermark_container">
|
|
|
|
<br/>
|
|
|
|
<span class="watermark"></span>
|
2012-02-01 04:22:07 +00:00
|
|
|
</div>
|
2012-03-15 17:14:32 +00:00
|
|
|
<div class="logo_text">Pretend You're Xyzzy</div>
|
2012-02-01 04:22:07 +00:00
|
|
|
</div>
|
|
|
|
<div class="card_metadata">
|
|
|
|
<div class="draw hide">DRAW <div class="card_number"></div></div>
|
|
|
|
<div class="pick hide">PICK <div class="card_number"></div></div>
|
|
|
|
</div>
|
2012-02-01 01:59:53 +00:00
|
|
|
</div>
|
2012-01-30 01:13:51 +00:00
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- Template for face-down black cards. -->
|
2012-02-01 01:59:53 +00:00
|
|
|
<div class="hide">
|
|
|
|
<div id="black_down_template" class="card blackcard">
|
|
|
|
</div>
|
2012-01-30 01:13:51 +00:00
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- Template for face-up white cards. -->
|
2012-02-01 01:59:53 +00:00
|
|
|
<div class="hide">
|
|
|
|
<div id="white_up_template" class="card whitecard">
|
|
|
|
<span class="card_text">The quick brown fox jumped over the lazy dog.</span>
|
2012-02-01 04:22:07 +00:00
|
|
|
<div class="logo">
|
|
|
|
<div class="logo_1 logo_element">
|
|
|
|
</div>
|
|
|
|
<div class="logo_2 logo_element">
|
|
|
|
</div>
|
2012-07-07 23:01:33 +01:00
|
|
|
<div class="logo_3 logo_element watermark_container">
|
|
|
|
<br/>
|
|
|
|
<span class="watermark"></span>
|
2012-02-01 04:22:07 +00:00
|
|
|
</div>
|
2012-03-15 17:14:32 +00:00
|
|
|
<div class="logo_text">Pretend You're Xyzzy</div>
|
2012-02-01 04:22:07 +00:00
|
|
|
</div>
|
2012-02-01 01:59:53 +00:00
|
|
|
</div>
|
2012-01-30 01:13:51 +00:00
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- Template for face-down white cards. -->
|
2012-02-01 01:59:53 +00:00
|
|
|
<div class="hide">
|
|
|
|
<div id="white_down_template" class="card whitecard">
|
|
|
|
</div>
|
2012-01-30 01:13:51 +00:00
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- Template for game lobbies. We have a holder here for designing only. -->
|
|
|
|
<div style="width: 1000px; height: 506px; border: 1px solid black; position: relative;"
|
|
|
|
class="hide">
|
2012-02-01 01:59:53 +00:00
|
|
|
<div id="game_template" class="game">
|
2012-02-08 03:30:30 +00:00
|
|
|
<div class="game_top">
|
2012-03-19 04:38:24 +00:00
|
|
|
<input type="button" class="game_show_last_round game_menu_bar" value="Show Last Round"
|
2012-02-08 03:30:30 +00:00
|
|
|
disabled="disabled" />
|
2012-03-19 04:38:24 +00:00
|
|
|
<input type="button" class="game_show_options game_menu_bar" value="Hide Game Options" />
|
2012-02-08 03:30:30 +00:00
|
|
|
<div class="game_message">
|
|
|
|
Waiting for server...
|
|
|
|
</div>
|
2012-01-30 01:13:51 +00:00
|
|
|
</div>
|
|
|
|
<div style="width:100%; height:100%;">
|
|
|
|
<div style="width:100%; height:100%;">
|
|
|
|
<div class="game_left_side">
|
|
|
|
<div class="game_black_card_wrapper">
|
2012-02-08 03:30:30 +00:00
|
|
|
The black card for <span class="game_black_card_round_indicator">this round is</span>:
|
2012-01-30 01:13:51 +00:00
|
|
|
<div class="game_black_card">
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<input type="button" class="confirm_card" value="Confirm Selection" />
|
|
|
|
</div>
|
2012-03-15 20:50:42 +00:00
|
|
|
<div class="game_options">
|
|
|
|
</div>
|
|
|
|
<div class="game_right_side hide">
|
2012-02-08 03:30:30 +00:00
|
|
|
<div class="game_right_side_box game_white_card_wrapper">
|
2012-01-30 01:13:51 +00:00
|
|
|
The white cards played this round are:
|
2012-02-08 03:30:30 +00:00
|
|
|
<div class="game_white_cards game_right_side_cards">
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="game_right_side_box game_last_round hide">
|
|
|
|
The previous round was won by <span class="game_last_round_winner"></span>.
|
|
|
|
<div class="game_last_round_cards game_right_side_cards">
|
2012-01-30 01:13:51 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<div class="game_hand">
|
2012-02-07 22:15:51 +00:00
|
|
|
<div class="game_hand_filter hide">
|
|
|
|
<span class="game_hand_filter_text"></span>
|
|
|
|
</div>
|
2012-01-30 01:13:51 +00:00
|
|
|
<span class="header">Your Hand</span>
|
|
|
|
<div class="game_hand_cards">
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- Template for scoreboard container. Holder for design. -->
|
|
|
|
<div style="height: 215px; border: 1px solid black;" class="hide">
|
2012-02-01 01:59:53 +00:00
|
|
|
<div id="scoreboard_template" class="scoreboard">
|
2012-01-30 01:13:51 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
<!-- Template for scoreboard score card. Holder for design. -->
|
|
|
|
<div class="scoreboard hide" style="height: 215px;">
|
2012-02-01 01:59:53 +00:00
|
|
|
<div id="scorecard_template" class="scorecard">
|
2012-01-30 01:13:51 +00:00
|
|
|
<span class="scorecard_player">PlayerName</span>
|
|
|
|
<div class="clear"></div>
|
2012-01-30 08:35:27 +00:00
|
|
|
<span class="scorecard_score">0</span> Awesome Point<span class="scorecard_s">s</span>
|
2012-01-30 01:13:51 +00:00
|
|
|
<span class="scorecard_status">Status</span>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
2012-02-01 01:59:53 +00:00
|
|
|
<!-- Template for round card set binder. -->
|
|
|
|
<div class="hide">
|
|
|
|
<div id="game_white_cards_binder_template" class="game_white_cards_binder hide">
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
2012-02-08 03:30:30 +00:00
|
|
|
<!-- Previous round display. -->
|
|
|
|
<div class="hide">
|
|
|
|
<div id="previous_round_template" class="previous_round">
|
|
|
|
<input type="button" class="previous_round_close" value="Close" />
|
|
|
|
Round winner: <span class="previous_round_winner"></span>
|
|
|
|
<div class="previous_round_cards"></div>
|
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
2012-03-15 20:50:42 +00:00
|
|
|
<!-- Template for game options. -->
|
|
|
|
<div class="hide">
|
|
|
|
<div class="game_options" id="game_options_template">
|
2012-03-16 03:06:23 +00:00
|
|
|
<span class="options_host_only">Only the game host can change options.</span>
|
2012-03-15 20:50:42 +00:00
|
|
|
<br/><br/>
|
2012-07-07 18:48:22 +01:00
|
|
|
<fieldset>
|
2012-07-07 23:01:33 +01:00
|
|
|
<legend>Game options:</legend>
|
|
|
|
<label id="score_limit_template_label" for="score_limit_template">Score limit:</label>
|
|
|
|
<select id="score_limit_template" class="score_limit">
|
|
|
|
<option value="4">4</option>
|
|
|
|
<option value="5">5</option>
|
|
|
|
<option value="6">6</option>
|
|
|
|
<option value="7">7</option>
|
|
|
|
<option value="8" selected="selected">8</option>
|
|
|
|
<option value="9">9</option>
|
|
|
|
<option value="10">10</option>
|
|
|
|
</select>
|
2012-07-07 18:48:22 +01:00
|
|
|
<br/>
|
2012-07-07 23:01:33 +01:00
|
|
|
<label id="player_limit_template_label" for="player_limit_template">Player limit:</label>
|
|
|
|
<select id="player_limit_template" class="player_limit">
|
|
|
|
<option value="3">3</option>
|
|
|
|
<option value="4">4</option>
|
|
|
|
<option value="5">5</option>
|
|
|
|
<option value="6">6</option>
|
|
|
|
<option value="7">7</option>
|
|
|
|
<option value="8">8</option>
|
|
|
|
<option value="9">9</option>
|
|
|
|
<option value="10" selected="selected">10</option>
|
2012-08-21 06:39:06 +01:00
|
|
|
<option value="11">11</option>
|
|
|
|
<option value="12">12</option>
|
|
|
|
<option value="13">13</option>
|
|
|
|
<option value="14">14</option>
|
|
|
|
<option value="15">15</option>
|
|
|
|
<option value="16">16</option>
|
|
|
|
<option value="17">17</option>
|
|
|
|
<option value="18">18</option>
|
|
|
|
<option value="19">19</option>
|
|
|
|
<option value="20">20</option>
|
2012-07-07 23:01:33 +01:00
|
|
|
</select>
|
2012-08-21 06:39:06 +01:00
|
|
|
Having more than 10 players may get cramped!
|
2012-07-07 23:01:33 +01:00
|
|
|
<br/>
|
|
|
|
<fieldset class="card_sets">
|
|
|
|
<legend>Card Sets</legend>
|
|
|
|
Select at least one of: <span class="base_card_sets"></span>
|
|
|
|
<br/>
|
|
|
|
Select any number of: <span class="extra_card_sets"></span>
|
|
|
|
</fieldset>
|
|
|
|
<br/>
|
|
|
|
<label id="game_password_template_label" for="game_password_template">Game password:</label>
|
|
|
|
<input type="text" id="game_password_template" class="game_password" />
|
|
|
|
You must click outside the box to apply the password.
|
2012-07-07 18:48:22 +01:00
|
|
|
</fieldset>
|
2012-03-15 20:50:42 +00:00
|
|
|
</div>
|
|
|
|
</div>
|
|
|
|
|
2012-01-30 01:13:51 +00:00
|
|
|
</body>
|
|
|
|
</html>
|