Merge remote-tracking branch 'upstream/main'

# Conflicts:
#	public/UITexts.example
#	src/api/wired/WiredActionLayoutCode.ts
#	src/api/wired/WiredConditionLayoutCode.ts
#	src/api/wired/WiredTriggerLayoutCode.ts
#	src/components/wired/views/WiredBaseView.tsx
#	src/components/wired/views/WiredSourcesSelector.tsx
#	src/components/wired/views/actions/WiredActionLayoutView.tsx
#	src/components/wired/views/conditions/WiredConditionLayoutView.tsx
#	src/components/wired/views/conditions/WiredConditionTriggererMatchView.tsx
#	src/components/wired/views/triggers/WiredTriggerClickFurniView.tsx
#	src/components/wired/views/triggers/WiredTriggerClickTileView.tsx
#	src/components/wired/views/triggers/WiredTriggerClickUserView.tsx
#	src/components/wired/views/triggers/WiredTriggerLayoutView.tsx
#	src/components/wired/views/triggers/WiredTriggerToggleFurniView.tsx
This commit is contained in:
Lorenzune
2026-03-21 14:47:52 +01:00
60 changed files with 9794 additions and 354 deletions
+9
View File
@@ -0,0 +1,9 @@
export interface IPrefixItem
{
id: number;
text: string;
color: string;
icon: string;
effect: string;
active: boolean;
}
+1
View File
@@ -6,4 +6,5 @@ export class UnseenItemCategory
public static BADGE: number = 4;
public static BOT: number = 5;
public static GAMES: number = 6;
public static PREFIX: number = 7;
}
+1
View File
@@ -5,6 +5,7 @@ export * from './GroupItem';
export * from './IBotItem';
export * from './IFurnitureItem';
export * from './IPetItem';
export * from './IPrefixItem';
export * from './IUnseenItemTracker';
export * from './InventoryUtilities';
export * from './PetUtilities';
+3 -1
View File
@@ -1,4 +1,4 @@
import { GetRoomSessionManager } from '@nitrots/nitro-renderer';
import { GetRoomSessionManager, NitroLogger } from '@nitrots/nitro-renderer';
import { GetRoomSession } from './GetRoomSession';
import { GoToDesktop } from './GoToDesktop';
@@ -6,6 +6,8 @@ export const VisitDesktop = () =>
{
if(!GetRoomSession()) return;
NitroLogger.log('[VisitDesktop] Called (isReconnecting=' + GetRoomSessionManager().isReconnecting + ')');
GoToDesktop();
GetRoomSessionManager().removeSession(-1);
};
@@ -7,6 +7,10 @@ export class ChatBubbleMessage
public height: number = 0;
public elementRef: HTMLDivElement = null;
public skipMovement: boolean = false;
public prefixText: string = '';
public prefixColor: string = '';
public prefixIcon: string = '';
public prefixEffect: string = '';
private _top: number = 0;
private _left: number = 0;
@@ -0,0 +1,5 @@
export interface CommandDefinition
{
key: string;
description: string;
}
+1
View File
@@ -7,6 +7,7 @@ export * from './AvatarInfoUser';
export * from './AvatarInfoUtilities';
export * from './BotSkillsEnum';
export * from './ChatBubbleMessage';
export * from './CommandDefinition';
export * from './ChatBubbleUtilities';
export * from './ChatMessageTypeEnum';
export * from './DimmerFurnitureWidgetPresetItem';
+53
View File
@@ -0,0 +1,53 @@
export const PRESET_PREFIX_EFFECTS: { id: string; label: string; icon: string }[] = [
{ id: '', label: 'None', icon: '—' },
{ id: 'glow', label: 'Glow', icon: '✨' },
{ id: 'shadow', label: 'Shadow', icon: '🌑' },
{ id: 'italic', label: 'Italic', icon: '𝑰' },
{ id: 'outline', label: 'Outline', icon: '🔲' },
{ id: 'pulse', label: 'Pulse', icon: '💫' },
{ id: 'bold-glow', label: 'Neon', icon: '💡' },
];
export const parsePrefixColors = (text: string, colorStr: string): string[] =>
{
if(!colorStr || !text) return [];
const colors = colorStr.split(',');
return [ ...text ].map((_, i) => colors[Math.min(i, colors.length - 1)]);
};
export const getPrefixEffectStyle = (effect: string, color?: string): Record<string, string | number> =>
{
const baseColor = color || '#FFFFFF';
switch(effect)
{
case 'glow':
return { textShadow: `0 0 6px ${ baseColor }, 0 0 12px ${ baseColor }80` };
case 'shadow':
return { textShadow: '2px 2px 4px rgba(0,0,0,0.7), 1px 1px 2px rgba(0,0,0,0.5)' };
case 'italic':
return { fontStyle: 'italic' };
case 'outline':
return {
WebkitTextStroke: '0.5px rgba(0,0,0,0.6)',
textShadow: '1px 1px 0 rgba(0,0,0,0.3), -1px -1px 0 rgba(0,0,0,0.3), 1px -1px 0 rgba(0,0,0,0.3), -1px 1px 0 rgba(0,0,0,0.3)'
};
case 'pulse':
return { animation: 'prefix-pulse 1.5s ease-in-out infinite' };
case 'bold-glow':
return {
textShadow: `0 0 4px ${ baseColor }, 0 0 8px ${ baseColor }, 0 0 16px ${ baseColor }60`,
fontWeight: 900
};
default:
return {};
}
};
export const PREFIX_EFFECT_KEYFRAMES = `
@keyframes prefix-pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.5; }
}
`;
+1
View File
@@ -11,6 +11,7 @@ export * from './LocalizeFormattedNumber';
export * from './LocalizeShortNumber';
export * from './LocalizeText';
export * from './PlaySound';
export * from './PrefixUtils';
export * from './ProductImageUtility';
export * from './Randomizer';
export * from './RoomChatFormatter';