Update guess encoding APIs to be more structured
This commit is contained in:
parent
65387ccdea
commit
63e337de52
@ -8,7 +8,8 @@ import {
|
||||
getNemesisPasscode,
|
||||
getNemesisPasscodeModTypes,
|
||||
GUESS_WILDCARD,
|
||||
IKnifeResponse
|
||||
IKnifeResponse,
|
||||
NemesisGuess
|
||||
} from "@/src/helpers/nemesisHelpers";
|
||||
import { getJSONfromString } from "@/src/helpers/stringHelpers";
|
||||
import { Loadout } from "@/src/models/inventoryModels/loadoutModel";
|
||||
@ -98,13 +99,24 @@ export const nemesisController: RequestHandler = async (req, res) => {
|
||||
if (inventory.Nemesis!.Faction == "FC_INFESTATION") {
|
||||
const guess: number[] = [body.guess & 0xf, (body.guess >> 4) & 0xf, (body.guess >> 8) & 0xf];
|
||||
const passcode = getNemesisPasscode(inventory.Nemesis!)[0];
|
||||
|
||||
// Add to GuessHistory
|
||||
const result1 = passcode == guess[0] ? 0 : 1;
|
||||
const result2 = passcode == guess[1] ? 0 : 1;
|
||||
const result3 = passcode == guess[2] ? 0 : 1;
|
||||
inventory.Nemesis!.GuessHistory.push(
|
||||
encodeNemesisGuess(guess[0], result1, guess[1], result2, guess[2], result3)
|
||||
encodeNemesisGuess([
|
||||
{
|
||||
symbol: guess[0],
|
||||
result: result1
|
||||
},
|
||||
{
|
||||
symbol: guess[1],
|
||||
result: result2
|
||||
},
|
||||
{
|
||||
symbol: guess[2],
|
||||
result: result3
|
||||
}
|
||||
])
|
||||
);
|
||||
|
||||
// Increase antivirus if correct antivirus mod is installed
|
||||
|
@ -269,26 +269,39 @@ export const getNemesisPasscodeModTypes = (nemesis: { fp: bigint; Faction: TNeme
|
||||
export const GUESS_NONE = 8;
|
||||
export const GUESS_WILDCARD = 9;
|
||||
|
||||
export const encodeNemesisGuess = (
|
||||
symbol1: number,
|
||||
result1: number,
|
||||
symbol2: number,
|
||||
result2: number,
|
||||
symbol3: number,
|
||||
result3: number
|
||||
): number => {
|
||||
interface NemesisPositionGuess {
|
||||
symbol: number;
|
||||
result: number;
|
||||
}
|
||||
|
||||
export type NemesisGuess = [NemesisPositionGuess, NemesisPositionGuess, NemesisPositionGuess];
|
||||
|
||||
export const encodeNemesisGuess = (guess: NemesisGuess): number => {
|
||||
return (
|
||||
(symbol1 & 0xf) |
|
||||
((result1 & 3) << 12) |
|
||||
((symbol2 << 4) & 0xff) |
|
||||
((result2 << 14) & 0xffff) |
|
||||
((symbol3 & 0xf) << 8) |
|
||||
((result3 & 3) << 16)
|
||||
(guess[0].symbol & 0xf) |
|
||||
((guess[0].result & 3) << 12) |
|
||||
((guess[1].symbol << 4) & 0xff) |
|
||||
((guess[1].result << 14) & 0xffff) |
|
||||
((guess[2].symbol & 0xf) << 8) |
|
||||
((guess[2].result & 3) << 16)
|
||||
);
|
||||
};
|
||||
|
||||
export const decodeNemesisGuess = (val: number): number[] => {
|
||||
return [val & 0xf, (val >> 12) & 3, (val & 0xff) >> 4, (val & 0xffff) >> 14, (val >> 8) & 0xf, (val >> 16) & 3];
|
||||
export const decodeNemesisGuess = (val: number): NemesisGuess => {
|
||||
return [
|
||||
{
|
||||
symbol: val & 0xf,
|
||||
result: (val >> 12) & 3
|
||||
},
|
||||
{
|
||||
symbol: (val & 0xff) >> 4,
|
||||
result: (val & 0xffff) >> 14
|
||||
},
|
||||
{
|
||||
symbol: (val >> 8) & 0xf,
|
||||
result: (val >> 16) & 3
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
export interface IKnifeResponse {
|
||||
|
Loading…
x
Reference in New Issue
Block a user