Esempio n. 1
0
        public void Join(Player player, Coords system)
        {
            rwl.AcquireReaderLock(-1);
            string systemId = system.ToString();

            try {
                if (!Systems.ContainsKey(systemId))
                {
                    var lc = rwl.UpgradeToWriterLock(-1);
                    try {
                        if (!Systems.ContainsKey(systemId))
                        {
                            Console.WriteLine("Creating System Area {0}", systemId);
                            StarSystemAreaManager_Entry obj = new StarSystemAreaManager_Entry(system);
                            Systems.Add(systemId, obj);
                            obj.Join(player);
                            CreateNPCs(obj);
                        }
                    } finally {
                        rwl.DowngradeFromWriterLock(ref lc);
                    }
                }
                else
                {
                    Systems[systemId].Join(player);
                }
            } finally {
                rwl.ReleaseReaderLock();
            }
        }
Esempio n. 2
0
        public void Leave(Player player, Coords system)
        {
            rwl.AcquireReaderLock(-1);
            string systemId = system.ToString();

            try {
                if (Systems.ContainsKey(systemId))
                {
                    var lc = rwl.UpgradeToWriterLock(-1);
                    try {
                        if (Systems.ContainsKey(systemId))
                        {
                            StarSystemAreaManager_Entry obj = Systems[systemId];
                            obj.Leave(player);
                        }
                    } finally {
                        rwl.DowngradeFromWriterLock(ref lc);
                    }
                }
            } finally {
                rwl.ReleaseReaderLock();
            }
        }
Esempio n. 3
0
 private void CreateNPCs(StarSystemAreaManager_Entry area)
 {
     Pirate p = new Pirate(area.Coords);
 }