mkjs/code/engine/scenes/singleScene.js

86 lines
2.3 KiB
JavaScript
Raw Normal View History

//
// singleScene.js
//--------------------
// Drives the course scene when not connected to a server. Simulates responses expected from a server.
// by RHY3756547
//
window.singleScene = function(course, wsInstance, res) {
var res = res; //gameRes
var t = this;
t.mode = -1;
t.activeScene = null;
t.myKart = null;
var mchar = Math.floor(Math.random()*12);
var mkart = Math.floor(Math.random()*0x24);
this.update = function() {
if (t.activeScene != null) {
t.activeScene.update();
//simulate what a server would do
updateServer();
}
}
var advanceTimes = [3,4,-1,-1]
function updateServer() {
var m = t.mode;
m.frameDiv++;
if (m.frameDiv == 60) {
m.frameDiv -= 60;
m.time++;
var timeAd = advanceTimes[m.id];
if (timeAd != -1 && m.time >= timeAd) {
m.id++;
m.time = 0;
}
}
t.activeScene.updateMode(JSON.parse(JSON.stringify(t.mode)));
}
this.render = function() {
if (t.activeScene != null) sceneDrawer.drawTest(gl, t.activeScene, 0, 0, gl.viewportWidth, gl.viewportHeight)
}
begin(course);
function begin(course) {
var mainNarc, texNarc
if (course.substr(0, 5) == "mkds/") {
var cnum = Number(course.substr(5));
var music = MKDSCONST.COURSE_MUSIC[cnum];
var cDir = MKDSCONST.COURSEDIR+MKDSCONST.COURSES[cnum];
var mainNarc = new narc(lz77.decompress(gameROM.getFile(cDir+".carc")));
var texNarc = new narc(lz77.decompress(gameROM.getFile(cDir+"Tex.carc")));
setUpCourse(mainNarc, texNarc, music)
} else throw "custom tracks are not implemented yet!"
}
function setUpCourse(mainNarc, texNarc, music) {
var chars = [];
chars.push({charN:mchar, kartN:mkart, controller:((window.prompt("press y for cpu controlled") == "y")?controlRaceCPU:controlDefault), raceCam:true, extraParams:[{k:"name", v:"single"}, {k:"active", v:true}]});
for (var i=0; i<7; i++) {
var tchar = Math.floor(Math.random()*12);
var tkart = Math.floor(Math.random()*0x24);
chars.push({charN:tchar, kartN:tkart, controller:controlRaceCPU, raceCam:false, extraParams:[{k:"name", v:"no"}, {k:"active", v:true}]});
}
t.activeScene = new courseScene(mainNarc, texNarc, music, chars, {}, res);
t.myKart = t.activeScene.karts[0];
t.mode = {
id:0,
time:0,
frameDiv:0,
}
t.activeScene.updateMode(t.mode);
}
}