New OversimplifiedJS version to fix adding objects to room and a new way to add audio.
This commit is contained in:
parent
1b025e4fb8
commit
d62da3341f
|
@ -560,25 +560,27 @@ Oversimplified.Room.prototype.Draw = function () {
|
|||
}
|
||||
|
||||
// Add a GameObject or PremadeObject to the room.
|
||||
Oversimplified.Room.prototype.AddObject = function (newObjectName, newObjectOptions) {
|
||||
newObjectOptions = (typeof newObjectOptions !== 'undefined') ? newObjectOptions : {};
|
||||
Oversimplified.Room.prototype.AddObject = function (objectOrNewName, objectOptions) {
|
||||
objectOptions = (typeof objectOptions !== 'undefined') ? objectOptions : {};
|
||||
var self = this;
|
||||
|
||||
if (newObjectName.type == "GameObject") { //Create from prefabricated object
|
||||
var newID = Oversimplified.nextID++;
|
||||
var newName = newObjectName.name + newID.toString();
|
||||
self.objects[newName] = Oversimplified.CopyObject(newObjectName, newID, newName, newObjectOptions);
|
||||
if (objectOrNewName.type == "GameObject") { //Create from prefabricated object
|
||||
// Overwrite manual id or name, if entered.
|
||||
objectOptions.id = Oversimplified.nextID++;
|
||||
objectOptions.name = objectOrNewName.name + objectOptions.id.toString();
|
||||
// console.log(objectOptions.name);
|
||||
self.objects[objectOptions.name] = Oversimplified.CopyObject(objectOrNewName, objectOptions);
|
||||
|
||||
return self.objects[newName];
|
||||
return self.objects[objectOptions.name];
|
||||
}
|
||||
else {
|
||||
if (self.objects[newObjectName]) {
|
||||
if (Oversimplified.DEBUG.showMessages) console.log("Object with name \"" + newObjectName + "\" already exists in current room!");
|
||||
if (self.objects[objectOrNewName]) {
|
||||
if (Oversimplified.DEBUG.showMessages) console.log("Object with name \"" + objectOrNewName + "\" already exists in current room!");
|
||||
return false;
|
||||
}
|
||||
self.objects[newObjectName] = new Oversimplified.GameObject(newObjectName, newObjectOptions);
|
||||
self.objects[objectOrNewName] = new Oversimplified.GameObject(objectOrNewName, objectOptions);
|
||||
|
||||
return self.objects[newObjectName];
|
||||
return self.objects[objectOrNewName];
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -634,8 +636,8 @@ Oversimplified.GameObject = function (name, options) {// x, y, imageSrc, maskIma
|
|||
this.persistent = typeof options.persistent !== 'undefined' ? options.persistent : false;
|
||||
this.x = typeof options.x !== 'undefined' ? options.x : -1;
|
||||
this.y = typeof options.y !== 'undefined' ? options.y : -1;
|
||||
this.xPrevious = this.x;
|
||||
this.yPrevious = this.y;
|
||||
this.xPrevious = this.x;
|
||||
this.yPrevious = this.y;
|
||||
this.screenX = this.x - Oversimplified.camera.x;
|
||||
this.screenY = this.y - Oversimplified.camera.y;
|
||||
|
||||
|
@ -794,8 +796,8 @@ Oversimplified.GameObject.prototype.Start = function () {
|
|||
Oversimplified.GameObject.prototype.Update = function () {
|
||||
this.screenX = this.x - Oversimplified.camera.x;
|
||||
this.screenY = this.y - Oversimplified.camera.y;
|
||||
this.xPrevious = this.x;
|
||||
this.yPrevious = this.y;
|
||||
this.xPrevious = this.x;
|
||||
this.yPrevious = this.y;
|
||||
|
||||
if (!this.doFirstHasRun) {
|
||||
this.DoFirst();
|
||||
|
@ -896,20 +898,20 @@ Oversimplified.GameObject.prototype.IsOverlapping = function (doSimple) {
|
|||
//
|
||||
// Accepts true, false, or no value.
|
||||
Oversimplified.GameObject.prototype.IfOverlappingThenMove = function (doSimple) {
|
||||
var overlappingObject = this.IsOverlapping(doSimple);
|
||||
|
||||
if (overlappingObject != false) {
|
||||
if (this.x < overlappingObject.x)
|
||||
var overlappingObject = this.IsOverlapping(doSimple);
|
||||
|
||||
if (overlappingObject != false) {
|
||||
if (this.x < overlappingObject.x)
|
||||
this.x--;
|
||||
if (this.x >= overlappingObject.x)
|
||||
if (this.x >= overlappingObject.x)
|
||||
this.x++;
|
||||
if (this.y < overlappingObject.y)
|
||||
if (this.y < overlappingObject.y)
|
||||
this.y--;
|
||||
if (this.y >= overlappingObject.y)
|
||||
if (this.y >= overlappingObject.y)
|
||||
this.y++;
|
||||
|
||||
return true;
|
||||
} else {
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -917,7 +919,7 @@ Oversimplified.GameObject.prototype.IfOverlappingThenMove = function (doSimple)
|
|||
// Prevents the object from moving outside of the room's boundaries.
|
||||
Oversimplified.GameObject.prototype.KeepInsideRoom = function () {
|
||||
var currentRoom = Oversimplified.Rooms[Oversimplified.Rooms.currentRoom]
|
||||
if (this.x < this.xBound || this.x > currentRoom.width - this.xBound)
|
||||
if (this.x < this.xBound || this.x > currentRoom.width - this.xBound)
|
||||
{
|
||||
this.x = this.xPrevious;
|
||||
}
|
||||
|
@ -1070,7 +1072,7 @@ Oversimplified.GUIs.Add = function (guiName, guiOptions) {
|
|||
Oversimplified.GUIs[guiName] = new Oversimplified.Animation(guiName, guiOptions);
|
||||
return Oversimplified.GUIs[guiName];
|
||||
} else {
|
||||
if (Oversimplified.DEBUG.showMessages) console.log("An GUI with the name \"" + guiName + "\" already exists!");
|
||||
if (Oversimplified.DEBUG.showMessages) console.log("A GUI with the name \"" + guiName + "\" already exists!");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -1116,10 +1118,39 @@ Oversimplified.GUI.prototype.AddElement = function (options) {
|
|||
/* Effects namespace
|
||||
*/
|
||||
Oversimplified.Effects = {
|
||||
Sounds: [],
|
||||
Tunes: [],
|
||||
Sounds: {},
|
||||
Tunes: {}
|
||||
}
|
||||
|
||||
// Aliases for Sounds and Tunes
|
||||
Oversimplified.Effects.S = Oversimplified.Effects.Sounds;
|
||||
Oversimplified.Effects.T = Oversimplified.Effects.Music = Oversimplified.Effects.M = Oversimplified.Effects.Tunes;
|
||||
|
||||
// Alias for Effects
|
||||
Oversimplified.E = Oversimplified.Effects;
|
||||
|
||||
Oversimplified.Effects.AddSound = function (soundName, soundSources) {
|
||||
if (typeof Oversimplified.Effects.Sounds[soundName] === 'undefined') {
|
||||
Oversimplified.Effects.Sounds[soundName] = new Oversimplified.Sound(soundName, soundSources);
|
||||
return Oversimplified.Effects.Sounds[soundName];
|
||||
} else {
|
||||
if (Oversimplified.DEBUG.showMessages) console.log("A Sound with the name \"" + soundName + "\" already exists!");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Oversimplified.Effects.NewSound = Oversimplified.Effects.AddSound;
|
||||
|
||||
Oversimplified.Effects.AddTune = function (tuneName, tuneSources) {
|
||||
if (typeof Oversimplified.Effects.Tunes[tuneName] === 'undefined') {
|
||||
Oversimplified.Effects.Tunes[tuneName] = new Oversimplified.Sound(tuneName, tuneSources);
|
||||
return Oversimplified.Effects.Tunes[tuneName];
|
||||
} else {
|
||||
if (Oversimplified.DEBUG.showMessages) console.log("A Tune with the name \"" + tuneName + "\" already exists!");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
Oversimplified.Effects.AddMusic = Oversimplified.Effects.NewTune = Oversimplified.Effects.NewMusic = Oversimplified.Effects.AddTune;
|
||||
|
||||
Oversimplified.Effects.Tunes.CheckLoops = function () {
|
||||
for (var tune in Oversimplified.Effects.Tunes) {
|
||||
if (Oversimplified.Effects.Tunes[tune].type == "Tune" && Oversimplified.Effects.Tunes[tune].IsPlaying()) {
|
||||
|
@ -1133,30 +1164,33 @@ Oversimplified.Effects.Tunes.CheckLoops = function () {
|
|||
Plays a sound effect once.
|
||||
Preferably source should be a .wav file and secondarySource should be a .mp3 file.
|
||||
*/
|
||||
Oversimplified.Sound = function (name, source, secondarySource) {
|
||||
Oversimplified.Sound = function (name, sourcesObject) {
|
||||
this.id = Oversimplified.nextID++;
|
||||
|
||||
secondarySource = typeof secondarySource !== 'undefined' ? secondarySource : false;
|
||||
sourcesObject = typeof sourcesObject !== 'undefined' ? sourcesObject : {};
|
||||
|
||||
this.name = name;
|
||||
this.source = source;
|
||||
this.secondarySource = secondarySource;
|
||||
this.source = {
|
||||
mp3: (typeof sourcesObject.mp3 !== 'undefined' && sourcesObject.mp3.length > 0) ? sourcesObject.mp3 : false,
|
||||
wav: (typeof sourcesObject.wav !== 'undefined' && sourcesObject.wav.length > 0) ? sourcesObject.wav : false,
|
||||
ogg: (typeof sourcesObject.ogg !== 'undefined' && sourcesObject.ogg.length > 0) ? sourcesObject.ogg : false
|
||||
};
|
||||
|
||||
this.audioElement = document.createElement("audio");
|
||||
this.audioElement.id = this.name + this.id.toString();
|
||||
// Alias for this.audioElement
|
||||
this.element = this.audioElement;
|
||||
|
||||
var audioSource = document.createElement("source");
|
||||
audioSource.src = this.source;
|
||||
this.audioElement.appendChild(audioSource);
|
||||
|
||||
if (this.secondarySource != false) {
|
||||
audioSource.src = this.secondarySource;
|
||||
this.audioElement.appendChild(audioSource);
|
||||
for (var type in this.source) {
|
||||
if (type !== false) {
|
||||
var audioSource = document.createElement("source");
|
||||
audioSource.src = this.source[type];
|
||||
this.audioElement.appendChild(audioSource);
|
||||
}
|
||||
}
|
||||
|
||||
document.getElementById("audio").appendChild(this.audioElement);
|
||||
this.audioElement.load();
|
||||
this.element = this.audioElement;
|
||||
}
|
||||
Oversimplified.Sound.prototype.type = "Sound";
|
||||
|
||||
|
@ -1178,32 +1212,34 @@ Oversimplified.Sound.prototype.IsPlaying = function () {
|
|||
Preferably source should be a .mp3 file and secondarySource should be a .ogg file.
|
||||
If duration is specified, loop when duration is reached.
|
||||
*/
|
||||
Oversimplified.Tune = function (name, source, secondarySource, duration) {
|
||||
Oversimplified.Tune = function (name, tuneOptions) {
|
||||
this.id = Oversimplified.nextID++;
|
||||
|
||||
secondarySource = typeof secondarySource !== 'undefined' ? secondarySource : false;
|
||||
duration = typeof duration !== 'undefined' ? duration : false;
|
||||
tuneOptions = (typeof tuneOptions !== 'undefined') ? tuneOptions : {};
|
||||
|
||||
this.name = name;
|
||||
this.source = source;
|
||||
this.secondarySource = secondarySource;
|
||||
this.duration = duration;
|
||||
this.source = {
|
||||
mp3: (typeof tuneOptions.mp3 !== 'undefined' && tuneOptions.mp3.length > 0) ? tuneOptions.mp3 : false,
|
||||
wav: (typeof tuneOptions.wav !== 'undefined' && tuneOptions.wav.length > 0) ? tuneOptions.wav : false,
|
||||
ogg: (typeof tuneOptions.ogg !== 'undefined' && tuneOptions.ogg.length > 0) ? tuneOptions.ogg : false
|
||||
};
|
||||
this.duration = (typeof tuneOptions.duration !== 'undefined') ? tuneOptions.duration : false;
|
||||
|
||||
this.audioElement = document.createElement("audio");
|
||||
this.audioElement.id = this.name + this.id.toString();
|
||||
// Alias for this.audioElement
|
||||
this.element = this.audioElement;
|
||||
|
||||
var audioSource = document.createElement("source");
|
||||
audioSource.src = this.source;
|
||||
this.audioElement.appendChild(audioSource);
|
||||
|
||||
if (this.secondarySource != false) {
|
||||
audioSource.src = this.secondarySource;
|
||||
this.audioElement.appendChild(audioSource);
|
||||
for (var type in this.source) {
|
||||
if (type !== false) {
|
||||
var audioSource = document.createElement("source");
|
||||
audioSource.src = this.source[type];
|
||||
this.audioElement.appendChild(audioSource);
|
||||
}
|
||||
}
|
||||
|
||||
document.getElementById("audio").appendChild(this.audioElement);
|
||||
this.audioElement.load();
|
||||
this.element = this.audioElement;
|
||||
}
|
||||
Oversimplified.Tune.prototype.type = "Tune";
|
||||
|
||||
|
@ -1228,56 +1264,11 @@ Oversimplified.Tune.prototype.IsPlaying = function () {
|
|||
return !this.element.paused && !this.element.ended && 0 < this.element.currentTime;
|
||||
}
|
||||
|
||||
// Aliases for Sounds and Tunes
|
||||
Oversimplified.Effects.S = Oversimplified.Effects.Sounds;
|
||||
Oversimplified.Effects.T = Oversimplified.Effects.Tunes;
|
||||
|
||||
// Alias for "Tunes" in case it's too hard to remember.
|
||||
Oversimplified.Effects.Music = Oversimplified.Effects.Tunes;
|
||||
Oversimplified.Effects.M = Oversimplified.Effects.Tunes;
|
||||
|
||||
// Alias for Effects
|
||||
Oversimplified.E = Oversimplified.Effects;
|
||||
|
||||
// Create a new GameObject inside the current Room and return it.
|
||||
Oversimplified.CreateObject = function (newObjectName, x, y, imageSrc, maskImageSrc, animationsArray) {
|
||||
if (newObjectName.type == "GameObject") { //Create from prefabricated object
|
||||
var newID = Oversimplified.nextID++;
|
||||
var newName = newObjectName.name + newID.toString();
|
||||
Oversimplified.O[newName] = Oversimplified.CopyObject(newObjectName, newID, newName);
|
||||
|
||||
Oversimplified.O[newName].x = x;
|
||||
Oversimplified.O[newName].y = y;
|
||||
|
||||
return Oversimplified.O[newName];
|
||||
}
|
||||
else {
|
||||
if (Oversimplified.O[newObjectName]) {
|
||||
if (Oversimplified.DEBUG.showMessages) console.log("Object with name \"" + newObjectName + "\" already exists in current room!");
|
||||
return false;
|
||||
}
|
||||
Oversimplified.O[newObjectName] = new Oversimplified.GameObject(newObjectName, x, y, imageSrc, maskImageSrc, animationsArray);
|
||||
}
|
||||
|
||||
Oversimplified.O[newObjectName].Start();
|
||||
|
||||
return Oversimplified.O[newObjectName];
|
||||
}
|
||||
|
||||
/* Copy a GameObject
|
||||
|
||||
newID and newName are optional. If excluded, they are auto-populated with the next id value and the original object's name.
|
||||
Use "identical" to copy name and id of original object.
|
||||
*/
|
||||
Oversimplified.CopyObject = function (object, newID, newName, objectOptions) {
|
||||
Oversimplified.CopyObject = function (object, objectOptions) {
|
||||
var resultingCopy = {};
|
||||
if (newID != "identical") {
|
||||
resultingCopy.id = typeof newID !== 'undefined' ? newID : Oversimplified.nextID++;
|
||||
resultingCopy.name = typeof newName !== 'undefined' ? newName : object.name + resultingCopy.id.toString();
|
||||
} else { //If second argument is "identical" with quotes, then copy id and name, too.
|
||||
resultingCopy.id = object.id;
|
||||
resultingCopy.name = object.name;
|
||||
}
|
||||
|
||||
//Copy Oversimplified.GameObject-unique properties
|
||||
if (object.type == 'GameObject') {
|
||||
resultingCopy.self = resultingCopy;
|
||||
|
@ -1311,52 +1302,17 @@ Oversimplified.CopyObject = function (object, newID, newName, objectOptions) {
|
|||
}
|
||||
}
|
||||
for (var option in objectOptions) {
|
||||
//Overwrite any properties.
|
||||
if (object[option].slice) { // If it's an array, copy its values.
|
||||
resultingCopy[option] = object[option].slice();
|
||||
//Overwrite any extra properties specified in objectOptions.
|
||||
if (objectOptions[option].slice) { // If it's an array, copy its values.
|
||||
resultingCopy[option] = objectOptions[option].slice();
|
||||
} else {
|
||||
resultingCopy[option] = objectOptions[option];
|
||||
}
|
||||
}
|
||||
|
||||
return resultingCopy;
|
||||
}
|
||||
|
||||
/* Copy any class (needs expanding)
|
||||
|
||||
newID and newName are optional. If excluded, they are auto-populated with the next id value and the original object's name.
|
||||
Use "identical" to copy the id and name of the original object.
|
||||
*/
|
||||
Oversimplified.Copy = function (object, newID, newName) {
|
||||
var resultingCopy = {};
|
||||
if (newID != "identical") {
|
||||
resultingCopy.id = typeof newID !== 'undefined' ? newID : Oversimplified.nextID++;
|
||||
resultingCopy.name = typeof newName !== 'undefined' ? newName : object.name + resultingCopy.id.toString();
|
||||
} else { //If second argument is "identical" with quotes, then copy id and name, too.
|
||||
resultingCopy.id = object.id;
|
||||
resultingCopy.name = object.name;
|
||||
}
|
||||
//Copy Oversimplified.GameObject-unique properties
|
||||
if (object.type == 'GameObject') {
|
||||
resultingCopy = Oversimplified.CopyObject(object, newID, newName);
|
||||
}
|
||||
if (object.type == 'Room') {
|
||||
/* resultingCopy.background = new Image();
|
||||
resultingCopy.background.loaded = false;
|
||||
resultingCopy.background.src = object.background.src;
|
||||
resultingCopy.background.onload = function () {
|
||||
resultingCopy.loaded = true;
|
||||
} */
|
||||
resultingCopy.objects = {};
|
||||
for (var subObject in object.objects) {
|
||||
resultingCopy.objects[subObject] = Oversimplified.Copy(object.objects[subObject]);
|
||||
}
|
||||
}
|
||||
for (var property in object) {
|
||||
if (typeof resultingCopy[property] === 'undefined') {
|
||||
resultingCopy[property] = object[property];
|
||||
}
|
||||
}
|
||||
// If id and name were not specified in the objectOptions and are therefore not set, set them!
|
||||
if (typeof resultingCopy.id === 'undefined') resultingCopy.id = Oversimplified.nextID++;
|
||||
if (typeof resultingCopy.name === 'undefined') resultingCopy.name = object.name + resultingCopy.id.toString();
|
||||
|
||||
return resultingCopy;
|
||||
}
|
||||
|
|
28
loadAudio.js
28
loadAudio.js
|
@ -1,17 +1,17 @@
|
|||
var mus_title = new OS.Tune("Title", "audio/music/title.mp3", "audio/music/title.wav");
|
||||
var mus_sail = new OS.Tune("Sailing", "audio/music/ocean.mp3", "audio/music/ocean.wav");
|
||||
var mus_trade = new OS.Tune("Trade", "audio/music/trade.mp3", "audio/music/trade.wav");
|
||||
var mus_credits = new OS.Tune("Credits", "audio/music/credits.mp3", "audio/music/credits.wav");
|
||||
var mus_title = new OS.E.AddTune("Title", {mp3: "audio/music/title.mp3", wav: "audio/music/title.wav"});
|
||||
var mus_sail = new OS.E.AddTune("Sailing", {mp3: "audio/music/ocean.mp3", wav: "audio/music/ocean.wav"});
|
||||
var mus_trade = new OS.E.AddTune("Trade", {mp3: "audio/music/trade.mp3", wav: "audio/music/trade.wav"});
|
||||
var mus_credits = new OS.E.AddTune("Credits", {mp3: "audio/music/credits.mp3", wav: "audio/music/credits.wav"});
|
||||
|
||||
var snd_buy = new OS.Sound("Buy", "audio/sounds/Buy.wav", "audio/sounds/Buy.mp3");
|
||||
var snd_cannotbuy = new OS.Sound("Cannot Buy", "audio/sounds/Cannot_Buy.wav", "audio/sounds/Cannot_Buy.mp3");
|
||||
var snd_heal = new OS.Sound("Heal", "audio/sounds/Heal.wav", "audio/sounds/Heal.mp3");
|
||||
var snd_illness = new OS.Sound("Illness", "audio/sounds/Illness.wav", "audio/sounds/Illness.mp3");
|
||||
var snd_cursordown = new OS.Sound("Move Cursor Down", "audio/sounds/Move_Cursor.wav", "audio/sounds/Move_Cursor.mp3");
|
||||
var snd_cursorup = new OS.Sound("Move Cursor Up", "audio/sounds/Move_Cursor_Up.wav", "audio/sounds/Move_Cursor_Up.mp3");
|
||||
var snd_sailing = new OS.Sound("Sailing", "audio/sounds/Sailing.wav", "audio/sounds/Sailing.mp3");
|
||||
var snd_select = new OS.Sound("Select", "audio/sounds/Select.wav", "audio/sounds/Select.mp3");
|
||||
var snd_sell = new OS.Sound("Sell", "audio/sounds/Sell.wav", "audio/sounds/Sell.mp3");
|
||||
var snd_wave = new OS.Sound("Wave Crash", "audio/sounds/Wave_Crash.wav", "audio/sounds/Wave_Crash.mp3");
|
||||
var snd_buy = new OS.E.AddSound("Buy", {wav: "audio/sounds/Buy.wav", mp3: "audio/sounds/Buy.mp3"});
|
||||
var snd_cannotbuy = new OS.E.AddSound("Cannot Buy", {wav: "audio/sounds/Cannot_Buy.wav", mp3: "audio/sounds/Cannot_Buy.mp3"});
|
||||
var snd_heal = new OS.E.AddSound("Heal", {wav: "audio/sounds/Heal.wav", mp3: "audio/sounds/Heal.mp3"});
|
||||
var snd_illness = new OS.E.AddSound("Illness", {wav: "audio/sounds/Illness.wav", mp3: "audio/sounds/Illness.mp3"});
|
||||
var snd_cursordown = new OS.E.AddSound("Move Cursor Down", {wav: "audio/sounds/Move_Cursor.wav", mp3: "audio/sounds/Move_Cursor.mp3"});
|
||||
var snd_cursorup = new OS.E.AddSound("Move Cursor Up", {wav: "audio/sounds/Move_Cursor_Up.wav", mp3: "audio/sounds/Move_Cursor_Up.mp3"});
|
||||
var snd_sailing = new OS.E.AddSound("Sailing", {wav: "audio/sounds/Sailing.wav", mp3: "audio/sounds/Sailing.mp3"});
|
||||
var snd_select = new OS.E.AddSound("Select", {wav: "audio/sounds/Select.wav", mp3: "audio/sounds/Select.mp3"});
|
||||
var snd_sell = new OS.E.AddSound("Sell", {wav: "audio/sounds/Sell.wav", mp3: "audio/sounds/Sell.mp3"});
|
||||
var snd_wave = new OS.E.AddSound("Wave Crash", {wav: "audio/sounds/Wave_Crash.wav", mp3: "audio/sounds/Wave_Crash.mp3"});
|
||||
|
||||
function loadAudio() {}
|
||||
|
|
Loading…
Reference in New Issue