Skip to content

Instantly share code, notes, and snippets.

@MrHen
Last active November 22, 2015 20:57
Show Gist options
  • Save MrHen/be17fca54e086ab27fec to your computer and use it in GitHub Desktop.
Save MrHen/be17fca54e086ab27fec to your computer and use it in GitHub Desktop.
Incremental seed (angular)
<!DOCTYPE html>
<head>
<meta charset="utf-8">
</head>
<body>
<div ng-app>
<div ng-controller="IncrementalCtrl">
<h1>Widgets: <span id="widget-count">{{numWidgets | number: 0}}</span> </h1>
<button id="produce-widget" ng-click="produceWidget()">Produce Widget</button>
<h2>Store:</h2>
<button ng-repeat="widgeteer in widgeteers" ng-click="hireWidgeteer(widgeteer)" ng-disabled="widgeteer.cost > numWidgets">{{widgeteer.label}} - {{widgeteer.cost}}</button>
</div>
</div>
<script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/angular.js/1.2.1/angular.js"></script>
<script type="text/javascript" src="//code.jquery.com/jquery-2.1.0.js"></script>
<script type="text/javascript" src="index.js"></script>
</body>
</html>
function IncrementalCtrl($scope, $interval) {
$scope.numWidgets = 0;
$scope.costScaling = 1.1;
$scope.widgeteers = [
{
"name": "novice-widgeteer",
"label": "Hire Novice Widgeteer",
"cost": 10,
"value": 1,
"owned": 0,
},
{
"name": "master-widgeteer",
"label": "Hire Master Widgeteer",
"cost": 25,
"value": 5,
"owned": 0,
},
{
"name": "wisened-widgeteer",
"label": "Hire Wisened Widgeteer",
"cost": 100,
"value": 10,
"owned": 0,
},
];
// Increase numWidgets every time produce-widget is clicked
$scope.produceWidget = function() {
$scope.numWidgets++;
}
// Same for novice-widgeteer
$scope.hireWidgeteer = function(widgeteer) {
widgeteer.owned++;
$scope.numWidgets -= widgeteer.cost;
widgeteer.cost = Math.ceil(widgeteer.cost * 1.1);
}
// Run UI update code every 10ms
$interval(function() {
for (var i = 0; i < $scope.widgeteers.length; i++) {
$scope.numWidgets += ($scope.widgeteers[i].owned * $scope.widgeteers[i].value / 100);
}
}, 10);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment