Building Interaction

Back
Tags:
Building
Example of how to handle interaction events with buildings.
Requirement: Tileset Control, Building Manager
Usage instructions:
Add this script to map GameObject, start the scene and click on the building.
BuildingClickExample.cs
/*         INFINITY CODE         */
/*   https://infinity-code.com   */

using OnlineMaps;
using UnityEngine;

namespace OnlineMapsExamples
{
    /// <summary>
    /// Example of how to handle interaction events with buildings.
    /// </summary>
    [AddComponentMenu(Utils.ExampleMenuPath + "BuildingClickExample")]
    public class BuildingClickExample : MonoBehaviour
    {
        /// <summary>
        /// Reference to the building manager. If not specified, the current instance will be used.
        /// </summary>
        public Buildings buildings;

        /// <summary>
        /// This method is called when the script starts
        /// </summary>
        private void Start()
        {
            // If the building manager is not specified, get the current instance.
            if (!buildings && !(buildings = Buildings.instance))
            {
                Debug.LogError("Required Buildings component not found.");
                return;
            }
            
            // Subscribe to the building creation event
            buildings.OnBuildingCreated += OnBuildingCreated;
        }

        /// <summary>
        /// This method is called when click on building
        /// </summary>
        /// <param name="building">The building on which clicked</param>
        private void OnBuildingClick(BuildingBase building)
        {
            Debug.Log("click: " + building.id);
        }

        /// <summary>
        /// This method is called when each building is created
        /// </summary>
        /// <param name="building">The building that was created</param>
        private void OnBuildingCreated(BuildingBase building)
        {
            // Subscribe to interaction events
            building.OnPress += OnBuildingPress;
            building.OnRelease += OnBuildingRelease;
            building.OnClick += OnBuildingClick;
        }

        /// <summary>
        /// This method is called when press on building
        /// </summary>
        /// <param name="building">The building on which pressed</param>
        private void OnBuildingPress(BuildingBase building)
        {
            Debug.Log("Press: " + building.id);
        }

        /// <summary>
        /// This method is called when release on building
        /// </summary>
        /// <param name="building">The building on which released</param>
        private void OnBuildingRelease(BuildingBase building)
        {
            Debug.Log("Release: " + building.id);
        }
    }
}