mirror of
https://github.com/wassname/cardsforscience.git
synced 2026-06-27 18:58:47 +08:00
264 lines
15 KiB
HTML
264 lines
15 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en" ng-app="particleClicker">
|
|
<head>
|
|
<title>Particle Clicker</title>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
|
|
<meta property="og:title" content="Particle Clicker">
|
|
<meta property="og:type" content="game">
|
|
<meta property="og:description" content="An addictive incremental game that was made during the CERN Webfest 2014. It takes the player on a historic journey through modern particle physics.">
|
|
<meta property="og:image" content="https://avatars2.githubusercontent.com/u/8345868">
|
|
|
|
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
|
|
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/font-awesome/4.1.0/css/font-awesome.min.css">
|
|
<link rel="stylesheet" href="css/style.css">
|
|
|
|
<!-- Google Analytics -->
|
|
<script>
|
|
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
|
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
|
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
|
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
|
|
</script>
|
|
<!-- End Google Analytics -->
|
|
</head>
|
|
<body>
|
|
<div id="MobileWarning" class="modal fade">
|
|
<div class="modal-dialog bg-warning">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
|
|
<h4 class="modal-title">Mobile version</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<p>
|
|
You seem to be using a mobile device. The experience with this website might be very unpleasant for you. This is why we made a mobile version of Particle Clicker.
|
|
</p>
|
|
<p class="bg-warning">
|
|
This is an early release for you to play with. It's best played in landscape mode. If you find any bugs please report them on our <a href="https://github.com/particle-clicker/particle-clicker/issues"><i class="fa fa-github"></i> issue tracker</a>.
|
|
</p>
|
|
<p class="small">Hint: If you use the "Save to home screen" function of your browser, you can even play the game in full screen mode.</p>
|
|
</div>
|
|
<div class="modal-footer">
|
|
<button type="button" class="btn btn-default" data-dismiss="modal">Understood, but I want to stay here!</button>
|
|
<a href="mobile.html" class="btn btn-primary">Great, take me there!</a>
|
|
</div>
|
|
</div><!-- /.modal-content -->
|
|
</div><!-- /.modal-dialog -->
|
|
</div><!-- /.modal -->
|
|
|
|
|
|
<nav class="navbar navbar-default navbar-fixed-top" role="navigation">
|
|
<div class="container-fluid">
|
|
<div class="navbar-header">
|
|
<a class="navbar-brand" href="#" data-toggle="modal" data-target="#myModal">Particle Clicker</a>
|
|
</div>
|
|
<ul class="nav navbar-nav navbar-left">
|
|
<li><a href="#" data-toggle="modal" data-target="#achievements-modal"><i class="fa fa-trophy"></i> Achievements</a></li>
|
|
<li class="dropdown" ng-controller="SaveController">
|
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Last saved: <span ng-cloak>{{ lastSaved | date : 'H:mm:ss' }}</span><span class="caret"></span></a>
|
|
<ul class="dropdown-menu" role="menu">
|
|
<li><a href="#" ng-click="saveNow()"><i class="fa fa-save"></i> Save now</a></li>
|
|
<li class="divider"></li>
|
|
<li><a href="#" ng-click="restart()"><i class="fa fa-refresh"></i> Restart</a></li>
|
|
</ul>
|
|
</li>
|
|
<li><a href="#" data-toggle="modal" data-target="#myModal">About</a></li>
|
|
</ul>
|
|
<ul class="nav navbar-nav navbar-right">
|
|
<li><a href="https://github.com/particle-clicker/particle-clicker/" target="_blank"><i class="fa fa-github"></i> GitHub</a></li>
|
|
<li class="dropdown">
|
|
<a href="#" class="dropdown-toggle" data-toggle="dropdown">Share <span class="caret"></span></a>
|
|
<ul class="dropdown-menu" role="menu">
|
|
<li><a href="https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fcern.ch%2Fparticle-clicker&t=Particle%20Clicker" target="_blank" title="Share on Facebook"><i class="fa fa-facebook"></i> Facebook</a></li>
|
|
<li><a href="https://twitter.com/share?url=http%3A%2F%2Fcern.ch%2Fparticle-clicker&t=Particle%20Clicker&text=Particle%20Clicker%3A%20An%20addictive%20incremental%20game%20that%20was%20made%20during%20the%20CERN%20Webfest%202014.%20%23particleclicker" target="_blank" title="Share on Twitter"><i class="fa fa-twitter"></i> Twitter</a></li>
|
|
<li><a href="https://plus.google.com/share?url=http%3A%2F%2Fcern.ch%2Fparticle-clicker" target="_blank" title="Share on Google+"><i class="fa fa-google-plus"></i> Google+</a></li>
|
|
</ul>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</nav>
|
|
|
|
|
|
<div class="container-fluid">
|
|
<div class="col-xs-3 scrollable" id="Research" ng-controller="ResearchController as rc">
|
|
<h3><i class="fa fa-cogs"></i> Research</h3>
|
|
<hr>
|
|
<ul class="media-list" ng-cloak>
|
|
<li class="media" ng-repeat="r in rc.research" ng-show="r.is_visible()">
|
|
<img ng-show="r.level > 0" class="pull-left" class="media-object" src="{{ r.image }}" alt="">
|
|
<img ng-hide="r.level > 0" class="pull-left" class="media-object" src="assets/icons/png/unknown.png" alt="">
|
|
<div class="media-body">
|
|
<h4 class="media-heading">{{ r.level > 0 ? r.name : '?????' }} <span ng-show="r.level > 0" class="badge">Level {{ r.level }}</span></h4>
|
|
<p ng-show="r.level > 0">{{ r.description }}</p>
|
|
<p ng-show="r.level > 0" class="small">Research yields <strong>{{ r.reputation | niceNumber }}</strong> reputation.</p>
|
|
<div class="btn-group">
|
|
<button class="btn btn-primary" ng-disabled="!r.is_available()" ng-click="rc.doResearch(r)">Research <small>({{ r.cost | niceNumber }} data)</small></button>
|
|
<button class="btn btn-info {{ r.interesting ? 'blink' : '' }}" ng-show="r.level > 0" ng-click="rc.showInfo(r)"><i class="fa fa-exclamation"></i></button>
|
|
</div>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="col-xs-5 scrollable" ng-controller="LabController as lc">
|
|
<input id="labname" value="{{ lc.lab.name }}" ng-model="lc.lab.name" ng-cloak>
|
|
<hr>
|
|
<button class="pull-right btn btn-info" ng-click="lc.showDetectorInfo()"><span class="glyphicon glyphicon-info-sign"></span></button>
|
|
<div id="detector" ng-controller="DetectorController as dc">
|
|
<canvas id="detector-core" width="400" height="400">
|
|
Your detector. Click on it to generate events.
|
|
</canvas>
|
|
<canvas ng-click="dc.click()" id="detector-events" width="400" height="400" class="prevent-select">
|
|
Your detector. Click on it to generate events.
|
|
</canvas>
|
|
</div>
|
|
<div class="row" id="Status" ng-cloak>
|
|
<div class="col-xs-4 text-center">
|
|
<strong>Data</strong>
|
|
<br>
|
|
{{ lc.lab.data | niceNumber }}
|
|
<div class="update-value" id="update-data"></div>
|
|
</div>
|
|
<div class="col-xs-4 text-center">
|
|
<strong>Reputation</strong>
|
|
<br>
|
|
{{ lc.lab.reputation | niceNumber }}
|
|
<div class="update-value" id="update-reputation"></div>
|
|
</div>
|
|
<div class="col-xs-4">
|
|
<span class="text-center"><strong>Funding</strong></span>
|
|
<br>
|
|
{{ lc.lab.money | currency }}
|
|
<div class="update-value" id="update-funding"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-xs-2 scrollable" id="HR" ng-controller="HRController as hrc">
|
|
<h3><i class="fa fa-users"></i> HR</h3>
|
|
<hr>
|
|
<ul class="media-list" ng-cloak>
|
|
<li class="media" ng-repeat="w in hrc.workers" ng-show="w.is_visible()">
|
|
<div class="media-body">
|
|
<h4 class="media-heading">{{ w.name }} <span ng-show="w.hired > 0" class="badge">{{ w.hired | niceNumber }}</span></h4>
|
|
<p ng-show="w.hired > 0">{{ w.description }}</p>
|
|
<p ng-show="w.hired > 0" class="small">Produce <strong>{{ w.rate | niceNumber }}</strong> data per second.</p>
|
|
<button class="btn btn-primary" ng-disabled="!w.is_available()" ng-click="hrc.hire(w)">Hire <small>({{ w.cost | currency }})</small></button>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="col-xs-2 scrollable" id="Upgrades" ng-controller="UpgradesController as uc">
|
|
<h3><i class="fa fa-wrench"></i> Upgrades</h3>
|
|
<hr>
|
|
<ul class="media-list" ng-cloak>
|
|
<li class="media" ng-repeat="u in uc.upgrades" ng-show="u.isVisible()">
|
|
<div class="media-body">
|
|
<h4 class="media-heading">{{ u.name }} <i class="fa {{ u.icon }}" class="media-object"></i></h4>
|
|
<p>{{ u.description }}</p>
|
|
<p class="small">{{ u.effect }}</p>
|
|
<button class="btn btn-primary" ng-disabled="!u.isAvailable()" ng-click="uc.upgrade(u)">Buy <small>({{ u.cost | currency }})</small></button>
|
|
</div>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="modal fade" id="infoBox" tabindex="-1" role="dialog" aria-labelledby="infoBoxLabel" aria-hidden="true">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
|
|
<h4 class="modal-title" id="infoBoxLabel"></h4>
|
|
</div>
|
|
<div class="modal-body"></div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="modal fade" id="achievements-modal" tabindex="-1" role="dialog" aria-labelledby="achievements-label" aria-hidden="true" ng-controller="AchievementsController as ac">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
|
|
<h4 class="modal-title" id="achievements-label">Achievements</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<p class="text-center"><strong>Progress</strong> <span class="label label-info">{{ ac.achievements.length }} / {{ ac.achievementsAll.length }}</span></p>
|
|
<ul class="list-group">
|
|
<li class="list-group-item" ng-repeat="a in ac.achievements | reverse">
|
|
<span class="glyphicon {{ a.icon }}"></span>
|
|
{{ a.description }}
|
|
<span class="badge">{{ a.time }}</span>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div id="achievements-container" class="col-xs-3"></div>
|
|
<div id="messages-container" class="col-xs-3"></div>
|
|
|
|
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
|
|
<div class="modal-dialog">
|
|
<div class="modal-content">
|
|
<div class="modal-header">
|
|
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
|
|
<h4 class="modal-title" id="myModalLabel">Particle Clicker</h4>
|
|
</div>
|
|
<div class="modal-body">
|
|
<h4>About</h4>
|
|
<p class="small">Version: 0.3.1 (mobile-beta)</p>
|
|
<p class="small bg-warning">This is a pre-release. If you encounter any bugs please report them using <a href="https://github.com/particle-clicker/particle-clicker/issues"><i class="fa fa-github"></i> GitHub issues</a>. This game runs best in landscape mode. Performance of the event display may rely heavily on your hardware.</p>
|
|
<p>Particle Clicker is a game that was made during the <a href="https://webfest.web.cern.ch">CERN Webfest 2014</a>. The idea is borrowed from <a href="http://orteil.dashnet.org/cookieclicker/">Cookie Clicker</a>, an amazing and addictive cookie-themed game.</p>
|
|
<img width="200" src="http://www.citizencyberscience.net/wiki/images/1/1b/Cernwebfest.png" alt="">
|
|
<h5>Libraries</h5>
|
|
<p>This game is realised using a few libraries. Those are</p>
|
|
<ul>
|
|
<li><a href="http://angularjs.org">AngularJS</a></li>
|
|
<li><a href="http://getbootstrap.com/">Bootstrap</a></li>
|
|
<li><a href="http://fortawesome.github.io/">Fontawesome</a></li>
|
|
<li><a href="http://jquery.com">jQuery</a></li>
|
|
<li><a href="http://imulus.github.io/retinajs/">retina.js</a></li>
|
|
<li><a href="https://github.com/ftlabs/fastclick">fastclick.js</a></li>
|
|
</ul>
|
|
<h5>Authors</h5>
|
|
<p>Feel free to get in touch with us via GitHub or by shooting us an email. Our addresses all follow the pattern name.surname@cern.ch.</p>
|
|
<ul>
|
|
<li><a href="https://github.com/gbiro">Gabor Biro</a></li>
|
|
<li><a href="https://github.com/ibab">Igor Babuschkin</a></li>
|
|
<li><a href="https://github.com/kdungs">Kevin Dungs</a></li>
|
|
<li><a href="https://github.com/ntadej">Tadej Novak</a></li>
|
|
<li><a href="https://github.com/zhangjiannan">Jiannan Zhang</a></li>
|
|
</ul>
|
|
<h5>Source</h5>
|
|
<p>The source code of this game is freely available on <a href="https://github.com/particle-clicker/particle-clicker"><i class="fa fa-github"></i> GitHub</a> under the terms of an MIT license.</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<script src="//ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
|
|
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.17/angular.min.js"></script>
|
|
<script src="//maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
|
|
<script src="js/external/jquery.cookie-1.4.1.min.js"></script>
|
|
<script src="js/external/retina.js"></script>
|
|
<script src="js/external/fastclick.js"></script>
|
|
|
|
<script src="js/storage.js"></script>
|
|
<script src="js/helpers.js"></script>
|
|
<script src="js/analytics.js"></script>
|
|
<script src="js/gameobjects.js"></script>
|
|
<script src="js/event.js"></script>
|
|
<script src="js/detector.js"></script>
|
|
<script src="js/achievements.js"></script>
|
|
<script src="js/ui.js"></script>
|
|
<script src="js/game.js"></script>
|
|
<script src="js/warnmobile.js"></script>
|
|
</body>
|
|
</html>
|