2024-10-08 18:33:13 +11:00

76 lines
2.0 KiB
Objective-C

//
// GCPhysicalInputElement.h
// GameController
//
// Copyright © 2021 Apple Inc. All rights reserved.
//
#import <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
/**
The \c GCPhysicalInputElement protocol is a base protocol for specific types
of elements that represent controls on a device.
*/
API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0))
@protocol GCPhysicalInputElement <NSObject>
/**
The set of aliases that can be used to access this element with keyed subscript
notation.
*/
@property (copy, readonly) NSSet<NSString *> *aliases;
/**
The element's localized display name.
This is the string that your app should display in any on-screen messages
instructing the user to interact with the control. For example:
"Press \(buttonA.localizedName) to jump!"
Do not cache this value - it can change when the user remaps controls.
*/
@property (copy, readonly, nullable) NSString *localizedName;
/** The SF Symbols name for the element. */
@property (copy, readonly, nullable) NSString *sfSymbolsName;
@end
/**
An instance of \c GCPhysicalInputElementCollection contains the collection of
input elements found in a device's physical input profile.
*/
API_AVAILABLE(macos(13.0), ios(16.0), tvos(16.0)) NS_REFINED_FOR_SWIFT
@interface GCPhysicalInputElementCollection<Key: NSString*, __covariant Element: id<GCPhysicalInputElement>> : NSObject <NSFastEnumeration>
+ (instancetype)new NS_UNAVAILABLE;
- (instancetype)init NS_UNAVAILABLE;
/** The number of elements in the collection. */
@property (readonly) NSUInteger count;
/**
Returns the element associated with a given alias.
@param alias
The alias for which to return the corresponding element. Typically, you
pass one of the constants defined in \c GCInputNames.h.
@return
The element associated with \a alias, or nil if no element is associated
with \a alias.
*/
- (Element _Nullable)elementForAlias:(Key)alias;
- (Element _Nullable)objectForKeyedSubscript:(Key)key;
- (NSEnumerator<Element> *)elementEnumerator;
@end
NS_ASSUME_NONNULL_END