Commit 83adc22c authored by 神楽坂玲奈's avatar 神楽坂玲奈

0.0.1 released

parent c4d05080
......@@ -147,7 +147,7 @@
* XMPP聊天室 conference.my-card.in
* 以下全都为临时,开发用
* 用户认证 https://my-card.in/users/me.json?name=用户名&password=密码
* 反重力场 ws://122.0.65.69:10800/
* 反重力场 ws://115.29.191.63:10800/
* 应用列表 (本地app目录) apps.json
* 应用元文件 (本地app目录) meta
......
......@@ -71,6 +71,9 @@ iframe,
.navbar > .container {
padding-right: 85px;
}
.nav-sidebar > .active > a:hover {
background-color: #4169e1;
}
.main_wrapper {
float: left;
width: 100%;
......@@ -96,6 +99,13 @@ iframe,
width: 72px;
margin-right: 12px;
}
.achievement {
margin-right: 4px;
margin-bottom: 8px;
}
.achievement.locked {
-webkit-filter: grayscale(100%);
}
#candy {
height: 207px;
width: 100%;
......@@ -159,3 +169,6 @@ iframe,
#roster_title .btn {
border-right: none;
}
.modal {
overflow-y: auto;
}
......@@ -50,6 +50,12 @@ a, button, input, span, p, li, td, th, h1, h2, h3, h4, h5, h6, iframe, .bootstra
.navbar > .container
padding-right: 85px;
//应用列表
.nav-sidebar > .active > a:hover {
background-color: royalblue;
}
//游戏内容区域
.main_wrapper
//background linear-gradient(to right, rgba(255,255,255,0.9), rgba(255,255,255,0.2), rgba(255,255,255,0.2), rgba(255,255,255,0.2), rgba(255,255,255,0.9)), url(../apps/th135/readme/images/th13.5_XQL_OP.jpg)
......@@ -76,6 +82,12 @@ a, button, input, span, p, li, td, th, h1, h2, h3, h4, h5, h6, iframe, .bootstra
width: 72px;
margin-right 12px
.achievement
margin-right:4px;
margin-bottom:8px;
.achievement.locked
-webkit-filter:grayscale(100%)
//聊天室
#candy {
height: 207px;
......@@ -159,4 +171,8 @@ a, button, input, span, p, li, td, th, h1, h2, h3, h4, h5, h6, iframe, .bootstra
#roster_title .btn {
border-right: none;
}
\ No newline at end of file
}
//modal
.modal
overflow-y: auto;
\ No newline at end of file
......@@ -61,7 +61,7 @@
<div id="wrapper">
<div class="col-sm-3 col-md-2 sidebar" ng-controller="AppsListController">
<ul class="nav nav-sidebar">
<li ng-repeat="app in apps">
<li ng-repeat="app in apps" ng-class="active(app.id)">
<a href="#/apps/{{app.id}}">{{app.name}}</a>
</li>
</ul>
......@@ -94,8 +94,6 @@
</div>
</div>
<!-- Bootstrap core JavaScript
================================================== -->
<!-- Placed at the end of the document so the pages load faster -->
......
......@@ -7,23 +7,39 @@ mkdirp = require 'mkdirp'
rmdir = require 'rmdir'
gui = require 'nw.gui'
Datastore = require 'nw_nedb'
db =
apps: new Datastore({ filename: path.join(gui.App.dataPath, 'apps.db'), autoload: true })
local: new Datastore({ filename: path.join(gui.App.dataPath, 'local.db'), autoload: true })
profile: new Datastore({ filename: path.join(gui.App.dataPath, 'profile.db'), autoload: true })
angular.module('maotama.controllers', [])
.controller 'AppsListController', ($scope, $http)->
.controller 'AppsListController', ['$scope', '$routeParams', '$http', '$location', ($scope, $routeParams, $http, $location)->
$scope.orderProp = 'id';
$http.get('apps.json').success (data)->
console.log data
db.apps.remove {}, { multi: true }, (err, numRemoved)->
throw err if err
db.apps.insert data, (err, newDocs)->
throw err if err
$scope.apps = data
$scope.$digest()
if !$routeParams.app_id
$location.path("/apps/#{data[0].id}");
$scope.$apply()
else
$scope.$digest()
$scope.active = (app_id)->
"active" if $routeParams.app_id == app_id
$scope.category_active = (category)->
if $scope.apps
app = null
for a in $scope.apps
if a.id == $routeParams.app_id
app = a
if app
if app.category == category
"active"
]
.controller 'AppsShowController', ['$scope', '$routeParams', ($scope, $routeParams)->
db.apps.findOne {id: $routeParams.app_id}, (err, doc)->
throw err if err
......@@ -35,7 +51,17 @@ angular.module('maotama.controllers', [])
db.local.findOne {id: $routeParams.app_id}, (err, doc)->
$scope.local = doc ? {}
$scope.$digest();
db.profile.findOne {id: $routeParams.app_id}, (err, doc)->
if doc #and doc.achievements.length == $scope.app.achievements.length
$scope.profile = doc
$scope.$digest();
else
$scope.profile =
id: $routeParams.app_id
achievements: ([] for achievement in $scope.app.achievements) if $scope.app.achievements
db.profile.insert $scope.profile, (err, newDoc)->
throw err if err
$scope.$digest();
$scope.add = (installation)->
$scope.local.installation = path.dirname installation
......@@ -51,7 +77,6 @@ angular.module('maotama.controllers', [])
throw err if err
$scope.$digest();
$scope.install = ()->
$scope.runtime.installing[$scope.app.id] =
process: 0
label: '正在连接'
......@@ -143,11 +168,45 @@ angular.module('maotama.controllers', [])
when 'ACHIEVEMENT'
achievement = $scope.app.achievements[$(command).attr('type')]
achievement_item = achievement.items[$(command).attr('id')]
$scope.profile.achievements[$(command).attr('type')] ?= {}
return if $scope.profile.achievements[$(command).attr('type')][$(command).attr('id')]
window.LOCAL_NW.desktopNotifications.notify achievement_item.icon, "获得#{achievement.name}: #{achievement_item.name}", achievement_item.description
$scope.profile.achievements[$(command).attr('type')][$(command).attr('id')] =
created_at: new Date()
updated_at: new Date()
count: 1
db.profile.update {
id: $scope.app.id
}, $scope.profile, (err, numReplaced, newDoc)->
throw err if err
$scope.$digest();
else
window.LOCAL_NW.desktopNotifications.notify $scope.app.icon, "unknown command", matches[1]
game.on 'close', (code)->
$scope.runtime.running = false
$scope.$digest();
$scope.achievement_unlocked_count = (category)->
$scope.profile.achievements[category].length
$scope.achievement_total_count = (category)->
$scope.app.achievements[category].items.length
$scope.achievement_last_unlocked = (category)->
last = null
last_index = null
for index, achievement of $scope.profile.achievements[category]
if !last or result.created_at < last.created_at
last = achievement
last_index = index
$scope.app.achievements[category].items[index]
$scope.achievement_locked = (category, index)->
if $scope.profile.achievements[category][index]
''
else
'locked'
]
......@@ -26,29 +26,62 @@
local: new Datastore({
filename: path.join(gui.App.dataPath, 'local.db'),
autoload: true
}),
profile: new Datastore({
filename: path.join(gui.App.dataPath, 'profile.db'),
autoload: true
})
};
angular.module('maotama.controllers', []).controller('AppsListController', function($scope, $http) {
$scope.orderProp = 'id';
return $http.get('apps.json').success(function(data) {
console.log(data);
return db.apps.remove({}, {
multi: true
}, function(err, numRemoved) {
if (err) {
throw err;
}
return db.apps.insert(data, function(err, newDocs) {
angular.module('maotama.controllers', []).controller('AppsListController', [
'$scope', '$routeParams', '$http', '$location', function($scope, $routeParams, $http, $location) {
$scope.orderProp = 'id';
$http.get('apps.json').success(function(data) {
return db.apps.remove({}, {
multi: true
}, function(err, numRemoved) {
if (err) {
throw err;
}
$scope.apps = data;
return $scope.$digest();
return db.apps.insert(data, function(err, newDocs) {
if (err) {
throw err;
}
$scope.apps = data;
if (!$routeParams.app_id) {
$location.path("/apps/" + data[0].id);
return $scope.$apply();
} else {
return $scope.$digest();
}
});
});
});
});
}).controller('AppsShowController', [
$scope.active = function(app_id) {
if ($routeParams.app_id === app_id) {
return "active";
}
};
return $scope.category_active = function(category) {
var a, app, _i, _len, _ref;
if ($scope.apps) {
app = null;
_ref = $scope.apps;
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
a = _ref[_i];
if (a.id === $routeParams.app_id) {
app = a;
}
}
if (app) {
if (app.category === category) {
return "active";
}
}
}
};
}
]).controller('AppsShowController', [
'$scope', '$routeParams', function($scope, $routeParams) {
db.apps.findOne({
id: $routeParams.app_id
......@@ -66,7 +99,35 @@
id: $routeParams.app_id
}, function(err, doc) {
$scope.local = doc != null ? doc : {};
return $scope.$digest();
return db.profile.findOne({
id: $routeParams.app_id
}, function(err, doc) {
var achievement;
if (doc) {
$scope.profile = doc;
return $scope.$digest();
} else {
$scope.profile = {
id: $routeParams.app_id,
achievements: $scope.app.achievements ? (function() {
var _i, _len, _ref, _results;
_ref = $scope.app.achievements;
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
achievement = _ref[_i];
_results.push([]);
}
return _results;
})() : void 0
};
return db.profile.insert($scope.profile, function(err, newDoc) {
if (err) {
throw err;
}
return $scope.$digest();
});
}
});
});
});
$scope.add = function(installation) {
......@@ -186,7 +247,7 @@
});
});
};
return $scope.run = function() {
$scope.run = function() {
var game;
$scope.runtime.running = true;
game = child_process.spawn($scope.app.main, [], {
......@@ -194,24 +255,41 @@
});
game.stdout.setEncoding('utf8');
game.stdout.on('data', function(data) {
var achievement, achievement_item, command, matches, _i, _len, _ref, _results;
var achievement, achievement_item, command, matches, _base, _i, _len, _name, _ref;
console.log(data);
if (matches = data.match(/<maotama>(.+)<\/maotama>/)) {
_ref = $(matches[1]);
_results = [];
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
command = _ref[_i];
switch (command.tagName) {
case 'ACHIEVEMENT':
achievement = $scope.app.achievements[$(command).attr('type')];
achievement_item = achievement.items[$(command).attr('id')];
_results.push(window.LOCAL_NW.desktopNotifications.notify(achievement_item.icon, "获得" + achievement.name + ": " + achievement_item.name, achievement_item.description));
if ((_base = $scope.profile.achievements)[_name = $(command).attr('type')] == null) {
_base[_name] = {};
}
if ($scope.profile.achievements[$(command).attr('type')][$(command).attr('id')]) {
return;
}
window.LOCAL_NW.desktopNotifications.notify(achievement_item.icon, "获得" + achievement.name + ": " + achievement_item.name, achievement_item.description);
$scope.profile.achievements[$(command).attr('type')][$(command).attr('id')] = {
created_at: new Date(),
updated_at: new Date(),
count: 1
};
db.profile.update({
id: $scope.app.id
}, $scope.profile, function(err, numReplaced, newDoc) {
if (err) {
throw err;
}
return $scope.$digest();
});
break;
default:
_results.push(window.LOCAL_NW.desktopNotifications.notify($scope.app.icon, "unknown command", matches[1]));
window.LOCAL_NW.desktopNotifications.notify($scope.app.icon, "unknown command", matches[1]);
}
}
return _results;
}
});
return game.on('close', function(code) {
......@@ -219,6 +297,33 @@
return $scope.$digest();
});
};
$scope.achievement_unlocked_count = function(category) {
return $scope.profile.achievements[category].length;
};
$scope.achievement_total_count = function(category) {
return $scope.app.achievements[category].items.length;
};
$scope.achievement_last_unlocked = function(category) {
var achievement, index, last, last_index, _ref;
last = null;
last_index = null;
_ref = $scope.profile.achievements[category];
for (index in _ref) {
achievement = _ref[index];
if (!last || result.created_at < last.created_at) {
last = achievement;
last_index = index;
}
}
return $scope.app.achievements[category].items[index];
};
return $scope.achievement_locked = function(category, index) {
if ($scope.profile.achievements[category][index]) {
return '';
} else {
return 'locked';
}
};
}
]);
......
This diff is collapsed.
......@@ -41,7 +41,7 @@ listen = (port, address='127.0.0.1', callback)->
else
throw 'unknown message'
console.log "正在连接服务器"
client.connect "ws://122.0.65.69:10800/", "shinkirou"
client.connect "ws://115.29.191.63:10800/", "shinkirou"
exports.listen = (port, address='127.0.0.1', callback)->
......@@ -54,6 +54,7 @@ exports.listen = (port, address='127.0.0.1', callback)->
protocol: raw.Protocol.UDP
#success
puncher = require './puncher'
listen(port, address, callback)
catch e
#failed, need elevate
#FUCK UAC.
......
......@@ -57,7 +57,7 @@
});
});
console.log("正在连接服务器");
return client.connect("ws://122.0.65.69:10800/", "shinkirou");
return client.connect("ws://115.29.191.63:10800/", "shinkirou");
};
exports.listen = function(port, address, callback) {
......@@ -72,7 +72,8 @@
socket = raw.createSocket({
protocol: raw.Protocol.UDP
});
return puncher = require('./puncher');
puncher = require('./puncher');
return listen(port, address, callback);
} catch (_error) {
e = _error;
WebSocketServer = require('nw_websocket').server;
......
......@@ -6,5 +6,5 @@
"tunnel.coffee"
],
"names": [],
"mappings": "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"
"mappings": "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"
}
\ No newline at end of file
......@@ -90,7 +90,7 @@
</div>
<input id="app_add_file" class="hide" type="file" accept="application/octet-stream"/>
<div class="progress progress-striped active" ng-repeat="item in runtime.installing">
<div class="progress-bar" role="progressbar" aria-valuenow="{{item.progress}}" aria-valuemin="0" aria-valuemax="100" style="width:{{item.progress}}%">
<div class="progress-bar" role="progressbar" aria-valuenow="{{item.progress}}" aria-valuemin="0" aria-valuemax="100" style="width:{{item.progress}}%">
{{item.label}}
</div>
</div>
......@@ -107,22 +107,28 @@
<img class="friend img-thumbnail" src="https://lh5.googleusercontent.com/-crYEtoQ-4Ho/AAAAAAAAAAI/AAAAAAAAAZE/OVA-78yQjU8/s46-c-k-no/photo.jpg">
<img class="friend img-thumbnail" src="https://lh5.googleusercontent.com/-crYEtoQ-4Ho/AAAAAAAAAAI/AAAAAAAAAZE/OVA-78yQjU8/s46-c-k-no/photo.jpg">
<h2 class="sub-header">收集</h2>
<h2 class="sub-header" ng-repeat-start="achievement in app.achievements">{{achievement.name}}</h2>
<div class="clearfix">
<img class="achievement_image img-thumbnail pull-left" src="https://lh5.googleusercontent.com/-crYEtoQ-4Ho/AAAAAAAAAAI/AAAAAAAAAZE/OVA-78yQjU8/s46-c-k-no/photo.jpg">
<div class="clearfix" ng-if="achievement_unlocked_count($index) > 0">
<img class="achievement_image img-thumbnail pull-left" ng-src="{{achievement_last_unlocked($index).icon}}">
<div class="pull-left achievement_text">
<p>最近获得的新符卡 <br> HJ的BUG</p>
<span class="help-block">你已获得 120 / 200 的符卡 (60%)</span>
<p>最近获得的新{{achievement.name}} <br>{{achievement_last_unlocked($index).name}}</p>
<span class="help-block">你已获得 {{achievement_unlocked_count($index)}} / {{achievement_total_count($index)}} 的{{achievement.name}} ({{100*achievement_unlocked_count($index)/achievement_total_count($index)}}%)</span>
</div>
</div>
<div class="progress">
<div class="progress-bar" role="progressbar" aria-valuenow="60" aria-valuemin="0" aria-valuemax="100" style="width: 60%;">
<div class="progress" ng-if="achievement_unlocked_count($index) > 0">
<div class="progress-bar" role="progressbar" aria-valuenow="{{achievement_unlocked_count($index)}}" aria-valuemin="0" aria-valuemax="{{achievement_total_count($index)}}" style="width: {{100*achievement_unlocked_count($index)/achievement_total_count($index)}}%;">
<span class="sr-only">60% Complete</span>
</div>
</div>
<div ng-repeat-end>
<a href="#" data-toggle="tooltip" data-container="body" title="Some tooltip text!" ng-repeat="item in achievement.items">
<img class="achievement img-thumbnail" ng-class="achievement_locked($parent.$index, $index)" src="{{item.icon}}">
</a>
</div>
<div ng-show="local.installation">
<h2 class="sub-header">设置</h2>
<button id="app_uninstall" type="button" class="btn btn-default" data-toggle="modal" data-target="#app_uninstall_modal" ng-disable="runtime.running || runtime.uninstalling">
......
现在还在早期开发阶段,里面绝大部分功能都是不能用的,仅仅能拿来联FXTZ/楼了就发出来了
不要看什么功能都乱点,只进行下面的操作:
从左边游戏列表里 选择 东方非想天则 或 东方心绮楼
点【添加】按钮,选择则/楼的主程序
点【开始】按钮 (或者从其他地方手动开启则/楼也可以,不一定非得从平台打开),在10800端口建立主机
点【反重力场】按钮,之后会得到一个IP地址和端口,把那个发送给你的对手 (★对手不需要有平台)
通过反重力场建立的游戏无视电信/联通,不用特意找同一个网络运营商的连
加速原理跟放学对战平台一样,服务器也都是用的阿里云杭州,所以用那个效果不好的这个同样也会不好。
(而且这个聊天功能也不还能用简直弱爆了啊哈哈哈)
★ 另外,现在这个版本只是早期技术测试,可能随时会停止服务
★ 发现任何问题或建议请联系 zh99998@gmail.com
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment