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(); }
public static string GetAddonId(Api.Addon addon) { foreach (var item in AddonSystem.GetAddons()) { if (item.Key.Object == addon) { return(item.Value); } } return(string.Empty); }
public static CampaignInfo GetCampaign(Assembly source) { foreach (var assembly in AddonSystem.GetAssemblies()) { if (assembly.Key.Object == source) { return(GetCampaignByGuid(assembly.Value)); } } return(null); }
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); } } }); }
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); }
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(); }