All files / src/lib/events eventIfVariableFlagsCompare.js

65.22% Statements 30/46
11.11% Branches 2/18
50% Functions 1/2
96.67% Lines 29/30

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 1001x   1x 1x 1x       1x             1x                                                                                                     1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x 1x     1x                  
const l10n = require("../helpers/l10n").default;
 
const id = "EVENT_IF_FLAGS_COMPARE";
const groups = ["EVENT_GROUP_CONTROL_FLOW"];
const subGroups = {
  EVENT_GROUP_CONTROL_FLOW: "EVENT_GROUP_VARIABLES",
};
 
const autoLabel = (fetchArg) => {
  return l10n("EVENT_IF_FLAGS_COMPARE_LABEL", {
    variable: fetchArg("variable"),
    flag: String(Number(fetchArg("flag")) + 1),
  });
};
 
const fields = [
  {
    key: "variable",
    label: l10n("FIELD_VARIABLE"),
    description: l10n("FIELD_VARIABLE_DESC"),
    type: "variable",
    defaultValue: "LAST_VARIABLE",
  },
  {
    key: "flag",
    label: l10n("FIELD_FLAG"),
    description: l10n("FIELD_FLAG_CHECK_DESC"),
    type: "selectFlags",
    defaultValue: 0,
  },
  {
    key: "true",
    label: l10n("FIELD_TRUE"),
    description: l10n("FIELD_TRUE_DESC"),
    type: "events",
  },
  {
    key: "__collapseElse",
    label: l10n("FIELD_ELSE"),
    type: "collapsable",
    defaultValue: true,
    conditions: [
      {
        key: "__disableElse",
        ne: true,
      },
    ],
  },
  {
    key: "false",
    label: l10n("FIELD_FALSE"),
    description: l10n("FIELD_FALSE_DESC"),
    conditions: [
      {
        key: "__collapseElse",
        ne: true,
      },
      {
        key: "__disableElse",
        ne: true,
      },
    ],
    type: "events",
  },
];
 
const compile = (input, helpers) => {
  const { ifVariableBitwiseValue } = helpers;
  const truePath = input.true;
  const falsePath = input.__disableElse ? [] : input.false;
  let flags = 0;
  Iif (input.flag === 0) flags = 0x0001;
  Iif (input.flag === 1) flags = 0x0002;
  Iif (input.flag === 2) flags = 0x0004;
  Iif (input.flag === 3) flags = 0x0008;
  Iif (input.flag === 4) flags = 0x0010;
  if (input.flag === 5) flags = 0x0020;
  Iif (input.flag === 6) flags = 0x0040;
  Iif (input.flag === 7) flags = 0x0080;
  Iif (input.flag === 8) flags = 0x0100;
  Iif (input.flag === 9) flags = 0x0200;
  Iif (input.flag === 10) flags = 0x0400;
  Iif (input.flag === 11) flags = 0x0800;
  Iif (input.flag === 12) flags = 0x1000;
  Iif (input.flag === 13) flags = 0x2000;
  Iif (input.flag === 14) flags = 0x4000;
  Iif (input.flag === 15) flags = 0x8000;
  ifVariableBitwiseValue(input.variable, ".B_AND", flags, truePath, falsePath);
};
 
module.exports = {
  id,
  description: l10n("EVENT_IF_FLAGS_COMPARE_DESC"),
  autoLabel,
  groups,
  subGroups,
  fields,
  compile,
};