Add rules screen after first login, add level text to profile screen, add references to Netsyms TOS

master
Skylar Ittner 8 years ago
parent 156fd6454d
commit 02af40c19b

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?> <?xml version="1.0" encoding="utf-8" standalone="no"?>
<widget xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0" xmlns:cdv="http://cordova.apache.org/ns/1.0" id="com.netsyms.terranquest.TerranQuest" version="1.0.0"> <widget xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0" xmlns:cdv="http://cordova.apache.org/ns/1.0" id="com.netsyms.terranquest.TerranQuest" version="1.1.2">
<name>TerranQuest</name> <name>TerranQuest</name>
<description> <description>
Augmented Reality fantasy game Augmented Reality fantasy game

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="10000" android:versionName="1.0.0" package="com.netsyms.terranquest.TerranQuest" xmlns:android="http://schemas.android.com/apk/res/android"> <manifest android:hardwareAccelerated="true" android:versionCode="10102" android:versionName="1.1.2" package="com.netsyms.terranquest.TerranQuest" xmlns:android="http://schemas.android.com/apk/res/android">
<supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" /> <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true"> <application android:hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name" android:supportsRtl="true">

@ -83,6 +83,16 @@ body {
background: rgba(0,0,0,.9); background: rgba(0,0,0,.9);
} }
#overlay-main #main-content {
overflow-x: auto;
overflow-y: auto;
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
}
#mainCloseBtn { #mainCloseBtn {
z-index: 999999; z-index: 999999;
position: absolute; position: absolute;

