- {}}>
+ { }}>
{setVal("SetJoinIpAddress", val)}}>
+ onChange={(val: any) => { setVal("SetJoinIpAddress", val) }}>
{setIntVal("SetJoinPort", val)}}>
+ onChange={(val: any) => { setIntVal("SetJoinPort", val) }}>
{setVal("SetUsername", val)}}>
+ onChange={(val: any) => { setVal("SetUsername", val) }}>
+
-
-
+
+
+ {outNetworkStates}
+
+
+
{ setVal("SetMsgFromUsr", val) }}>
+
{translate("CS2M.UI.sendMessage", "Send")}
@@ -76,9 +103,12 @@ export const JoinGameMenu = () => {
const SaveListCSS = getModule('game-ui/menu/components/load-game-screen/save-list/save-list.module.scss', 'classes');
const FooterButton = getModule('game-ui/menu/components/shared/detail-section/detail-section.tsx', 'FooterButton');
- const visible : boolean = useValue(joinMenuVisible);
- const modSupports = useValue(modSupport);
+ const visible: boolean = useValue(joinMenuVisible);
+ const modSupports = useValue(modSupport);
const enabled = useValue(joinGameEnabled);
+ const enabled2 = useValue(hostGameEnabled);
+
+ const stopSrvVis = useValue(stopSrvVisible);
const { translate } = useLocalization();
@@ -87,11 +117,11 @@ export const JoinGameMenu = () => {
let details = [];
let detailsTitle;
if (enabled) {
- detailsTitle = translate("CS2M.UI.Compatibility");
+ detailsTitle = translate("CS2M.UI.Compatibility", "Compatibility");
for (let support of modSupports) {
let support_str = translate("CS2M.UI.Compatibility[" + support.support + "]", support.support);
if (support.client_side) {
- support_str = translate("CS2M.UI.ClientSide");
+ support_str = translate("CS2M.UI.ClientSide", "Client Side");
}
let color;
switch (support.support) {
@@ -108,27 +138,28 @@ export const JoinGameMenu = () => {
color = "orange";
break;
}
- details.push(
{support_str}
);
+ details.push(
{support_str}
);
}
} else {
- detailsTitle = translate("CS2M.UI.JoiningGame");
+ detailsTitle = translate("CS2M.UI.JoiningGame", "Joining Game");
}
let footer = <>
-
{translate("CS2M.UI.HostGame")}
-
{translate("CS2M.UI.JoinGame")}
- >;
+ {!stopSrvVis &&
{translate("CS2M.UI.HostChat", "Host Chat")}}
+
{translate("CS2M.UI.JoinGame", "Join Game")}
+ {stopSrvVis && (
{translate("CS2M.UI.StopServer", "Stop Server")})}
+ >;
let content;
if (visible) {
content = (
-
+
-
{translate("CS2M.UI.JoinGame")}
+
{translate("CS2M.UI.JoinGame", "Join_Game")}
diff --git a/CS2M.UI/src/util/input-field.tsx b/CS2M.UI/src/util/input-field.tsx
index 52f951c..e2ca354 100644
--- a/CS2M.UI/src/util/input-field.tsx
+++ b/CS2M.UI/src/util/input-field.tsx
@@ -14,7 +14,7 @@ export const InputField = (props : any) => {
- {translate(props.label)}
+ {translate(props.label, props.label)}
@@ -26,3 +26,25 @@ export const InputField = (props : any) => {
)
}
+
+export const InputFieldWide = (props : any) => {
+ const FocusableEditorItem = getModule('game-ui/editor/widgets/item/editor-item.tsx', 'FocusableEditorItem');
+ const ErrorLabel = getModule('game-ui/editor/widgets/label/error-label.tsx', 'ErrorLabel');
+ const EditorCSS = getModule('game-ui/editor/widgets/item/editor-item.module.scss', 'classes');
+ const StringInputField = getModule('game-ui/editor/widgets/fields/string-input-field.tsx', 'StringInputField');
+
+ const { translate } = useLocalization();
+
+ return (
+
+
+
+
+
+ )
+}
\ No newline at end of file
diff --git a/CS2M.UI/types/api.d.ts b/CS2M.UI/types/api.d.ts
index 64ae835..b6ace1a 100755
--- a/CS2M.UI/types/api.d.ts
+++ b/CS2M.UI/types/api.d.ts
@@ -1,9 +1,20 @@
declare module "cs2/api" {
+ import { MutableRefObject } from 'react';
+
export interface ValueBinding {
readonly value: T;
subscribe(listener?: BindingListener): ValueSubscription;
dispose(): void;
}
+ export interface MapBinding {
+ getValue(key: K): V;
+ subscribe(key: K, listener?: BindingListener): ValueSubscription;
+ dispose(): void;
+ }
+ export interface EventBinding {
+ subscribe(listener: BindingListener): Subscription;
+ dispose(): void;
+ }
export interface BindingListener {
(value: T): void;
}
@@ -15,10 +26,62 @@ declare module "cs2/api" {
setChangeListener(listener: BindingListener): void;
}
export export function bindValue(group: string, name: string, fallbackValue?: T): ValueBinding;
+ export export function bindLocalValue(initialValue: T): LocalValueBinding;
+ export export function bindMap(group: string, name: string, keyStringifier?: (key: K) => string): MapBinding;
+ export export function bindEvent(group: string, name: string): EventBinding;
+ export export function bindTrigger(group: string, name: string): () => void;
+ export export function bindTriggerWithArgs(group: string, name: string): T extends [
+ ] ? unknown : (...args: T) => void;
export export function trigger(group: string, name: string, ...args: any[]): void;
export export function call(group: string, name: string, ...args: any[]): Promise;
/** Subscribe to a ValueBinding. Return fallback value or throw an error if the binding is not registered on the C# side */
export export function useValue(binding: ValueBinding): V;
+ export export function useReducedValue(binding: ValueBinding, reducer: (current: T, next: V) => T, initial: T): T;
+ export export function useValueRef(binding: ValueBinding): MutableRefObject;
+ export export function useValueOnChange(binding: ValueBinding, onChange: (value: V, prevValue: V) => void, depth?: number): V;
+ export export function useMapValueOnChange(binding: MapBinding, key: K, onChange: (newValue: V) => void): V;
+ /** Subscribe to a MapBinding value. throw an error if the binding is not registered on the C# side */
+ export export function useMapValue(binding: MapBinding, key: undefined): undefined;
+ export export function useMapValue(binding: MapBinding, key: K): V;
+ export export function useMapValues(binding: MapBinding, keys: K[]): V[];
+ export class LocalValueBinding implements ValueBinding {
+ readonly listeners: ListenerRef[];
+ disposed: boolean;
+ _value: T;
+ constructor(initialValue: T);
+ get registered(): boolean;
+ get value(): T;
+ subscribe: (listener?: BindingListener) => {
+ readonly value: T;
+ setChangeListener: (listener: BindingListener) => void;
+ dispose(): void;
+ };
+ dispose: () => void;
+ update: (newValue: T) => void;
+ }
+ export class ListenerRef {
+ listener: BindingListener | undefined;
+ constructor(listener: BindingListener | undefined);
+ set: (listener: BindingListener) => void;
+ call: (newValue: T) => void;
+ }
+ // https://coherent-labs.com/Documentation/cpp-gameface/d1/dea/shape_morphing.html
+ // https://coherent-labs.com/Documentation/cpp-gameface/d4/d08/interface_morph_animation.html
+ export export interface HTMLImageElement {
+ getSrcSVGAnimation(): MorphAnimation | null;
+ }
+ export export interface Element {
+ getMaskSVGAnimation(): MorphAnimation | null;
+ }
+ export export interface MorphAnimation {
+ currentTime: number;
+ playbackRate: number;
+ play(): void;
+ pause(): void;
+ reverse(): void;
+ playFromTo(playTime: number, pauseTime: number, callback?: () => void): void;
+ }
export {};
diff --git a/CS2M.UI/types/bindings.d.ts b/CS2M.UI/types/bindings.d.ts
index 61ae738..72e10b3 100755
--- a/CS2M.UI/types/bindings.d.ts
+++ b/CS2M.UI/types/bindings.d.ts
@@ -76,17 +76,17 @@ declare module "cs2/bindings" {
}
export interface Chirp {
entity: Entity;
- sender: {
- link: ChirpLink;
- avatar: string | null;
- randomIndex: number;
- };
+ sender: ChirpSender;
date: number;
messageId: string;
links: ChirpLink[];
likes: number;
liked: boolean;
}
+ export interface ChirpSender {
+ entity: Entity;
+ link: ChirpLink;
+ }
export interface ChirpLink {
name: Name;
target: string;
@@ -258,6 +258,7 @@ declare module "cs2/bindings" {
icon: string;
color: Color;
sources: BudgetSource[];
+ active: boolean;
}
export interface BudgetSource {
id: string;
@@ -519,6 +520,7 @@ declare module "cs2/bindings" {
Temperature = "temperature",
NetElevation = "netElevation",
ScreenFrequency = "screenFrequency",
+ Height = "height",
Custom = "custom"
}
export enum LocElementType {
@@ -554,13 +556,15 @@ declare module "cs2/bindings" {
value: string | null;
args: Record | null;
}
- export type NumericProperty = NumberProperty | Number2Property;
+ export type NumericProperty = NumberProperty | Number2Property | NumberRangeProperty;
const NUMBER_PROPERTY = "Game.UI.Common.NumberProperty";
export interface NumberProperty {
labelId: string;
unit: Unit;
value: number;
signed: boolean;
+ icon?: string;
+ valueIcon?: string;
}
const NUMBER2_PROPERTY = "Game.UI.Common.Number2Property";
export interface Number2Property {
@@ -568,11 +572,24 @@ declare module "cs2/bindings" {
unit: Unit;
value: Number2;
signed: boolean;
+ icon?: string;
+ valueIcon?: string;
+ }
+ export interface NumberRangeProperty {
+ labelId: string;
+ unit: Unit;
+ minValue: number;
+ maxValue: number;
+ signed: boolean;
+ icon?: string;
+ valueIcon?: string;
}
const STRING_PROPERTY = "Game.UI.Common.StringProperty";
export interface StringProperty {
labelId: string;
valueId: string;
+ icon?: string;
+ valueIcon?: string;
}
export type Properties = {
[NUMBER_PROPERTY]: NumberProperty;
@@ -635,7 +652,9 @@ declare module "cs2/bindings" {
IndustrialEfficiency = "IndustrialEfficiency",
OfficeEfficiency = "OfficeEfficiency",
PollutionHealthAffect = "PollutionHealthAffect",
- HospitalEfficiency = "HospitalEfficiency"
+ HospitalEfficiency = "HospitalEfficiency",
+ IndustrialFishInputEfficiency = "IndustrialFishInputEfficiency",
+ IndustrialFishHubEfficiency = "IndustrialFishHubEfficiency"
}
export interface LocalModifierEffect {
modifiers: LocalModifier[];
@@ -657,14 +676,209 @@ declare module "cs2/bindings" {
providers: LeisureProvider[];
}
export interface LeisureProvider {
- type: string;
+ type: LeisureType;
efficiency: number;
}
+ export enum LeisureType {
+ Meals = "Meals",
+ Entertainment = "Entertainment",
+ Commercial = "Commercial",
+ CityIndoors = "CityIndoors",
+ Travel = "Travel",
+ CityPark = "CityPark",
+ CityBeach = "CityBeach",
+ Attractions = "Attractions",
+ Relaxation = "Relaxation",
+ Sightseeing = "Sightseeing"
+ }
export interface AdjustHappinessEffect {
targets: string[];
wellbeingEffect: number;
healthEffect: number;
}
+ export enum UISound {
+ selectItem = "select-item",
+ dragSlider = "drag-slider",
+ hoverItem = "hover-item",
+ expandPanel = "expand-panel",
+ grabSlider = "grabSlider",
+ selectDropdown = "select-dropdown",
+ selectToggle = "select-toggle",
+ focusInputField = "focus-input-field",
+ signatureBuildingEvent = "signature-building-event",
+ bulldoze = "bulldoze",
+ bulldozeEnd = "bulldoze-end",
+ relocateBuilding = "relocate-building",
+ mapTilePurchaseMode = "map-tile-purchase-mode",
+ mapTilePurchaseModeEnd = "map-tile-purchase-mode-end",
+ xpEvent = "xp-event",
+ milestoneEvent = "milestone-event",
+ economy = "economy",
+ chirpEvent = "chirp-event",
+ likeChirp = "like-chirp",
+ chirper = "chirper",
+ purchase = "purchase",
+ enableBuilding = "enable-building",
+ disableBuilding = "disable-building",
+ pauseSimulation = "pause-simulation",
+ resumeSimulation = "resume-simulation",
+ simulationSpeed1 = "simulation-speed-1",
+ simulationSpeed2 = "simulation-speed-2",
+ simulationSpeed3 = "simulation-speed-3",
+ togglePolicy = "toggle-policy",
+ takeLoan = "take-loan",
+ removeItem = "remove-item",
+ toggleInfoMode = "toggle-info-mode",
+ takePhoto = "take-photo",
+ tutorialTriggerCompleteEvent = "tutorial-trigger-complete-event",
+ selectRadioNetwork = "select-radio-network",
+ selectRadioStation = "select-radio-station",
+ generateRandomName = "generate-random-name",
+ decreaseElevation = "decrease-elevation",
+ increaseElevation = "increase-elevation",
+ selectPreviousItem = "select-previous-item",
+ selectNextItem = "select-next-item",
+ openPanel = "open-panel",
+ closePanel = "close-panel",
+ openMenu = "open-menu",
+ closeMenu = "close-menu",
+ clickDisableButton = "click-disable-button"
+ }
+ export class FocusSymbol {
+ readonly debugName: string;
+ readonly r: number;
+ constructor(debugName: string);
+ toString(): string;
+ }
+ const FOCUS_DISABLED: FocusSymbol;
+ const FOCUS_AUTO: FocusSymbol;
+ export type FocusKey = typeof FOCUS_DISABLED | typeof FOCUS_AUTO | UniqueFocusKey;
+ export type UniqueFocusKey = FocusSymbol | string | number;
+ export type Action = () => void | boolean;
+ export type Action1D = (value: number) => void | boolean;
+ export interface InputActionsDefinition {
+ "Move Horizontal": Action1D;
+ "Change Slider Value": Action1D;
+ "Change Tool Option": Action1D;
+ "Change Value": Action1D;
+ "Change Line Schedule": Action1D;
+ "Select Popup Button": Action1D;
+ "Move Vertical": Action1D;
+ "Switch Radio Station": Action1D;
+ "Scroll Vertical": Action1D;
+ "Scroll Assets": Action1D;
+ "Select": Action;
+ "Purchase Dev Tree Node": Action;
+ "Select Chirp Sender": Action;
+ "Save Game": Action;
+ "Overwrite Save": Action;
+ "Confirm": Action;
+ "Expand Group": Action;
+ "Collapse Group": Action;
+ "Select Route": Action;
+ "Remove Operating District": Action;
+ "Upgrades Menu": Action;
+ "Purchase Map Tile": Action;
+ "Unfollow Citizen": Action;
+ "Like Chirp": Action;
+ "Unlike Chirp": Action;
+ "Enable Info Mode": Action;
+ "Disable Info Mode": Action;
+ "Toggle Tool Color Picker": Action;
+ "Cinematic Mode": Action;
+ "Photo Mode": Action;
+ "Focus Citizen": Action;
+ "Unfocus Citizen": Action;
+ "Focus Line Panel": Action;
+ "Focus Occupants Panel": Action;
+ "Focus Info Panel": Action;
+ "Close": Action;
+ "Back": Action;
+ "Leave Underground Mode": Action;
+ "Leave Info View": Action;
+ "Leave Map Tile View": Action;
+ "Jump Section": Action1D;
+ "Switch Tab": Action1D;
+ "Switch Option Section": Action1D;
+ "Switch DLC": Action1D;
+ "Switch Ordering": Action1D;
+ "Switch Radio Network": Action1D;
+ "Change Time Scale": Action1D;
+ "Switch Page": Action1D;
+ "Default Tool": Action;
+ "Default Tool UI": Action;
+ "Tool Options": Action;
+ "Switch Toolmode": Action;
+ "Toggle Snapping": Action;
+ "Toggle Contour Lines": Action;
+ "Capture Keyframe": Action;
+ "Reset Property": Action;
+ "Toggle Property": Action;
+ "Previous Tutorial Phase": Action;
+ "Continue Tutorial": Action;
+ "Finish Tutorial": Action;
+ "Close Tutorial": Action;
+ "Focus Tutorial List": Action;
+ "Start Next Tutorial": Action;
+ "Pause Simulation": Action;
+ "Resume Simulation": Action;
+ "Switch Speed": Action;
+ "Speed 1": Action;
+ "Speed 2": Action;
+ "Speed 3": Action;
+ "Bulldozer": Action;
+ "Exit Underground Mode": Action;
+ "Enter Underground Mode": Action;
+ "Increase Elevation": Action;
+ "Decrease Elevation": Action;
+ "Change Elevation": Action1D;
+ "Advisor": Action;
+ "Quicksave": Action;
+ "Quickload": Action;
+ "Focus Selected Object": Action;
+ "Hide UI": Action;
+ "Map Tile Purchase Panel": Action;
+ "Info View": Action;
+ "Progression Panel": Action;
+ "Economy Panel": Action;
+ "City Information Panel": Action;
+ "Statistic Panel": Action;
+ "Transportation Overview Panel": Action;
+ "Notification Panel": Action;
+ "Chirper Panel": Action;
+ "Lifepath Panel": Action;
+ "Event Journal Panel": Action;
+ "Radio Panel": Action;
+ "Photo Mode Panel": Action;
+ "Take Photo": Action;
+ "Relocate Selected Object": Action;
+ "Toggle Selected Object Active": Action;
+ "Delete Selected Object": Action;
+ "Toggle Selected Object Emptying": Action;
+ "Toggle Selected Lot Edit": Action;
+ "Toggle Follow Selected Citizen": Action;
+ "Toggle Traffic Routes": Action;
+ "Pause Menu": Action;
+ "Load Game": Action;
+ "Start Game": Action;
+ "Save Options": Action;
+ "Switch User": Action;
+ "Unset Binding": Action;
+ "Reset Binding": Action;
+ "Switch Savegame Location": Action1D;
+ "Show Advanced": Action;
+ "Hide Advanced": Action;
+ "Select Directory": Action;
+ "Search Options": Action;
+ "Clear Search": Action;
+ "Credit Speed": Action1D;
+ "Debug UI": Action;
+ "Debug Prefab Tool": Action;
+ "Debug Change Field": Action1D;
+ "Debug Multiplier": Action1D;
+ }
+ export type InputAction = keyof InputActionsDefinition;
+ export type InputActionName = InputAction | string;
export enum WidgetType {
Column = "Game.UI.Widgets.Column",
Row = "Game.UI.Widgets.Row",
@@ -708,8 +922,10 @@ declare module "cs2/bindings" {
Bounds2InputField = "Game.UI.Widgets.Bounds2InputField",
Bounds3InputField = "Game.UI.Widgets.Bounds3InputField",
Bezier4x3Field = "Game.UI.Widgets.Bezier4x3Field",
+ RangedSliderField = "Game.UI.Widgets.RangedSliderField",
StringInputField = "Game.UI.Widgets.StringInputField",
ColorField = "Game.UI.Widgets.ColorField",
+ GradientSliderField = "Game.UI.Widgets.GradientSliderField",
AnimationCurveField = "Game.UI.Widgets.AnimationCurveField",
EnumField = "Game.UI.Widgets.EnumField",
FlagsField = "Game.UI.Widgets.FlagsField",
@@ -744,6 +960,9 @@ declare module "cs2/bindings" {
selected: boolean;
disabled: boolean;
}
+ export interface WarningSign {
+ warning?: boolean;
+ }
export enum TooltipPos {
Title = 0,
Container = 1
@@ -754,14 +973,19 @@ declare module "cs2/bindings" {
export interface Field extends BaseWidget, Named, TooltipTarget, WidgetTutorialTarget {
value: T;
}
- export type ToggleField = Field;
- export interface IntInputField extends Field {
+ export interface MinMaxField extends Field {
+ min?: T;
+ max?: T;
+ }
+ export interface ToggleField extends Field, WarningSign {
+ }
+ export interface IntInputFieldBase extends Field {
min?: number;
max?: number;
step?: number;
stepMultiplier?: number;
}
- export interface IntSliderField extends Field {
+ export interface IntSliderFieldBase extends Field {
min: number;
max: number;
step?: number;
@@ -769,16 +993,19 @@ declare module "cs2/bindings" {
unit?: string | null;
scaleDragVolume?: boolean;
updateOnDragEnd: boolean;
+ }
+ export type IntInputField = IntInputFieldBase;
+ export interface IntSliderField extends IntSliderFieldBase, WarningSign {
separateThousands?: boolean;
signed?: boolean;
}
- export interface FloatInputField extends Field {
- min?: number;
- max?: number;
+ export interface FloatInputFieldBase extends MinMaxField {
fractionDigits?: number;
step?: number;
stepMultiplier?: number;
}
+ export interface FloatInputField extends FloatInputFieldBase {
+ }
export interface FloatSliderFieldBase extends Field {
min: number;
max: number;
@@ -788,7 +1015,7 @@ declare module "cs2/bindings" {
scaleDragVolume?: boolean;
updateOnDragEnd: boolean;
}
- export interface FloatSliderField extends FloatSliderFieldBase {
+ export interface FloatSliderField extends FloatSliderFieldBase, WarningSign {
separateThousands?: boolean;
maxValueWithFraction?: number;
signed?: boolean;
@@ -797,7 +1024,7 @@ declare module "cs2/bindings" {
hdr?: boolean;
showAlpha: boolean;
}
- export interface EnumField extends Field {
+ export interface EnumField extends Field, WarningSign {
enumMembers: EnumMember[];
}
export interface EnumMember {
@@ -805,7 +1032,7 @@ declare module "cs2/bindings" {
displayName: LocElement;
disabled?: boolean;
}
- export interface DropdownField extends Field {
+ export interface DropdownField extends Field, WarningSign {
items: DropdownItem[];
}
export interface DropdownItem {
@@ -937,6 +1164,7 @@ declare module "cs2/bindings" {
icon: string;
requirement: string;
minimumCount: number;
+ isUpgrade: boolean;
}
export interface ZoneBuiltRequirement extends PrefabRequirementBase {
labelId: string | null;
@@ -987,7 +1215,8 @@ declare module "cs2/bindings" {
Processing = "prefabs.ProcessingRequirement",
ObjectBuilt = "prefabs.ObjectBuiltRequirement",
Unlock = "prefabs.UnlockRequirement",
- Tutorial = "prefabs.TutorialRequirement"
+ Tutorial = "prefabs.TutorialRequirement",
+ PrefabUnlocked = "prefabs.PrefabUnlockedRequirement"
}
export interface PrefabRequirements {
[PrefabRequirementType.Milestone]: MilestoneRequirement;
@@ -999,6 +1228,7 @@ declare module "cs2/bindings" {
[PrefabRequirementType.ObjectBuilt]: ObjectBuiltRequirement;
[PrefabRequirementType.Unlock]: UnlockRequirement;
[PrefabRequirementType.Tutorial]: TutorialRequirement;
+ [PrefabRequirementType.PrefabUnlocked]: UnlockRequirement;
}
export type PrefabRequirement = TypeFromMap;
export interface Theme {
@@ -1020,7 +1250,8 @@ declare module "cs2/bindings" {
titleId: string;
descriptionId: string | null;
locked: boolean;
- uniquePlaced: boolean;
+ unique: boolean;
+ placed: boolean;
constructionCost: NumericProperty | null;
effects: PrefabEffect[];
properties: PrefabProperty[];
@@ -1163,7 +1394,18 @@ declare module "cs2/bindings" {
selectedInfoPanelDelete: string;
pauseMenuButton: string;
upgradeGrid: string;
+ assetGrid: string;
actionHints: string;
+ assetImportButton: string;
+ editorInfoViewsPanel: string;
+ resetTODButton: string;
+ simulationPlayButton: string;
+ tutorialsToggle: string;
+ workspaceTitleBar: string;
+ selectProjectRoot: string;
+ selectAssets: string;
+ selectTemplate: string;
+ importButton: string;
}
export interface Infoview {
entity: Entity;
@@ -1205,6 +1447,7 @@ declare module "cs2/bindings" {
}
const infoviews$: ValueBinding;
const activeInfoview$: ValueBinding;
+ function closeInfoviewMenu(): void;
function setActiveInfoview(entity: Entity): void;
function clearActiveInfoview(): void;
function setInfomodeActive(entity: Entity, active: boolean, priority: number): void;
@@ -1307,6 +1550,8 @@ declare module "cs2/bindings" {
const jobs$: ValueBinding;
const unemployment$: ValueBinding;
const birthRate$: ValueBinding;
+ const homeless$: ValueBinding;
+ const homelessness$: ValueBinding;
const movedIn$: ValueBinding;
const movedAway$: ValueBinding;
const ageData$: ValueBinding;
@@ -1329,6 +1574,9 @@ declare module "cs2/bindings" {
const fertilityExtractionRate$: ValueBinding;
const forestRenewalRate$: ValueBinding;
const fertilityRenewalRate$: ValueBinding;
+ const availableFish$: ValueBinding;
+ const fishExtractionRate$: ValueBinding;
+ const fishRenewalRate$: ValueBinding;
const workplacesData$: ValueBinding;
const employeesData$: ValueBinding;
const worksplaces$: ValueBinding;
@@ -1372,15 +1620,11 @@ declare module "cs2/bindings" {
export interface FollowedCitizen {
entity: Entity;
name: Name;
- avatar: string | null;
- randomIndex: number;
age: string;
}
export interface LifePathDetails {
entity: Entity;
name: Name;
- avatar: string | null;
- randomIndex: number;
birthDay: number;
age: string;
education: string;
@@ -1440,9 +1684,11 @@ declare module "cs2/bindings" {
}
export enum MapTileStatus {
None = 0,
- NoSelection = 1,
- InsufficientFunds = 2,
- InsufficientPermits = 4
+ NoCurrentlyAvailable = 1,
+ NoAvailable = 2,
+ NoSelection = 4,
+ InsufficientFunds = 8,
+ InsufficientPermits = 16
}
const group$1 = "photoMode";
function resetCamera(): void;
@@ -1672,7 +1918,7 @@ declare module "cs2/bindings" {
const milestoneUnlocks$: MapBinding;
const unlockDetails$: MapBinding;
const unlockedSignatures$: ValueBinding;
- function clearUnlockedSignatures(): void;
+ function removeUnlockedSignature(): void;
const radioEnabled$: ValueBinding;
const volume$: ValueBinding;
const paused$: ValueBinding;
@@ -1727,23 +1973,14 @@ declare module "cs2/bindings" {
title: string;
info: string | null;
}
- const FOCUS_DISABLED: unique symbol;
- const FOCUS_AUTO: unique symbol;
- export type FocusKey = typeof FOCUS_DISABLED | typeof FOCUS_AUTO | UniqueFocusKey;
- export type UniqueFocusKey = FocusSymbol | string | number;
- export class FocusSymbol {
- readonly debugName: string;
- readonly r: number;
- constructor(debugName: string);
- toString(): string;
- }
const selectedEntity$: ValueBinding;
+ const selectedTrailerController$: ValueBinding;
const selectedUITag$: ValueBinding;
const activeSelection$: ValueBinding;
const selectedInfoPosition$: ValueBinding;
- const topSections$: ValueBinding<((ResourceSection & Typed) | (LocalServicesSection & Typed) | (ActionsSection & Typed) | (DescriptionSection & Typed) | (DeveloperSection & Typed) | (ResidentsSection & Typed) | (HouseholdSidebarSection & Typed) | (DistrictsSection & Typed) | (TitleSection & Typed) | (NotificationsSection & Typed) | (PoliciesSection & Typed) | (ProfitabilitySection & Typed) | (AverageHappinessSection & Typed) | (ScheduleSection & Typed) | (LineSection & Typed) | (LinesSection & Typed) | (ColorSection & Typed) | (LineVisualizerSection & Typed) | (TicketPriceSection & Typed) | (VehicleCountSection & Typed) | (AttractivenessSection & Typed) | (EfficiencySection & Typed) | (EmployeesSection & Typed) | (UpkeepSection & Typed) | (LevelSection & Typed) | (EducationSection & Typed) | (PollutionSection & Typed) | (HealthcareSection & Typed) | (DeathcareSection & Typed) | (GarbageSection & Typed) | (PoliceSection & Typed) | (VehiclesSection & Typed) | (DispatchedVehiclesSection & Typed) | (ElectricitySection & Typed) | (TransformerSection & Typed) | (BatterySection & Typed) | (WaterSection & Typed) | (SewageSection & Typed) | (FireSection & Typed) | (PrisonSection & Typed) | (ShelterSection & Typed) | (ParkingSection & Typed) | (ParkSection & Typed) | (MailSection & Typed) | (RoadSection & Typed) | (CompanySection & Typed) | (StorageSection & Typed) | (PrivateVehicleSection & Typed) | (PublicTransportVehicleSection & Typed) | (CargoTransportVehicleSection & Typed) | (DeliveryVehicleSection & Typed) | (HealthcareVehicleSection & Typed) | (FireVehicleSection & Typed) | (PoliceVehicleSection & Typed) | (MaintenanceVehicleSection & Typed) | (DeathcareVehicleSection & Typed) | (PostVehicleSection & Typed) | (GarbageVehicleSection & Typed) | (PassengersSection & Typed) | (CargoSection & Typed) | (StatusSection & Typed) | (CitizenSection & Typed) | (SelectVehiclesSection & Typed) | (DestroyedBuildingSection & Typed) | (DestroyedTreeSection & Typed) | (ComfortSection & Typed) | (UpgradesSection & Typed) | (UpgradePropertiesSection & Typed) | null)[]>;
- const middleSections$: ValueBinding<((ResourceSection & Typed) | (LocalServicesSection & Typed) | (ActionsSection & Typed) | (DescriptionSection & Typed) | (DeveloperSection & Typed) | (ResidentsSection & Typed) | (HouseholdSidebarSection & Typed) | (DistrictsSection & Typed) | (TitleSection & Typed) | (NotificationsSection & Typed) | (PoliciesSection & Typed) | (ProfitabilitySection & Typed) | (AverageHappinessSection & Typed) | (ScheduleSection & Typed) | (LineSection & Typed) | (LinesSection & Typed) | (ColorSection & Typed) | (LineVisualizerSection & Typed) | (TicketPriceSection & Typed) | (VehicleCountSection & Typed) | (AttractivenessSection & Typed) | (EfficiencySection & Typed) | (EmployeesSection & Typed) | (UpkeepSection & Typed) | (LevelSection & Typed) | (EducationSection & Typed) | (PollutionSection & Typed) | (HealthcareSection & Typed) | (DeathcareSection & Typed) | (GarbageSection & Typed) | (PoliceSection & Typed) | (VehiclesSection & Typed) | (DispatchedVehiclesSection & Typed) | (ElectricitySection & Typed) | (TransformerSection & Typed) | (BatterySection & Typed) | (WaterSection & Typed) | (SewageSection & Typed) | (FireSection & Typed) | (PrisonSection & Typed) | (ShelterSection & Typed) | (ParkingSection & Typed) | (ParkSection & Typed) | (MailSection & Typed