05 Lists

This example shows you how to use lists in a blackboard.

These files can be found in the /Examples/[example] and /Blackboards/Examples folders.

ListBlackboard.cs

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using CrashKonijn.Blackboard.Contracts;
using UnityEngine;

namespace BlackboardsLite
{
    public partial class ListBlackboard : BlackboardBehaviour
    {
        private int startHealth = 100;
        
        // Lists can be of any type
        private List<int> changes;
        
        // This is a computed property, showing health being equal to startHealth plus the sum of all changes.
        private static int health(Signals.StartHealth startHealth, Signals.Changes changes) => startHealth.Value + changes.Value.Sum(x => x);
    }
}

ListsHealthBehaviour.cs

using BlackboardsLite;
using CrashKonijn.Blackboard.Contracts;
using UnityEngine;

namespace CrashKonijn.BlackboardPro.Examples._05_lists
{
    [RequireComponent(typeof(ListBlackboard))]
    public class ListsHealthBehaviour : MonoBehaviour
    {
        /* Simple hack to show a button in the editor */
        [Header("Removes 10 health.")]
        [Button(nameof(DoDamage))]
        public string doDamageButton;
        
        /* Simple hack to show a button in the editor */
        [Header("Adds 10 health")]
        [Button(nameof(Heal))]
        public string healButton;
        
        /* Simple hack to show a button in the editor */
        [Header("Clears the changes list")]
        [Button(nameof(Clear))]
        public string clearButton;
        
        private ListBlackboard blackboard;
        public ListBlackboard Blackboard
        {
            get
            {
                if (this.blackboard == null)
                {
                    this.blackboard = this.GetComponent<ListBlackboard>();
                }

                return this.blackboard;
            }
        }
        
        public void DoDamage()
        {
            this.Blackboard.Changes.Add(-10);
        }
        
        public void Heal()
        {
            this.Blackboard.Changes.Add(10);
        }
        
        public void Clear()
        {
            this.Blackboard.Changes.Clear();
        }
    }
}

Last updated