/**
* Copyright 2019 The Knights Of Unity, created by Pawel Stolarczyk
*
* 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.
*/
using System;
using UnityEngine;
namespace DemoGame.Scripts.Menus
{
///
/// Used to store reference to prefab and a button
/// responsible for its visibility on the scene.
///
[Serializable]
public class MenuModel
{
#region Fields
///
/// Reference to the menu prefab.
///
[SerializeField] private GameObject _menuGameObject = null;
///
/// If true, all menus beneath this one will be hidden.
///
[SerializeField] private bool _hideBeneath = false;
///
/// Reference to monobehaviour implementing interface.
///
private IMenu _menu;
#endregion
#region Properties
///
/// Returns the reference to supplied menu prefab.
///
public IMenu Menu
{
get
{
if (_menu == null && _menuGameObject != null)
{
_menu = _menuGameObject.GetComponent();
if (_menu == null)
{
Debug.LogError("GameObject " + _menuGameObject.name + " does not " +
" have a component implementing IMenu interface.");
}
}
return _menu;
}
}
///
/// Returns button responsible for showing .
///
public bool HideBeneath { get { return _hideBeneath; } }
#endregion
}
}