mirror of
https://github.com/unmojang/node-minecraft-protocol.git
synced 2025-09-28 13:45:37 -04:00
move condition type to conditional.js
This commit is contained in:
parent
fe04239090
commit
877ede063d
26
src/datatypes/conditional.js
Normal file
26
src/datatypes/conditional.js
Normal file
@ -0,0 +1,26 @@
|
||||
var evalCondition= require("../utils").evalCondition;
|
||||
|
||||
module.exports= {
|
||||
'condition': [readCondition, writeCondition, sizeOfCondition]
|
||||
};
|
||||
|
||||
function readCondition(buffer,offset,typeArgs, rootNode)
|
||||
{
|
||||
if(!evalCondition(typeArgs,rootNode))
|
||||
return { value: null, size: 0 };
|
||||
return this.read(buffer, offset, { type: typeArgs.type, typeArgs:typeArgs.typeArgs }, rootNode);
|
||||
}
|
||||
|
||||
function writeCondition(value, buffer, offset, typeArgs, rootNode) {
|
||||
if(!evalCondition(typeArgs,rootNode))
|
||||
return offset;
|
||||
|
||||
return this.write(value, buffer, offset, { type: typeArgs.type, typeArgs:typeArgs.typeArgs }, rootNode);
|
||||
}
|
||||
|
||||
function sizeOfCondition(value, fieldInfo, rootNode) {
|
||||
if(!evalCondition(fieldInfo,rootNode))
|
||||
return 0;
|
||||
|
||||
return this.sizeOf(value,fieldInfo, rootNode);
|
||||
}
|
@ -2,7 +2,7 @@ var assert = require('assert');
|
||||
var util = require('util');
|
||||
var zlib = require('zlib');
|
||||
|
||||
var getField= require("./utils").getField;
|
||||
var evalCondition= require("./utils").evalCondition;
|
||||
|
||||
var STRING_MAX_LENGTH = 240;
|
||||
|
||||
@ -54,6 +54,7 @@ var numeric=require("./datatypes/numeric");
|
||||
var utils=require("./datatypes/utils");
|
||||
var minecraft=require("./datatypes/minecraft");
|
||||
var structures=require("./datatypes/structures");
|
||||
var conditional=require("./datatypes/conditional");
|
||||
|
||||
var types = {
|
||||
'byte': numeric.byte,
|
||||
@ -72,7 +73,7 @@ var types = {
|
||||
'array':structures.array,
|
||||
'buffer': utils.buffer,
|
||||
'count': structures.count,
|
||||
'condition': [readCondition, writeCondition, sizeOfCondition],
|
||||
'condition': conditional.condition,
|
||||
// TODO : remove type-specific, replace with generic containers and arrays.
|
||||
'restBuffer': minecraft.restBuffer,
|
||||
'UUID': minecraft.UUID,
|
||||
@ -124,38 +125,6 @@ for (var n in entityMetadataTypes) {
|
||||
entityMetadataTypeBytes[entityMetadataTypes[n].type] = n;
|
||||
}
|
||||
|
||||
function readCondition(buffer,offset,typeArgs, rootNode)
|
||||
{
|
||||
if(!evalCondition(typeArgs,rootNode))
|
||||
return { value: null, size: 0 };
|
||||
return proto.read(buffer, offset, { type: typeArgs.type, typeArgs:typeArgs.typeArgs }, rootNode);
|
||||
}
|
||||
|
||||
function writeCondition(value, buffer, offset, typeArgs, rootNode) {
|
||||
if(!evalCondition(typeArgs,rootNode))
|
||||
return offset;
|
||||
|
||||
return proto.write(value, buffer, offset, { type: typeArgs.type, typeArgs:typeArgs.typeArgs }, rootNode);
|
||||
}
|
||||
|
||||
function sizeOfCondition(value, fieldInfo, rootNode) {
|
||||
if(!evalCondition(fieldInfo,rootNode))
|
||||
return 0;
|
||||
|
||||
return proto.sizeOf(value,fieldInfo, rootNode);
|
||||
}
|
||||
|
||||
|
||||
function evalCondition(condition,field_values)
|
||||
{
|
||||
var field_value_to_test="this" in condition && condition["this"] ? field_values["this"][condition.field] : field_values[condition.field];
|
||||
var b=condition.values.some(function(value) {return field_value_to_test===value;});
|
||||
if("different" in condition && condition["different"])
|
||||
return !b;
|
||||
else
|
||||
return b;
|
||||
}
|
||||
|
||||
|
||||
function readEntityMetadata(buffer, offset) {
|
||||
var cursor = offset;
|
||||
|
16
src/utils.js
16
src/utils.js
@ -1,4 +1,7 @@
|
||||
module.exports= {getField:getField};
|
||||
module.exports={
|
||||
getField:getField,
|
||||
evalCondition:evalCondition
|
||||
};
|
||||
|
||||
function getField(countField, rootNode) {
|
||||
var countFieldArr = countField.split(".");
|
||||
@ -8,3 +11,14 @@ function getField(countField, rootNode) {
|
||||
}
|
||||
return count;
|
||||
}
|
||||
|
||||
|
||||
function evalCondition(condition,field_values)
|
||||
{
|
||||
var field_value_to_test="this" in condition && condition["this"] ? field_values["this"][condition.field] : field_values[condition.field];
|
||||
var b=condition.values.some(function(value) {return field_value_to_test===value;});
|
||||
if("different" in condition && condition["different"])
|
||||
return !b;
|
||||
else
|
||||
return b;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user