@xmobitea/gn-server
Version:
GearN Server by XmobiTea (Pro)
182 lines (181 loc) • 5 kB
TypeScript
export declare enum RuleType {
String = 1,
Difference = 2,
SetIntersection = 3,
MatchTotal = 4,
RegionSelection = 5,
TeamSizeBalance = 6,
TeamDifference = 7,
TeamTicketSizeSimilarity = 8
}
export declare enum RuleAttributeSource {
UserInput = 1,
PlayerData = 2
}
export declare enum RuleExpansionType {
None = 1,
Linear = 2,
Custom = 3
}
interface RuleBase {
name: string;
type: RuleType;
}
export declare enum RuleStringCompairType {
Equals = 1,
NotEquals = 2
}
export interface StringRule extends RuleBase {
attributeSource: RuleAttributeSource;
attributePath: string;
type: RuleType.String;
defaultValue: string;
compairType: RuleStringCompairType;
advancedSettings?: {
secondsUntilOptional: number;
expansionType: RuleExpansionType.None | RuleExpansionType.Custom;
customExpansions?: {
secondsBetweenExpansions: number;
overrideValue: string[];
};
};
}
export interface DifferenceRule extends RuleBase {
attributeSource: RuleAttributeSource;
attributePath: string;
type: RuleType.Difference;
defaultValue: number;
allowedDifference: number;
advancedSettings?: {
secondsUntilOptional: number;
expansionType: RuleExpansionType;
linearExpansions?: {
secondsBetweenExpansions: number;
delta: number;
limit: number;
};
customExpansions?: {
secondsBetweenExpansions: number;
overrideValue: number[];
};
};
}
export interface SetIntersectionRule extends RuleBase {
attributeSource: RuleAttributeSource;
attributePath: string;
type: RuleType.SetIntersection;
min: number;
defaultValue: string[];
advancedSettings?: {
secondsUntilOptional: number;
expansionType: RuleExpansionType;
linearExpansions?: {
secondsBetweenExpansions: number;
delta: number;
};
customExpansions?: {
secondsBetweenExpansions: number;
overrideValue: number[];
};
};
}
export interface MatchTotalRule extends RuleBase {
attributeSource: RuleAttributeSource;
attributePath: string;
type: RuleType.MatchTotal;
min: number;
max: number;
advancedSettings?: {
secondsUntilOptional: number;
expansionType: RuleExpansionType.None | RuleExpansionType.Custom;
customExpansions?: {
secondsBetweenExpansions: number;
overrideMin?: number[];
overrideMax?: number[];
};
};
}
export interface RegionSelectionRule extends RuleBase {
attributePath: string;
type: RuleType.RegionSelection;
max: number;
advancedSettings?: {
secondsUntilOptional: number;
expansionType: RuleExpansionType;
linearExpansions?: {
secondsBetweenExpansions: number;
delta: number;
limit: number;
};
customExpansions?: {
secondsBetweenExpansions: number;
overrideValue: number[];
};
};
}
export interface TeamSizeBalanceRule extends RuleBase {
type: RuleType.TeamSizeBalance;
allowedDifference: number;
advancedSettings?: {
secondsUntilOptional: number;
expansionType: RuleExpansionType;
linearExpansions?: {
secondsBetweenExpansions: number;
delta: number;
limit: number;
};
customExpansions?: {
secondsBetweenExpansions: number;
overrideValue: number[];
};
};
}
export interface TeamDifferenceRule extends RuleBase {
attributeSource: RuleAttributeSource;
attributePath: string;
type: RuleType.TeamDifference;
allowedDifference: number;
defaultValue: number;
advancedSettings?: {
secondsUntilOptional: number;
expansionType: RuleExpansionType;
linearExpansions?: {
secondsBetweenExpansions: number;
delta: number;
limit: number;
};
customExpansions?: {
secondsBetweenExpansions: number;
overrideValue: number[];
};
};
}
export interface TeamTicketSizeSimilarityRule extends RuleBase {
type: RuleType.TeamTicketSizeSimilarity;
advancedSettings?: {
secondsUntilOptional: number;
};
}
export interface xMatchmakingQueueSettings {
queueName: string;
matchSize: {
min: number;
max: number;
};
ticketSize: {
min: number;
max: number;
};
serverAllocation: {
enable: boolean;
};
teams?: {
teamId: string;
teamSize: {
min: number;
max: number;
};
}[];
rules?: (StringRule | DifferenceRule | SetIntersectionRule | MatchTotalRule | RegionSelectionRule | TeamSizeBalanceRule | TeamDifferenceRule | TeamTicketSizeSimilarityRule)[];
}
export {};