コード例 #1
0
        internal static void LoadCampaigns()
        {
            PreloaderSystem.PrepareCampaigns();
            string campaign_root = Variables.CampaignsDataFolder();

            foreach (var campaign_directory in Directory.GetDirectories(campaign_root))
            {
                string          campaign_json = $"{campaign_directory}/campaign.json".NormPath(true);
                Models.Campaign campaign      = Models.Campaign.FromFile(campaign_json);
                if (campaign && campaign.Validate(campaign_directory))
                {
                    CampaignInfo campaign_info = new CampaignInfo(campaign_directory.NormPath(false), campaign);
                    foreach (var level in campaign.levels)
                    {
                        level.file = new FileInfo(Path.Combine(campaign_directory, level.file)).FullName;
                    }

                    foreach (var addon in campaign.addons)
                    {
                        addon.module = new FileInfo(Path.Combine(campaign_directory, addon.module)).FullName;
                        for (int i = 0; i < addon.dependencies.Count; i++)
                        {
                            addon.dependencies[i] = new FileInfo(Path.Combine(campaign_directory, addon.dependencies[i])).FullName;
                        }
                    }
                    AddonSystem.RegisterCampaign(campaign_info);
                    Campaigns.Add(campaign_info);
                }
            }
            AddonSystem.LoadAddons();
            LevelEditor.Initialize();
        }
コード例 #2
0
 public static string GetAddonId(Api.Addon addon)
 {
     foreach (var item in AddonSystem.GetAddons())
     {
         if (item.Key.Object == addon)
         {
             return(item.Value);
         }
     }
     return(string.Empty);
 }
コード例 #3
0
 public static CampaignInfo GetCampaign(Assembly source)
 {
     foreach (var assembly in AddonSystem.GetAssemblies())
     {
         if (assembly.Key.Object == source)
         {
             return(GetCampaignByGuid(assembly.Value));
         }
     }
     return(null);
 }
コード例 #4
0
        internal static void SubscribeAll()
        {
            Events.Level.PostLoad.Subscribe((data) => CampaignSystem.Current = Utils.Campaign.GetCampaign(Utils.Common.LevelFile));

            Events.Game.LevelLoaded.Subscribe((data) =>
            {
                string level = Utils.Common.LevelFile;
                if (!Utils.Common.IsInLevelEditor() && Utils.Campaign.IsCustomCampaignLevel(level))
                {
                    LockingSystem.UnlockLevel(level);
                    CampaignInfo campaign = Utils.Campaign.GetCampaign(level);

                    Events.Mod.CampaignLevelStarted.Broadcast(new Events.Mod.CampaignLevelStarted.Data(campaign));
                }
            });
            Events.Mod.CampaignLevelStarted.Subscribe((data) => AddonSystem.LevelLoaded(data.campaign));
            Events.Mod.CampaignLoaded.Subscribe((data) =>
            {
                if (CampaignSystem.Current != null)
                {
                    AddonSystem.EnableAddons(CampaignSystem.Current.Id);
                }
                else if (CampaignSystem.Last != null)
                {
                    AddonSystem.DisableAddons(CampaignSystem.Last.Id);
                }
            });

            Events.GameMode.ModeStarted.Subscribe((data) =>
            {
                if (!Utils.Common.IsInLevelEditor() && G.Sys.GameManager_.ModeID_ != GameModeID.MainMenu && Utils.Campaign.IsCustomCampaignLevel(Utils.Common.LevelFile) && Utils.Campaign.CampaignUsesOldLevelIntro(Utils.Common.LevelFile))
                {
                    GameObject title = Resource.LoadPrefabInstance(Constants.Strings.LevelIntroPrefab_Name, true);
                    title.name       = Constants.Strings.LevelIntroPrefabEA_Name;
                    foreach (InterpolateUIPanelAlphaLogic component in title.GetComponentsInChildren <InterpolateUIPanelAlphaLogic>())
                    {
                        Object.DestroyImmediate(component);
                    }
                }
            });
        }
コード例 #5
0
        public static List <Type> GetExportedTypesOfType(Type baseType)
        {
            List <Type> typeList = new List <Type>();

            List <Assembly> assemblies = new List <Assembly>();

            assemblies.AddRange(AddonSystem.GetAssemblies().Select((entry) => entry.Key.Object));
            assemblies.Add(Assembly.GetAssembly(typeof(Entry)));

            foreach (Assembly asm in assemblies)
            {
                foreach (Type type in asm.GetTypes())
                {
                    if (baseType?.IsAssignableFrom(type) == true && type != baseType)
                    {
                        typeList.Add(type);
                    }
                }
            }

            return(typeList);
        }
コード例 #6
0
        protected override void OnLoad()
        {
            Directory.CreateDirectory("fantasia");
            Logger.Init();
            Bind.KeyboardState = KeyboardState;
            VSync = VSyncMode.Off;

            _renderer       = new MainRenderer(Size.X, Size.Y);
            RenderFrequency = _framesPerSec;
            UpdateFrequency = _ticksPerSec;

            try
            {
                //Steamworks.SteamClient.Init(1363820);
            }
            catch (Exception e)
            {
                Logger.LogError(e);
                _quit = true;
            }

            Block.RegisterBlocks();

            AddonSystem.Init();
            AddonSystem.LoadAddonBlocks();

            _renderer.State = RendererState.InGame;

            Panel pan = new Panel(.5, .5);

            pan.Width  = .1;
            pan.Height = .1;

            _renderer.GUIRenderer.GUIElements.Add(pan);

            //List<string> files = Directory.GetFiles("fantasia/textures/", "*.png", SearchOption.AllDirectories).ToList();
            //files.AddRange(Directory.GetFiles("fantasia/addons/Minecraft/textures/", "*.png", SearchOption.AllDirectories).ToList());
            //AtlasCreator.GenAtlas(files.ToList());

            AtlasCreator.GetTexturesAndGenAtlas();
            _renderer.WorldRenderer.BlockAtlas = Texture.LoadAtlas();

            GL.Enable(EnableCap.CullFace);
            GL.CullFace(CullFaceMode.Back);
            GL.Enable(EnableCap.DepthTest);
            GL.ClearColor(.702f, .827f, .871f, 1.0f);

            LocalPlayer = new LocalPlayer();

            //Test Server
            _server = new IntegratedServer(1, LocalPlayer);
            //Set Active World
            _renderer.WorldRenderer.ActiveWorld = _server.World;

            Bind.TryBindKey(Keys.W, "forward");
            Bind.TryBindKey(Keys.S, "backward");
            Bind.TryBindKey(Keys.A, "left");
            Bind.TryBindKey(Keys.D, "right");
            Bind.TryBindKey(Keys.Space, "jump");

            CursorGrabbed = true;

            base.OnLoad();
        }