Skip to content
This repository was archived by the owner on Oct 3, 2023. It is now read-only.

switch logic #360

Open
wants to merge 8 commits into
base: staging
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@
"devDependencies": {
"@babel/core": "^7.18.5",
"@babel/eslint-parser": "^7.18.2",
"@types/node": "^17.0.43",
"@types/node": "^18.0.0",
"@typescript-eslint/eslint-plugin": "^5.28.0",
"@typescript-eslint/parser": "^5.28.0",
"cross-env": "^7.0.3",
Expand Down
1 change: 1 addition & 0 deletions server/ServerConfig.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ var defaultConfig = [
{ name: 'TriggerComponent', path: '../src/gameClasses/components/script/TriggerComponent' },

{ name: 'ConditionComponent', path: '../src/gameClasses/components/script/ConditionComponent' },
{ name: 'SwitchComponent', path: '../src/gameClasses/components/script/SwitchComponent' },
{ name: 'ActionComponent', path: '../src/gameClasses/components/script/ActionComponent' },
{ name: 'VariableComponent', path: '../src/gameClasses/components/script/VariableComponent' },

Expand Down
1 change: 1 addition & 0 deletions server/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -498,6 +498,7 @@ var Server = IgeClass.extend({
ige.addComponent(GameTextComponent);
ige.addComponent(ScriptComponent);
ige.addComponent(ConditionComponent);
ige.addComponent(SwitchComponent);
ige.addComponent(ActionComponent);
ige.addComponent(AdComponent);
ige.addComponent(SoundComponent);
Expand Down
1 change: 1 addition & 0 deletions src/client.js
Original file line number Diff line number Diff line change
Expand Up @@ -911,6 +911,7 @@ const Client = IgeEventingClass.extend({
// ige.addComponent(VariableComponent); // this appears twice
ige.addComponent(ScriptComponent);
ige.addComponent(ConditionComponent);
ige.addComponent(SwitchComponent);
ige.addComponent(ActionComponent);

if (typeof mode == 'string' && mode == 'sandbox') {
Expand Down
2 changes: 1 addition & 1 deletion src/game.js

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion src/gameClasses/EntitiesToRender.js

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion src/gameClasses/EntitiesToRender.js.map

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions src/gameClasses/Player.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,8 @@ var Player = IgeEntity.extend({
self.redrawUnits(function (unit) {
return unit && unit.getOwner() && unit.getOwner().id() === self.id();
}, ['texture', 'nameLabel']);

ige.entitiesToRender.trackEntityById[entityIdFromServer] = this;
}
},

Expand Down
34 changes: 27 additions & 7 deletions src/gameClasses/components/script/ActionComponent.js
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,25 @@ var ActionComponent = IgeEntity.extend({
}

break;
case 'switchCondition':
var caseValue = ige.switchCondition.run(action, vars);
for(let elem in action.cases){
if(action.cases[elem].value === caseValue.case){
var brk = self.run(action.cases[elem][`case${caseValue.case}`], vars);
if(action.cases[elem].break) return 'break';
}
if(action.cases[elem].value === 'default'){
var brk = self.run(action.cases[elem].default, vars);
}
}
if (brk == 'break') {
return 'break';
} else if (brk == 'return') {
return 'return';
} else if (brk == 'continue') {
return 'continue';
}
break;

case 'transformRegionDimensions':
var region = ige.variable.getValue(action.region, vars);
Expand Down Expand Up @@ -172,7 +191,7 @@ var ActionComponent = IgeEntity.extend({

// ensure we aren't sending more than 30 POST requests within 10 seconds
ige.server.postReqTimestamps.push(ige.currentTime());
var oldestReqTimestamp = ige.server.postReqTimestamps[0]
var oldestReqTimestamp = ige.server.postReqTimestamps[0];
while (Date.now() - oldestReqTimestamp > 10000 && ige.server.postReqTimestamps.length > 0) {
oldestReqTimestamp = ige.server.postReqTimestamps.shift();
}
Expand All @@ -197,7 +216,7 @@ var ActionComponent = IgeEntity.extend({
ige.game.data.variables[varName].value = newValue;
}
} catch (err) {
console.error(err)
console.error(err);
if (ige.game.data.variables.hasOwnProperty(varName)) {
ige.game.data.variables[varName].value = 'error';
}
Expand Down Expand Up @@ -248,7 +267,6 @@ var ActionComponent = IgeEntity.extend({
if (player && player._category == 'player' && player._stats.attributes && player._stats.attributes[attrId] != undefined) {
var max = {};
max[attrId] = maxValue;

player.streamUpdateData([{ attributesMax: max }]);
}

Expand Down Expand Up @@ -2244,9 +2262,9 @@ var ActionComponent = IgeEntity.extend({
entity.addAttributeBuff(attrId, value, time, true); // update attribute, and check for attribute becoming 0
}
break;

case 'removeAllAttributeBuffs':
var unit = ige.variable.getValue(action.unit, vars)
var unit = ige.variable.getValue(action.unit, vars);
if(unit && unit._stats && unit._stats.buffs){
for(let i = 0; i < unit._stats.buffs.length; i++){
unit._stats.buffs[i].timeLimit = 0;
Expand All @@ -2267,7 +2285,7 @@ var ActionComponent = IgeEntity.extend({
var entity = ige.variable.getValue(action.entity, vars);

if (this._category == 'item' && this._stats.name == 'Floaty') {
console.trace()
console.trace();
}

if (entity && self.entityCategories.indexOf(entity._category) > -1) {
Expand Down Expand Up @@ -2615,4 +2633,6 @@ var ActionComponent = IgeEntity.extend({

});

if (typeof (module) !== 'undefined' && typeof (module.exports) !== 'undefined') { module.exports = ActionComponent; }
if (typeof (module) !== 'undefined' && typeof (module.exports) !== 'undefined') {
module.exports = ActionComponent;
}
50 changes: 50 additions & 0 deletions src/gameClasses/components/script/SwitchComponent.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
var SwitchComponent = IgeEntity.extend({
classId: 'SwitchComponent',
componentId: 'switchCondition',

init: function (entity, options) {
var self = this;
},

run: function (items, vars) {
if (items == undefined || items.length <= 0) {
return true;
}
let elemState;

const {argument, cases} = items;

// loop over all cases
for(let elem in cases){
caseValue = `case${cases[elem].value}`;
var caseVar = ige.variable.getValue(argument, vars);
var argumentVar = ige.variable.getValue(caseValue, vars);
// if the operands are igeEntities, then compare their id's
if (caseVar && caseVar._id != undefined && argumentVar && argumentVar._id != undefined) {
caseVar = caseVar._id;
argumentVar = argumentVar._id;
}
if (argumentVar == undefined) {
argumentVar = !!argumentVar;
}
if (caseVar == undefined) {
caseVar = !!caseVar;
}
if (typeof caseVar != 'object') {
var caseVar = JSON.stringify(caseVar);
}
if (typeof argumentVar != 'object') {
var argumentVar = JSON.stringify(argumentVar);
}
elemState = elem;
if(caseVar == argumentVar) break;
}
return {value : caseVar == argumentVar, case: elemState };// stringify is important for comparisons like region comparison


}
});

if (typeof (module) !== 'undefined' && typeof (module.exports) !== 'undefined') {
module.exports = SwitchComponent;
}