587 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			Ruby
		
	
	
	
		
		
			
		
	
	
			587 lines
		
	
	
		
			26 KiB
		
	
	
	
		
			Ruby
		
	
	
	
|  | # Copyright 2020 Google LLC | ||
|  | # | ||
|  | # Licensed under the Apache License, Version 2.0 (the "License"); | ||
|  | # you may not use this file except in compliance with the License. | ||
|  | # You may obtain a copy of the License at | ||
|  | # | ||
|  | #      http://www.apache.org/licenses/LICENSE-2.0 | ||
|  | # | ||
|  | # Unless required by applicable law or agreed to in writing, software | ||
|  | # distributed under the License is distributed on an "AS IS" BASIS, | ||
|  | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
|  | # See the License for the specific language governing permissions and | ||
|  | # limitations under the License. | ||
|  | 
 | ||
|  | require 'date' | ||
|  | require 'google/apis/core/base_service' | ||
|  | require 'google/apis/core/json_representation' | ||
|  | require 'google/apis/core/hashable' | ||
|  | require 'google/apis/errors' | ||
|  | 
 | ||
|  | module Google | ||
|  |   module Apis | ||
|  |     module PlayablelocationsV3 | ||
|  |        | ||
|  |       # Encapsulates impression event details. | ||
|  |       class GoogleMapsPlayablelocationsV3Impression | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # An arbitrary, developer-defined type identifier for each type of game object | ||
|  |         # used in your game. Since players interact with differ types of game objects in | ||
|  |         # different ways, this field allows you to segregate impression data by type for | ||
|  |         # analysis. You should assign a unique `game_object_type` ID to represent a | ||
|  |         # distinct type of game object in your game. For example, 1=monster location, 2= | ||
|  |         # powerup location. | ||
|  |         # Corresponds to the JSON property `gameObjectType` | ||
|  |         # @return [Fixnum] | ||
|  |         attr_accessor :game_object_type | ||
|  |        | ||
|  |         # Required. The type of impression event. | ||
|  |         # Corresponds to the JSON property `impressionType` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :impression_type | ||
|  |        | ||
|  |         # Required. The name of the playable location. | ||
|  |         # Corresponds to the JSON property `locationName` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :location_name | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @game_object_type = args[:game_object_type] if args.key?(:game_object_type) | ||
|  |           @impression_type = args[:impression_type] if args.key?(:impression_type) | ||
|  |           @location_name = args[:location_name] if args.key?(:location_name) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # A request for logging impressions. | ||
|  |       class GoogleMapsPlayablelocationsV3LogImpressionsRequest | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Client information. | ||
|  |         # Corresponds to the JSON property `clientInfo` | ||
|  |         # @return [Google::Apis::PlayablelocationsV3::GoogleMapsUnityClientInfo] | ||
|  |         attr_accessor :client_info | ||
|  |        | ||
|  |         # Required. Impression event details. The maximum number of impression reports | ||
|  |         # that you can log at once is 50. | ||
|  |         # Corresponds to the JSON property `impressions` | ||
|  |         # @return [Array<Google::Apis::PlayablelocationsV3::GoogleMapsPlayablelocationsV3Impression>] | ||
|  |         attr_accessor :impressions | ||
|  |        | ||
|  |         # Required. A string that uniquely identifies the log impressions request. This | ||
|  |         # allows you to detect duplicate requests. We recommend that you use UUIDs for | ||
|  |         # this value. The value must not exceed 50 characters. You should reuse the ` | ||
|  |         # request_id` only when retrying a request in case of failure. In this case, the | ||
|  |         # request must be identical to the one that failed. | ||
|  |         # Corresponds to the JSON property `requestId` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :request_id | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @client_info = args[:client_info] if args.key?(:client_info) | ||
|  |           @impressions = args[:impressions] if args.key?(:impressions) | ||
|  |           @request_id = args[:request_id] if args.key?(:request_id) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # A response for the LogImpressions method. This method returns no data upon | ||
|  |       # success. | ||
|  |       class GoogleMapsPlayablelocationsV3LogImpressionsResponse | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # A request for logging your player's bad location reports. | ||
|  |       class GoogleMapsPlayablelocationsV3LogPlayerReportsRequest | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Client information. | ||
|  |         # Corresponds to the JSON property `clientInfo` | ||
|  |         # @return [Google::Apis::PlayablelocationsV3::GoogleMapsUnityClientInfo] | ||
|  |         attr_accessor :client_info | ||
|  |        | ||
|  |         # Required. Player reports. The maximum number of player reports that you can | ||
|  |         # log at once is 50. | ||
|  |         # Corresponds to the JSON property `playerReports` | ||
|  |         # @return [Array<Google::Apis::PlayablelocationsV3::GoogleMapsPlayablelocationsV3PlayerReport>] | ||
|  |         attr_accessor :player_reports | ||
|  |        | ||
|  |         # Required. A string that uniquely identifies the log player reports request. | ||
|  |         # This allows you to detect duplicate requests. We recommend that you use UUIDs | ||
|  |         # for this value. The value must not exceed 50 characters. You should reuse the ` | ||
|  |         # request_id` only when retrying a request in the case of a failure. In that | ||
|  |         # case, the request must be identical to the one that failed. | ||
|  |         # Corresponds to the JSON property `requestId` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :request_id | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @client_info = args[:client_info] if args.key?(:client_info) | ||
|  |           @player_reports = args[:player_reports] if args.key?(:player_reports) | ||
|  |           @request_id = args[:request_id] if args.key?(:request_id) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # A response for the LogPlayerReports method. This method returns no data upon | ||
|  |       # success. | ||
|  |       class GoogleMapsPlayablelocationsV3LogPlayerReportsResponse | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # A report submitted by a player about a playable location that is considered | ||
|  |       # inappropriate for use in the game. | ||
|  |       class GoogleMapsPlayablelocationsV3PlayerReport | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Language code (in BCP-47 format) indicating the language of the freeform | ||
|  |         # description provided in `reason_details`. Examples are "en", "en-US" or "ja- | ||
|  |         # Latn". For more information, see http://www.unicode.org/reports/tr35/# | ||
|  |         # Unicode_locale_identifier. | ||
|  |         # Corresponds to the JSON property `languageCode` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :language_code | ||
|  |        | ||
|  |         # Required. The name of the playable location. | ||
|  |         # Corresponds to the JSON property `locationName` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :location_name | ||
|  |        | ||
|  |         # Required. A free-form description detailing why the playable location is | ||
|  |         # considered bad. | ||
|  |         # Corresponds to the JSON property `reasonDetails` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :reason_details | ||
|  |        | ||
|  |         # Required. One or more reasons why this playable location is considered bad. | ||
|  |         # Corresponds to the JSON property `reasons` | ||
|  |         # @return [Array<String>] | ||
|  |         attr_accessor :reasons | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @language_code = args[:language_code] if args.key?(:language_code) | ||
|  |           @location_name = args[:location_name] if args.key?(:location_name) | ||
|  |           @reason_details = args[:reason_details] if args.key?(:reason_details) | ||
|  |           @reasons = args[:reasons] if args.key?(:reasons) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Specifies the area to search for playable locations. | ||
|  |       class GoogleMapsPlayablelocationsV3SampleAreaFilter | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Required. The S2 cell ID of the area you want. This must be between cell level | ||
|  |         # 11 and 14 (inclusive). S2 cells are 64-bit integers that identify areas on the | ||
|  |         # Earth. They are hierarchical, and can therefore be used for spatial indexing. | ||
|  |         # The S2 geometry library is available in a number of languages: * [C++](https:// | ||
|  |         # github.com/google/s2geometry) * [Java](https://github.com/google/s2-geometry- | ||
|  |         # library-java) * [Go](https://github.com/golang/geo) * [Python](https://github. | ||
|  |         # com/google/s2geometry/tree/master/src/python) | ||
|  |         # Corresponds to the JSON property `s2CellId` | ||
|  |         # @return [Fixnum] | ||
|  |         attr_accessor :s2_cell_id | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @s2_cell_id = args[:s2_cell_id] if args.key?(:s2_cell_id) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Encapsulates a filter criterion for searching for a set of playable locations. | ||
|  |       class GoogleMapsPlayablelocationsV3SampleCriterion | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Specifies which `PlayableLocation` fields are returned. `name` (which is used | ||
|  |         # for logging impressions), `center_point` and `place_id` (or `plus_code`) are | ||
|  |         # always returned. The following fields are omitted unless you specify them here: | ||
|  |         # * snapped_point * types Note: The more fields you include, the more expensive | ||
|  |         # in terms of data and associated latency your query will be. | ||
|  |         # Corresponds to the JSON property `fieldsToReturn` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :fields_to_return | ||
|  |        | ||
|  |         # Specifies the filters to use when searching for playable locations. | ||
|  |         # Corresponds to the JSON property `filter` | ||
|  |         # @return [Google::Apis::PlayablelocationsV3::GoogleMapsPlayablelocationsV3SampleFilter] | ||
|  |         attr_accessor :filter | ||
|  |        | ||
|  |         # Required. An arbitrary, developer-defined identifier of the type of game | ||
|  |         # object that the playable location is used for. This field allows you to | ||
|  |         # specify criteria per game object type when searching for playable locations. | ||
|  |         # You should assign a unique `game_object_type` ID across all `request_criteria` | ||
|  |         # to represent a distinct type of game object. For example, 1=monster location, | ||
|  |         # 2=powerup location. The response contains a map. | ||
|  |         # Corresponds to the JSON property `gameObjectType` | ||
|  |         # @return [Fixnum] | ||
|  |         attr_accessor :game_object_type | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @fields_to_return = args[:fields_to_return] if args.key?(:fields_to_return) | ||
|  |           @filter = args[:filter] if args.key?(:filter) | ||
|  |           @game_object_type = args[:game_object_type] if args.key?(:game_object_type) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Specifies the filters to use when searching for playable locations. | ||
|  |       class GoogleMapsPlayablelocationsV3SampleFilter | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Restricts the set of playable locations to just the [types](/maps/ | ||
|  |         # documentation/gaming/tt/types) that you want. | ||
|  |         # Corresponds to the JSON property `includedTypes` | ||
|  |         # @return [Array<String>] | ||
|  |         attr_accessor :included_types | ||
|  |        | ||
|  |         # Specifies the maximum number of playable locations to return. This value must | ||
|  |         # not be greater than 1000. The default value is 100. Only the top-ranking | ||
|  |         # playable locations are returned. | ||
|  |         # Corresponds to the JSON property `maxLocationCount` | ||
|  |         # @return [Fixnum] | ||
|  |         attr_accessor :max_location_count | ||
|  |        | ||
|  |         # A set of options that specifies the separation between playable locations. | ||
|  |         # Corresponds to the JSON property `spacing` | ||
|  |         # @return [Google::Apis::PlayablelocationsV3::GoogleMapsPlayablelocationsV3SampleSpacingOptions] | ||
|  |         attr_accessor :spacing | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @included_types = args[:included_types] if args.key?(:included_types) | ||
|  |           @max_location_count = args[:max_location_count] if args.key?(:max_location_count) | ||
|  |           @spacing = args[:spacing] if args.key?(:spacing) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # A geographical point suitable for placing game objects in location-based games. | ||
|  |       class GoogleMapsPlayablelocationsV3SamplePlayableLocation | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # An object that represents a latitude/longitude pair. This is expressed as a | ||
|  |         # pair of doubles to represent degrees latitude and degrees longitude. Unless | ||
|  |         # specified otherwise, this must conform to the WGS84 standard. Values must be | ||
|  |         # within normalized ranges. | ||
|  |         # Corresponds to the JSON property `centerPoint` | ||
|  |         # @return [Google::Apis::PlayablelocationsV3::GoogleTypeLatLng] | ||
|  |         attr_accessor :center_point | ||
|  |        | ||
|  |         # Required. The name of this playable location. | ||
|  |         # Corresponds to the JSON property `name` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :name | ||
|  |        | ||
|  |         # A [place ID] (https://developers.google.com/places/place-id) | ||
|  |         # Corresponds to the JSON property `placeId` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :place_id | ||
|  |        | ||
|  |         # A [plus code] (http://openlocationcode.com) | ||
|  |         # Corresponds to the JSON property `plusCode` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :plus_code | ||
|  |        | ||
|  |         # An object that represents a latitude/longitude pair. This is expressed as a | ||
|  |         # pair of doubles to represent degrees latitude and degrees longitude. Unless | ||
|  |         # specified otherwise, this must conform to the WGS84 standard. Values must be | ||
|  |         # within normalized ranges. | ||
|  |         # Corresponds to the JSON property `snappedPoint` | ||
|  |         # @return [Google::Apis::PlayablelocationsV3::GoogleTypeLatLng] | ||
|  |         attr_accessor :snapped_point | ||
|  |        | ||
|  |         # A collection of [Playable Location Types](/maps/documentation/gaming/tt/types) | ||
|  |         # for this playable location. The first type in the collection is the primary | ||
|  |         # type. Type information might not be available for all playable locations. | ||
|  |         # Corresponds to the JSON property `types` | ||
|  |         # @return [Array<String>] | ||
|  |         attr_accessor :types | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @center_point = args[:center_point] if args.key?(:center_point) | ||
|  |           @name = args[:name] if args.key?(:name) | ||
|  |           @place_id = args[:place_id] if args.key?(:place_id) | ||
|  |           @plus_code = args[:plus_code] if args.key?(:plus_code) | ||
|  |           @snapped_point = args[:snapped_point] if args.key?(:snapped_point) | ||
|  |           @types = args[:types] if args.key?(:types) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # A list of PlayableLocation objects that satisfies a single Criterion. | ||
|  |       class GoogleMapsPlayablelocationsV3SamplePlayableLocationList | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # A list of playable locations for this game object type. | ||
|  |         # Corresponds to the JSON property `locations` | ||
|  |         # @return [Array<Google::Apis::PlayablelocationsV3::GoogleMapsPlayablelocationsV3SamplePlayableLocation>] | ||
|  |         attr_accessor :locations | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @locations = args[:locations] if args.key?(:locations) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Life of a query: - When a game starts in a new location, your game server | ||
|  |       # issues a SamplePlayableLocations request. The request specifies the S2 cell, | ||
|  |       # and contains one or more "criteria" for filtering: - Criterion 0: i locations | ||
|  |       # for long-lived bases, or level 0 monsters, or... - Criterion 1: j locations | ||
|  |       # for short-lived bases, or level 1 monsters, ... - Criterion 2: k locations for | ||
|  |       # random objects. - etc (up to 5 criterion may be specified). ` | ||
|  |       # PlayableLocationList` will then contain mutually exclusive lists of ` | ||
|  |       # PlayableLocation` objects that satisfy each of the criteria. Think of it as a | ||
|  |       # collection of real-world locations that you can then associate with your game | ||
|  |       # state. Note: These points are impermanent in nature. E.g, parks can close, and | ||
|  |       # places can be removed. The response specifies how long you can expect the | ||
|  |       # playable locations to last. Once they expire, you should query the ` | ||
|  |       # samplePlayableLocations` API again to get a fresh view of the real world. | ||
|  |       class GoogleMapsPlayablelocationsV3SamplePlayableLocationsRequest | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Specifies the area to search for playable locations. | ||
|  |         # Corresponds to the JSON property `areaFilter` | ||
|  |         # @return [Google::Apis::PlayablelocationsV3::GoogleMapsPlayablelocationsV3SampleAreaFilter] | ||
|  |         attr_accessor :area_filter | ||
|  |        | ||
|  |         # Required. Specifies one or more (up to 5) criteria for filtering the returned | ||
|  |         # playable locations. | ||
|  |         # Corresponds to the JSON property `criteria` | ||
|  |         # @return [Array<Google::Apis::PlayablelocationsV3::GoogleMapsPlayablelocationsV3SampleCriterion>] | ||
|  |         attr_accessor :criteria | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @area_filter = args[:area_filter] if args.key?(:area_filter) | ||
|  |           @criteria = args[:criteria] if args.key?(:criteria) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Response for the SamplePlayableLocations method. | ||
|  |       class GoogleMapsPlayablelocationsV3SamplePlayableLocationsResponse | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Each PlayableLocation object corresponds to a game_object_type specified in | ||
|  |         # the request. | ||
|  |         # Corresponds to the JSON property `locationsPerGameObjectType` | ||
|  |         # @return [Hash<String,Google::Apis::PlayablelocationsV3::GoogleMapsPlayablelocationsV3SamplePlayableLocationList>] | ||
|  |         attr_accessor :locations_per_game_object_type | ||
|  |        | ||
|  |         # Required. Specifies the "time-to-live" for the set of playable locations. You | ||
|  |         # can use this value to determine how long to cache the set of playable | ||
|  |         # locations. After this length of time, your back-end game server should issue a | ||
|  |         # new SamplePlayableLocations request to get a fresh set of playable locations ( | ||
|  |         # because for example, they might have been removed, a park might have closed | ||
|  |         # for the day, a business might have closed permanently). | ||
|  |         # Corresponds to the JSON property `ttl` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :ttl | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @locations_per_game_object_type = args[:locations_per_game_object_type] if args.key?(:locations_per_game_object_type) | ||
|  |           @ttl = args[:ttl] if args.key?(:ttl) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # A set of options that specifies the separation between playable locations. | ||
|  |       class GoogleMapsPlayablelocationsV3SampleSpacingOptions | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # Required. The minimum spacing between any two playable locations, measured in | ||
|  |         # meters. The minimum value is 30. The maximum value is 1000. Inputs will be | ||
|  |         # rounded up to the next 10 meter interval. The default value is 200m. Set this | ||
|  |         # field to remove tight clusters of playable locations. Note: The spacing is a | ||
|  |         # greedy algorithm. It optimizes for selecting the highest ranking locations | ||
|  |         # first, not to maximize the number of locations selected. Consider the | ||
|  |         # following scenario: * Rank: A: 2, B: 1, C: 3. * Distance: A--200m--B--200m--C | ||
|  |         # If spacing=250, it will pick the highest ranked location [B], not [A, C]. Note: | ||
|  |         # Spacing works within the game object type itself, as well as the previous | ||
|  |         # ones. Suppose three game object types, each with the following spacing: * X: | ||
|  |         # 400m, Y: undefined, Z: 200m. 1. Add locations for X, within 400m of each other. | ||
|  |         # 2. Add locations for Y, without any spacing. 3. Finally, add locations for Z | ||
|  |         # within 200m of each other as well X and Y. The distance diagram between those | ||
|  |         # locations end up as: * From->To. * X->X: 400m * Y->X, Y->Y: unspecified. * Z-> | ||
|  |         # X, Z->Y, Z->Z: 200m. | ||
|  |         # Corresponds to the JSON property `minSpacingMeters` | ||
|  |         # @return [Float] | ||
|  |         attr_accessor :min_spacing_meters | ||
|  |        | ||
|  |         # Specifies whether the minimum spacing constraint applies to the center-point | ||
|  |         # or to the snapped point of playable locations. The default value is ` | ||
|  |         # CENTER_POINT`. If a snapped point is not available for a playable location, | ||
|  |         # its center-point is used instead. Set this to the point type used in your game. | ||
|  |         # Corresponds to the JSON property `pointType` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :point_type | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @min_spacing_meters = args[:min_spacing_meters] if args.key?(:min_spacing_meters) | ||
|  |           @point_type = args[:point_type] if args.key?(:point_type) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # Client information. | ||
|  |       class GoogleMapsUnityClientInfo | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # API client name and version. For example, the SDK calling the API. The exact | ||
|  |         # format is up to the client. | ||
|  |         # Corresponds to the JSON property `apiClient` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :api_client | ||
|  |        | ||
|  |         # Application ID, such as the package name on Android and the bundle identifier | ||
|  |         # on iOS platforms. | ||
|  |         # Corresponds to the JSON property `applicationId` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :application_id | ||
|  |        | ||
|  |         # Application version number, such as "1.2.3". The exact format is application- | ||
|  |         # dependent. | ||
|  |         # Corresponds to the JSON property `applicationVersion` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :application_version | ||
|  |        | ||
|  |         # Device model as reported by the device. The exact format is platform-dependent. | ||
|  |         # Corresponds to the JSON property `deviceModel` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :device_model | ||
|  |        | ||
|  |         # Language code (in BCP-47 format) indicating the UI language of the client. | ||
|  |         # Examples are "en", "en-US" or "ja-Latn". For more information, see http://www. | ||
|  |         # unicode.org/reports/tr35/#Unicode_locale_identifier. | ||
|  |         # Corresponds to the JSON property `languageCode` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :language_code | ||
|  |        | ||
|  |         # Operating system name and version as reported by the OS. For example, "Mac OS | ||
|  |         # X 10.10.4". The exact format is platform-dependent. | ||
|  |         # Corresponds to the JSON property `operatingSystem` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :operating_system | ||
|  |        | ||
|  |         # Build number/version of the operating system. e.g., the contents of android.os. | ||
|  |         # Build.ID in Android, or the contents of sysctl "kern.osversion" in iOS. | ||
|  |         # Corresponds to the JSON property `operatingSystemBuild` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :operating_system_build | ||
|  |        | ||
|  |         # Platform where the application is running. | ||
|  |         # Corresponds to the JSON property `platform` | ||
|  |         # @return [String] | ||
|  |         attr_accessor :platform | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @api_client = args[:api_client] if args.key?(:api_client) | ||
|  |           @application_id = args[:application_id] if args.key?(:application_id) | ||
|  |           @application_version = args[:application_version] if args.key?(:application_version) | ||
|  |           @device_model = args[:device_model] if args.key?(:device_model) | ||
|  |           @language_code = args[:language_code] if args.key?(:language_code) | ||
|  |           @operating_system = args[:operating_system] if args.key?(:operating_system) | ||
|  |           @operating_system_build = args[:operating_system_build] if args.key?(:operating_system_build) | ||
|  |           @platform = args[:platform] if args.key?(:platform) | ||
|  |         end | ||
|  |       end | ||
|  |        | ||
|  |       # An object that represents a latitude/longitude pair. This is expressed as a | ||
|  |       # pair of doubles to represent degrees latitude and degrees longitude. Unless | ||
|  |       # specified otherwise, this must conform to the WGS84 standard. Values must be | ||
|  |       # within normalized ranges. | ||
|  |       class GoogleTypeLatLng | ||
|  |         include Google::Apis::Core::Hashable | ||
|  |        | ||
|  |         # The latitude in degrees. It must be in the range [-90.0, +90.0]. | ||
|  |         # Corresponds to the JSON property `latitude` | ||
|  |         # @return [Float] | ||
|  |         attr_accessor :latitude | ||
|  |        | ||
|  |         # The longitude in degrees. It must be in the range [-180.0, +180.0]. | ||
|  |         # Corresponds to the JSON property `longitude` | ||
|  |         # @return [Float] | ||
|  |         attr_accessor :longitude | ||
|  |        | ||
|  |         def initialize(**args) | ||
|  |            update!(**args) | ||
|  |         end | ||
|  |        | ||
|  |         # Update properties of this object | ||
|  |         def update!(**args) | ||
|  |           @latitude = args[:latitude] if args.key?(:latitude) | ||
|  |           @longitude = args[:longitude] if args.key?(:longitude) | ||
|  |         end | ||
|  |       end | ||
|  |     end | ||
|  |   end | ||
|  | end |