@ -22,14 +22,15 @@ var map = L.map('map');
var tileurl = "http://tile.stamen.com/terrain/{z}/{x}/{y}.jpg"; var tileurl = "http://tile.stamen.com/terrain/{z}/{x}/{y}.jpg";
map.setZoom(16); map.setZoom(16);
map.dragging.disable(); map.dragging.disable();
map.touchZoom.disable(); //map.touchZoom.disable();
map.doubleClickZoom.disable(); //map.doubleClickZoom.disable();
map.scrollWheelZoom.disable(); //map.scrollWheelZoom.disable();
map.keyboard.disable(); map.keyboard.disable();
$(".leaflet-control-zoom").css("visibility", "hidden"); $(".leaflet-control-zoom").css("visibility", "hidden");
// Disable tap handler, if present. // Disable tap handler, if present.
if (map.tap) //if (map.tap) {
map.tap.disable(); // map.tap.disable();
//}
var lc = L.control.locate({ var lc = L.control.locate({
position: 'topleft', // set the location of the control position: 'topleft', // set the location of the control
layer: undefined, // use your own layer for the location marker, creates a new layer by default layer: undefined, // use your own layer for the location marker, creates a new layer by default
@ -63,8 +64,8 @@ var lc = L.control.locate({
}, },
locateOptions: {} // define location options e.g enableHighAccuracy: true or maxZoom: 10 locateOptions: {} // define location options e.g enableHighAccuracy: true or maxZoom: 10
}).addTo(map); }).addTo(map);
map.addLayer(new L.tileLayer(tileurl, {minZoom: 16, maxZoom: 16})); map.addLayer(new L.tileLayer(tileurl, {minZoom: 15, maxZoom: 17}));
//map.setView(new L.LatLng(46, -112), 15);
lc.start(); lc.start();
function mapPos(lat, lon) { function mapPos(lat, lon) {
@ -183,7 +184,9 @@ setTimeout(function () {
* Syncs the user's stats with the server and calls refreshStats(). * Syncs the user's stats with the server and calls refreshStats().
*/ */
function syncStats() { function syncStats() {
$.getJSON(mkApiUrl('getstats') + "?user=" + username, null, function (data) { $.getJSON(mkApiUrl('getstats'), {
user: username
}, function (data) {
if (data.status === 'OK') { if (data.status === 'OK') {
maxenergy = data.stats.maxenergy; maxenergy = data.stats.maxenergy;
energy = data.stats.energy; energy = data.stats.energy;
@ -248,13 +251,21 @@ $("#chatsendform").submit(function (event) {
function toggleChat() { function toggleChat() {
if ($('#chatmsgs').css('display') === 'none') { if ($('#chatmsgs').css('display') === 'none') {
$('#chatmsgs').css('display', 'block'); openChat();
$("#chatmsgs").animate({scrollTop: $('#chatmsgs').prop("scrollHeight")}, 1000);
} else { } else {
$('#chatmsgs').css('display', 'none'); closeChat();
} }
} }
function closeChat() {
$('#chatmsgs').css('display', 'none');
}
function openChat() {
$('#chatmsgs').css('display', 'block');
$("#chatmsgs").animate({scrollTop: $('#chatmsgs').prop("scrollHeight")}, 1000);
}
function openProfile(user) { function openProfile(user) {
user = typeof user !== 'undefined' ? user : username; user = typeof user !== 'undefined' ? user : username;
$('#main-content').load("screens/profile.html", null, function (x) { $('#main-content').load("screens/profile.html", null, function (x) {
@ -263,6 +274,11 @@ function openProfile(user) {
}); });
} }
function openRules() {
$('#main-content').load("screens/rules.html", null, function (x) {
$('#overlay-main').css('display', 'block');
});
}
@ -285,4 +301,10 @@ document.addEventListener("backbutton", function (event) {
} else if ($('#chatmsgs').css('display') !== 'none') { } else if ($('#chatmsgs').css('display') !== 'none') {
toggleChat(); toggleChat();
} }
}, false); }, false);
// Show the rules
if (localStorage.getItem("seenrules") !== 'yes') {
openRules();
localStorage.setItem("seenrules", 'yes');
}

@ -38,7 +38,7 @@
<div class="btn btn-info"><i class="fa fa-comments-o"></i></div> <div class="btn btn-info"><i class="fa fa-comments-o"></i></div>
</div> </div>
<form id="chatsendform"> <form id="chatsendform">
<input type="text" class="form-control" id="chatbox-input" placeholder="Type to chat" /> <input type="text" class="form-control" id="chatbox-input" onclick="openChat()" placeholder="Type to chat" />
</form> </form>
</div> </div>
</div> </div>

@ -1,5 +1,6 @@
<div class="h3" id="player-name"></div> <div class="h4" id="player-name"></div>
<div class="h4">Badges</div> <p id="player-level"></p>
<div class="h5">Badges</div>
<div id="loading-badges"> <div id="loading-badges">
<i class="fa fa-spinner fa-pulse"></i> Loading... <i class="fa fa-spinner fa-pulse"></i> Loading...
</div> </div>
@ -14,9 +15,23 @@
function loadProfile(user) { function loadProfile(user) {
$('#player-name').text(user); $('#player-name').text(user);
loadBadges(user); loadBadges(user);
loadPlayerStats(user);
}
function loadPlayerStats(user) {
$.getJSON(mkApiUrl('getstats'), {
user: user
}, function (data) {
if (data.status === 'OK') {
$('#player-level').text('Level ' + Math.floor(data.stats.level));
} else {
$('#player-level').text('Error: cannot load player stats.');
}
}).fail(function () {
$('#player-level').text('Error: check your connection.');
});
} }
// TODO: Make this actually use the database/API!
function loadBadges(user) { function loadBadges(user) {
$('#loading-badges').html('<i class="fa fa-spinner fa-pulse"></i> Loading...'); $('#loading-badges').html('<i class="fa fa-spinner fa-pulse"></i> Loading...');
$('#loading-badges').css('display', 'block'); $('#loading-badges').css('display', 'block');

@ -0,0 +1,18 @@
<div class="h4">Rules</div>
<p>Please read these rules. Because TerranQuest is a game involving other
people and the environment, it's important to show good etiquette.</p>
<ol class="list-group">
<li class="list-group-item">Do not endanger yourself or others</li>
<li class="list-group-item">be considerate and polite in the in-game chat, and don't swear</li>
<li class="list-group-item">Observe all local laws and rules</li>
<li class="list-group-item">Respect property rights and obtain permission for playing on private land</li>
<li class="list-group-item">Be nice to other people and try not to look too creepy</li>
<li class="list-group-item">Respect and minimize your impact on the environment</li>
<li class="list-group-item">Don't tamper with or deface any objects, landmarks, barcodes, or other real-world items</li>
<li class="list-group-item">Pick up any trash you find and dispose of it properly if you can</li>
<li class="list-group-item">Socialize with any players of other games, such as Geocaching and Ingress, you might meet</li>
<li class="list-group-item">Follow the Netsyms Technologies Terms of Service at netsyms.com/legal</li>
<!--
<li class="list-group-item"></li>
-->
</ol>

@ -32,6 +32,8 @@
<span class="input-group-addon" id="basic-addon-nameicon"><i class="fa fa-male fa-fw"></i></span> <span class="input-group-addon" id="basic-addon-nameicon"><i class="fa fa-male fa-fw"></i></span>
<input type="text" placeholder="Real Name" id="nameBox" class="form-control" aria-describedby="basic-addon-nameicon" autocorrect="off" autocapitalize="off" spellcheck="false" /> <input type="text" placeholder="Real Name" id="nameBox" class="form-control" aria-describedby="basic-addon-nameicon" autocorrect="off" autocapitalize="off" spellcheck="false" />
</div> </div>
<br />
<p>By signing up, you agree to the Netsyms Technologies Terms of Service and Privacy Policy at netsyms.com/legal</p>
</div> </div>
<div class="panel-footer"> <div class="panel-footer">
<a href="#" onclick="dosignup()" id="signupBtn" class="btn btn-success btn-wide"><i class="fa fa-user-plus"></i> Sign Up</a><br /><br /> <a href="#" onclick="dosignup()" id="signupBtn" class="btn btn-success btn-wide"><i class="fa fa-user-plus"></i> Sign Up</a><br /><br />

@ -1,5 +1,5 @@
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<widget id="com.netsyms.terranquest.TerranQuest" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0" xmlns:gap="http://phonegap.com/ns/1.0"> <widget id="com.netsyms.terranquest.TerranQuest" version="1.1.2" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0" xmlns:gap="http://phonegap.com/ns/1.0">
<preference name="loglevel" value="DEBUG" /> <preference name="loglevel" value="DEBUG" />
<feature name="Geolocation"> <feature name="Geolocation">
<param name="android-package" value="org.apache.cordova.geolocation.Geolocation" /> <param name="android-package" value="org.apache.cordova.geolocation.Geolocation" />

@ -83,6 +83,16 @@ body {
background: rgba(0,0,0,.9); background: rgba(0,0,0,.9);
} }
#overlay-main #main-content {
overflow-x: auto;
overflow-y: auto;
position: absolute;
top: 0;
left: 0;
height: 100%;
width: 100%;
}
#mainCloseBtn { #mainCloseBtn {
z-index: 999999; z-index: 999999;
position: absolute; position: absolute;

@ -22,14 +22,15 @@ var map = L.map('map');
var tileurl = "http://tile.stamen.com/terrain/{z}/{x}/{y}.jpg"; var tileurl = "http://tile.stamen.com/terrain/{z}/{x}/{y}.jpg";
map.setZoom(16); map.setZoom(16);
map.dragging.disable(); map.dragging.disable();
map.touchZoom.disable(); //map.touchZoom.disable();
map.doubleClickZoom.disable(); //map.doubleClickZoom.disable();
map.scrollWheelZoom.disable(); //map.scrollWheelZoom.disable();
map.keyboard.disable(); map.keyboard.disable();
$(".leaflet-control-zoom").css("visibility", "hidden"); $(".leaflet-control-zoom").css("visibility", "hidden");
// Disable tap handler, if present. // Disable tap handler, if present.
if (map.tap) //if (map.tap) {
map.tap.disable(); // map.tap.disable();
//}
var lc = L.control.locate({ var lc = L.control.locate({
position: 'topleft', // set the location of the control position: 'topleft', // set the location of the control
layer: undefined, // use your own layer for the location marker, creates a new layer by default layer: undefined, // use your own layer for the location marker, creates a new layer by default
@ -63,8 +64,8 @@ var lc = L.control.locate({
}, },
locateOptions: {} // define location options e.g enableHighAccuracy: true or maxZoom: 10 locateOptions: {} // define location options e.g enableHighAccuracy: true or maxZoom: 10
}).addTo(map); }).addTo(map);
map.addLayer(new L.tileLayer(tileurl, {minZoom: 16, maxZoom: 16})); map.addLayer(new L.tileLayer(tileurl, {minZoom: 15, maxZoom: 17}));
//map.setView(new L.LatLng(46, -112), 15);
lc.start(); lc.start();
function mapPos(lat, lon) { function mapPos(lat, lon) {
@ -183,7 +184,9 @@ setTimeout(function () {
* Syncs the user's stats with the server and calls refreshStats(). * Syncs the user's stats with the server and calls refreshStats().
*/ */
function syncStats() { function syncStats() {
$.getJSON(mkApiUrl('getstats') + "?user=" + username, null, function (data) { $.getJSON(mkApiUrl('getstats'), {
user: username
}, function (data) {
if (data.status === 'OK') { if (data.status === 'OK') {
maxenergy = data.stats.maxenergy; maxenergy = data.stats.maxenergy;
energy = data.stats.energy; energy = data.stats.energy;
@ -248,13 +251,21 @@ $("#chatsendform").submit(function (event) {
function toggleChat() { function toggleChat() {
if ($('#chatmsgs').css('display') === 'none') { if ($('#chatmsgs').css('display') === 'none') {
$('#chatmsgs').css('display', 'block'); openChat();
$("#chatmsgs").animate({scrollTop: $('#chatmsgs').prop("scrollHeight")}, 1000);
} else { } else {
$('#chatmsgs').css('display', 'none'); closeChat();
} }
} }
function closeChat() {
$('#chatmsgs').css('display', 'none');
}
function openChat() {
$('#chatmsgs').css('display', 'block');
$("#chatmsgs").animate({scrollTop: $('#chatmsgs').prop("scrollHeight")}, 1000);
}
function openProfile(user) { function openProfile(user) {
user = typeof user !== 'undefined' ? user : username; user = typeof user !== 'undefined' ? user : username;
$('#main-content').load("screens/profile.html", null, function (x) { $('#main-content').load("screens/profile.html", null, function (x) {
@ -263,6 +274,11 @@ function openProfile(user) {
}); });
} }
function openRules() {
$('#main-content').load("screens/rules.html", null, function (x) {
$('#overlay-main').css('display', 'block');
});
}
@ -285,4 +301,10 @@ document.addEventListener("backbutton", function (event) {
} else if ($('#chatmsgs').css('display') !== 'none') { } else if ($('#chatmsgs').css('display') !== 'none') {
toggleChat(); toggleChat();
} }
}, false); }, false);
// Show the rules
if (localStorage.getItem("seenrules") !== 'yes') {
openRules();
localStorage.setItem("seenrules", 'yes');
}

@ -38,7 +38,7 @@
<div class="btn btn-info"><i class="fa fa-comments-o"></i></div> <div class="btn btn-info"><i class="fa fa-comments-o"></i></div>
</div> </div>
<form id="chatsendform"> <form id="chatsendform">
<input type="text" class="form-control" id="chatbox-input" placeholder="Type to chat" /> <input type="text" class="form-control" id="chatbox-input" onclick="openChat()" placeholder="Type to chat" />
</form> </form>
</div> </div>
</div> </div>

@ -1,5 +1,6 @@
<div class="h3" id="player-name"></div> <div class="h4" id="player-name"></div>
<div class="h4">Badges</div> <p id="player-level"></p>
<div class="h5">Badges</div>
<div id="loading-badges"> <div id="loading-badges">
<i class="fa fa-spinner fa-pulse"></i> Loading... <i class="fa fa-spinner fa-pulse"></i> Loading...
</div> </div>
@ -14,9 +15,23 @@
function loadProfile(user) { function loadProfile(user) {
$('#player-name').text(user); $('#player-name').text(user);
loadBadges(user); loadBadges(user);
loadPlayerStats(user);
}
function loadPlayerStats(user) {
$.getJSON(mkApiUrl('getstats'), {
user: user
}, function (data) {
if (data.status === 'OK') {
$('#player-level').text('Level ' + Math.floor(data.stats.level));
} else {
$('#player-level').text('Error: cannot load player stats.');
}
}).fail(function () {
$('#player-level').text('Error: check your connection.');
});
} }
// TODO: Make this actually use the database/API!
function loadBadges(user) { function loadBadges(user) {
$('#loading-badges').html('<i class="fa fa-spinner fa-pulse"></i> Loading...'); $('#loading-badges').html('<i class="fa fa-spinner fa-pulse"></i> Loading...');
$('#loading-badges').css('display', 'block'); $('#loading-badges').css('display', 'block');

@ -0,0 +1,18 @@
<div class="h4">Rules</div>
<p>Please read these rules. Because TerranQuest is a game involving other
people and the environment, it's important to show good etiquette.</p>
<ol class="list-group">
<li class="list-group-item">Do not endanger yourself or others</li>
<li class="list-group-item">Be considerate and polite in the in-game chat, and don't swear</li>
<li class="list-group-item">Observe all local laws and rules</li>
<li class="list-group-item">Respect property rights and obtain permission for playing on private land</li>
<li class="list-group-item">Be nice to other people and try not to look too creepy</li>
<li class="list-group-item">Respect and minimize your impact on the environment</li>
<li class="list-group-item">Don't tamper with or deface any objects, landmarks, barcodes, or other real-world items</li>
<li class="list-group-item">Pick up any trash you find and dispose of it properly if you can</li>
<li class="list-group-item">Socialize with any players of other games, such as Geocaching and Ingress, you might meet</li>
<li class="list-group-item">Follow the Netsyms Technologies Terms of Service at netsyms.com/legal</li>
<!--
<li class="list-group-item"></li>
-->
</ol>

@ -32,6 +32,8 @@
<span class="input-group-addon" id="basic-addon-nameicon"><i class="fa fa-male fa-fw"></i></span> <span class="input-group-addon" id="basic-addon-nameicon"><i class="fa fa-male fa-fw"></i></span>
<input type="text" placeholder="Real Name" id="nameBox" class="form-control" aria-describedby="basic-addon-nameicon" autocorrect="off" autocapitalize="off" spellcheck="false" /> <input type="text" placeholder="Real Name" id="nameBox" class="form-control" aria-describedby="basic-addon-nameicon" autocorrect="off" autocapitalize="off" spellcheck="false" />
</div> </div>
<br />
<p>By signing up, you agree to the Netsyms Technologies Terms of Service and Privacy Policy at netsyms.com/legal</p>
</div> </div>
<div class="panel-footer"> <div class="panel-footer">
<a href="#" onclick="dosignup()" id="signupBtn" class="btn btn-success btn-wide"><i class="fa fa-user-plus"></i> Sign Up</a><br /><br /> <a href="#" onclick="dosignup()" id="signupBtn" class="btn btn-success btn-wide"><i class="fa fa-user-plus"></i> Sign Up</a><br /><br />