48 lines
		
	
	
		
			764 B
		
	
	
	
		
			C#
		
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			764 B
		
	
	
	
		
			C#
		
	
	
	
 | 
						|
using System.Diagnostics;
 | 
						|
using System.Collections;
 | 
						|
using System.Collections.Generic;
 | 
						|
using System;
 | 
						|
using Godot;
 | 
						|
 | 
						|
 | 
						|
namespace Rokojori
 | 
						|
{  
 | 
						|
  public class MapList<K,V>:Map<K,List<V>>
 | 
						|
  {
 | 
						|
    public void ForEach( Action<K,List<V>> callback )
 | 
						|
    {
 | 
						|
      foreach ( var vk in this )
 | 
						|
      {
 | 
						|
        callback( vk.Key, vk.Value );
 | 
						|
      }
 | 
						|
    }
 | 
						|
 | 
						|
    public void Add( K key, V value )
 | 
						|
    {
 | 
						|
      if ( ! ContainsKey( key ) )
 | 
						|
      {
 | 
						|
        this[ key ] = new List<V>();
 | 
						|
      }
 | 
						|
 | 
						|
      this[ key ].Add( value );
 | 
						|
    }
 | 
						|
 | 
						|
    public void Remove( K key, V value )
 | 
						|
    {
 | 
						|
      if ( ! ContainsKey( key ) )
 | 
						|
      {
 | 
						|
        return;
 | 
						|
      }
 | 
						|
 | 
						|
      var list = this[ key ];
 | 
						|
 | 
						|
      list.Remove( value );
 | 
						|
 | 
						|
      if ( list.Count == 0 )
 | 
						|
      {
 | 
						|
        Remove( key );
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }
 | 
						|
} |