topical media & game development
mobile-graphic-enchant-dev-plugins-wiiu.enchant.js / js
@fileOverview
wiiu.enchant.js
version: 0.1.0
@require enchant.js v0.6.0+
author: Ubiquitous Entertainment Inc.
@description
Library for making game for Nintendo wii U
("Wii U" is registered trademark of Nintendo,Inc.)
plugin namespace object
@namespace
@type {Object}
enchant.wiiu = {};
enchant.Event.L_STICK_MOVE = 'lstickmove';
enchant.Event.R_STICK_MOVE = 'rstickmove';
enchant.Event.DEVICE_MOTION = 'devicemotion';
enchant.Event.DEVICE_ORIENTATION = 'deviceorientation';
enchant.wiiu.Core = enchant.Class.create(enchant.Core, {
initialize: function() {
alert("width: " + window.innerWidth + " height: " + window.innerHeight);
enchant.Core.apply(this, arguments);
var label = new Label("");
this.rootScene.addChild(label);
var debug = function(str) {
label.text += str + '<br />';
};
disable default keybind
this._keybind = {};
var touched = false;
var prevData = {};
var pushed = {};
var keyEventTable = {
'a': 0x8000,
'b': 0x4000,
'x': 0x2000,
'y': 0x1000,
'l': 0x0020,
'r': 0x0010,
'zl': 0x0080,
'zr': 0x0040,
'up': 0x0200,
'down': 0x0100,
'right': 0x0800,
'left': 0x0400
};
var core = this;
core.input.rstick = {x: 0, y: 0};
core.input.lstick = {x: 0, y: 0};
debug('wiiu?' + (window.wiiu ? "on" : "off"));
for(var i in window.wiiu){
}
if (window.wiiu) {
core.addEventListener("enterframe", function() {
watch data from wiiU controller
var data = window.wiiu.gamepad.update();
if (!data.isEnabled) {
console.log('Wii U Gamepad is not connected');
}
var evt, target;
core.input = {};
if (data.lStickX !== prevData.lStickX || data.lStickY !== prevData.lStickY) {
evt = new enchant.Event(enchant.Event.L_STICK_MOVE);
evt.x = data.lStickX;
evt.y = -data.lStickY;
core.dispatchEvent(evt);
}
core.input['lstick'] = {x: data.lStickX, y: -data.lStickY};
if (data.rStickX !== prevData.rStickX || data.rStickY !== prevData.rStickY) {
evt = new enchant.Event(enchant.Event.R_STICK_MOVE);
evt.x = data.rStickX;
evt.y = -data.rStickY;
core.dispatchEvent(evt);
}
core.input['rstick'] = {x: data.rStickX, y: -data.rStickY};
evt = new enchant.Event(enchant.Event.DEVICE_MOTION);
core.input['acc'] = {
x: evt.x = data.accX,
y: evt.y = data.accY,
z: evt.z = data.accZ
};
core.rootScene.dispatchEvent(evt);
evt = new enchant.Event(enchant.Event.DEVICE_ORIENTATION);
core.input['angle'] = {
x: evt.x = data.angleX,
y: evt.y = data.angleY,
z: evt.z = data.angleZ
};
core.rootScene.dispatchEvent(evt);
for(var type in keyEventTable){
if(keyEventTable.hasOwnProperty(type)){
var bitmask = keyEventTable[type];
var hold = data.hold & bitmask;
if(hold && !core.input[type]){
// Button data: On, Flag: Off -> buttondown
core.input[type] = true;
evt = new enchant.Event(type + 'buttondown');
this.dispatchEvent(evt);
debug(type + 'buttondown');
}else if(!hold && core.input[type]){
// Button data: On, Flag: Off -> buttonup
delete core.input[type];
evt = new enchant.Event(type + 'buttonup');
this.dispatchEvent(evt);
debug(type + 'buttondown');
}
}
}
prevData = data;
});
} else {
console.log('This browser is not wiiU browser.');
}
}
});
(C) Æliens
04/09/2009
You may not copy or print any of this material without explicit permission of the author or the publisher.
In case of other copyright issues, contact the author.