Esempio n. 1
0
 private void writeSpellTable(StreamWriter writer, MappedDB mappedDb)
 {
     writer.WriteLine(
         "# UID, Name, Type, CardId, PriceA, PriceB, PriceC, " +
         "Info, Mana, Loadup, Unknown, MissileEffect, ImpactEffect" +
         "Damage, Behavior");
     foreach (SpellRow spell in mappedDb.Spells)
     {
         writeCells(writer,
                    spell.Uid,
                    spell.Name,
                    spell.Type,
                    spell.CardId,
                    spell.PriceA,
                    spell.PriceB,
                    spell.PriceC,
                    spell.Info,
                    spell.Mana,
                    spell.Loadup,
                    spell.Unknown,
                    spell.MissileEffect,
                    spell.ImpactEffect,
                    spell.Damage,
                    spell.Behavior);
     }
 }
Esempio n. 2
0
        private static TagContainer SetupDIContainer(Options options, out GraphicsDevice graphicsDevice)
        {
            var diContainer = new TagContainer();

            diContainer.AddTag(options);

            var graphicsDeviceOptions = new GraphicsDeviceOptions()
            {
                Debug                             = true,
                HasMainSwapchain                  = false,
                PreferDepthRangeZeroToOne         = true,
                PreferStandardClipSpaceYDirection = true,
            };

            graphicsDevice = options.Backend switch
            {
                ZZMapsGraphicsBackend.Vulkan => GraphicsDevice.CreateVulkan(graphicsDeviceOptions),
                ZZMapsGraphicsBackend.D3D11 => GraphicsDevice.CreateD3D11(graphicsDeviceOptions),
                _ => throw new InvalidOperationException($"Unknown backend {options.Backend}")
            };
            diContainer.AddTag(graphicsDevice);
            diContainer.AddTag(graphicsDevice.ResourceFactory);

            var pipelineCollection = new PipelineCollection(graphicsDevice);

            pipelineCollection.AddShaderResourceAssemblyOf <zzre.materials.ModelStandardMaterial>();
            pipelineCollection.AddShaderResourceAssemblyOf <MapStandardMaterial>();
            diContainer.AddTag(pipelineCollection);

            var resourcePools = options.ResourcePath
                                .Select(dirInfo => new FileResourcePool(dirInfo.FullName) as IResourcePool);

            resourcePools = resourcePools.Concat(options.PAK
                                                 .Select(fileInfo => new PAKParallelResourcePool(fileInfo.FullName)));
            var combinedResourcePool = new CombinedResourcePool(resourcePools.Reverse().ToArray());

            diContainer.AddTag <IResourcePool>(combinedResourcePool);

            diContainer.AddTag <IAssetLoader <Texture> >(new RefCachedAssetLoader <Texture>(
                                                             new TextureAssetLoader(diContainer)));
            diContainer.AddTag <IAssetLoader <ClumpBuffers> >(new RefCachedAssetLoader <ClumpBuffers>(
                                                                  new ClumpAssetLoader(diContainer)));

            var mappedDb = new MappedDB();

            for (int i = 1; i <= 6; i++)
            {
                using var tableStream = combinedResourcePool.FindAndOpen($"Data/_fb0x0{i}.fbs");
                if (tableStream == null)
                {
                    continue;
                }
                var table = new Table();
                table.Read(tableStream);
                mappedDb.AddTable(table);
            }
            diContainer.AddTag(mappedDb);

            return(diContainer);
        }
Esempio n. 3
0
        public void convert(string name, ParameterParser args, Stream from, Stream to)
        {
            var table = new Table();

            table.Read(from);
            var mappedDb = new MappedDB();

            mappedDb.AddTable(table);

            StreamWriter writer = new StreamWriter(to,
                                                   Encoding.UTF8, 1024, true);

            switch ((ModuleType)table.rows.First().Key.Module)
            {
            default:
            case ModuleType.Unknown: writeUnknownTable(writer, table); break;

            case ModuleType.Dialog: writeDialogTable(writer, mappedDb); break;

            case ModuleType.Fairy: writeFairyTable(writer, mappedDb); break;

            case ModuleType.Item: writeItemTable(writer, mappedDb); break;

            case ModuleType.Npc: writeNpcTable(writer, mappedDb); break;

            case ModuleType.Spell: writeSpellTable(writer, mappedDb); break;

            case ModuleType.Text: writeTextTable(writer, mappedDb); break;
            }
        }
Esempio n. 4
0
        public SceneMetadataBuilder(ITagContainer diContainer)
        {
            var options = diContainer.GetTag <Options>();

            mappedDb   = diContainer.GetTag <MappedDB>();
            background = options.Background;
        }
Esempio n. 5
0
 private void writeTextTable(StreamWriter writer, MappedDB mappedDb)
 {
     writer.WriteLine("# UID, Text, Group, Define");
     foreach (TextRow text in mappedDb.Texts)
     {
         writeCells(writer,
                    text.Uid,
                    text.Text,
                    text.Group,
                    text.Define);
     }
 }
Esempio n. 6
0
 private void writeDialogTable(StreamWriter writer, MappedDB mappedDb)
 {
     writer.WriteLine("# UID, Text, Npc, Voice");
     foreach (DialogRow dialog in mappedDb.Dialogs)
     {
         writeCells(writer,
                    dialog.Uid,
                    dialog.Text,
                    dialog.Npc,
                    dialog.Voice);
     }
 }
Esempio n. 7
0
 public DialogScript(ITagContainer diContainer) : base(diContainer, CreateEntityContainer)
 {
     World.SetMaxCapacity <components.DialogState>(1);
     db       = diContainer.GetTag <MappedDB>();
     ui       = diContainer.GetTag <UI>();
     scene    = diContainer.GetTag <Scene>();
     game     = diContainer.GetTag <Game>();
     savegame = diContainer.GetTag <zzio.Savegame>();
     recorder = diContainer.GetTag <EntityCommandRecorder>();
     startDialogDisposable = World.Subscribe <messages.StartDialog>(HandleStartDialog);
     removedDisposable     = World.SubscribeComponentRemoved <components.DialogState>(HandleDialogStateRemoved);
 }
Esempio n. 8
0
 private void writeItemTable(StreamWriter writer, MappedDB mappedDb)
 {
     writer.WriteLine(
         "# UID, Name, CardId, Info, Special, Script, Unknown");
     foreach (ItemRow item in mappedDb.Items)
     {
         writeCells(writer,
                    item.Uid,
                    item.Name,
                    item.CardId,
                    item.Info,
                    item.Special,
                    item.Script,
                    item.Unknown);
     }
 }
Esempio n. 9
0
 private void writeNpcTable(StreamWriter writer, MappedDB mappedDb)
 {
     writer.WriteLine(
         "# UID, Name, Script1, Script2, Script3, Script4, Script5, Unknown");
     foreach (NpcRow npc in mappedDb.Npcs)
     {
         writeCells(writer,
                    npc.Uid,
                    npc.Name,
                    npc.TriggerScript,
                    npc.InitScript,
                    npc.UpdateScript,
                    npc.DefeatedScript,
                    npc.VictoriousScript,
                    npc.InternalName);
     }
 }
Esempio n. 10
0
 private void writeFairyTable(StreamWriter writer, MappedDB mappedDb)
 {
     writer.WriteLine(
         "# UID, Mesh, Name, Class0, CardId, Unknown, Level0, Level1, " +
         "Level2, Level3, Level4, Level5, Level6, Level7, Level8, " +
         "Level9, Info, MHP, EvolCId, EvolVar, MovSpeed, JumpPower, " +
         "CriticalHit, Sphere, Glow, LevelUp, Voice, Class1");
     foreach (FairyRow fairy in mappedDb.Fairies)
     {
         writeCells(writer,
                    fairy.Uid,
                    fairy.Mesh,
                    fairy.Name,
                    fairy.Class0,
                    fairy.CardId,
                    fairy.Unknown,
                    fairy.Level0,
                    fairy.Level1,
                    fairy.Level2,
                    fairy.Level3,
                    fairy.Level4,
                    fairy.Level5,
                    fairy.Level6,
                    fairy.Level7,
                    fairy.Level8,
                    fairy.Level9,
                    fairy.Info,
                    fairy.MHP,
                    fairy.EvolCId,
                    fairy.EvolVar,
                    fairy.MovSpeed,
                    fairy.JumpPower,
                    fairy.CriticalHit,
                    fairy.Sphere,
                    fairy.Glow,
                    fairy.LevelUp,
                    fairy.Unknown24,
                    fairy.WingSound);
     }
 }
Esempio n. 11
0
 public SpellRow(MappedDB mappedDB, Row row) : base(ModuleType.Spell, mappedDB, row)
 {
 }
Esempio n. 12
0
 public DialogRow(MappedDB mappedDB, Row row) : base(ModuleType.Dialog, mappedDB, row)
 {
 }
Esempio n. 13
0
 public TextRow(MappedDB mappedDB, Row row) : base(ModuleType.Text, mappedDB, row)
 {
 }
Esempio n. 14
0
 public NpcRow(MappedDB mappedDB, Row row) : base(ModuleType.Npc, mappedDB, row)
 {
 }
Esempio n. 15
0
 public Tooltip(ITagContainer diContainer) : base(diContainer.GetTag <DefaultEcs.World>(), CreateEntityContainer, useBuffer: false)
 {
     mappedDB            = diContainer.GetTag <MappedDB>();
     addedSubscription   = World.SubscribeComponentAdded <components.ui.Hovered>(HandleAddedComponent);
     removedSubscription = World.SubscribeComponentRemoved <components.ui.Hovered>(HandleRemovedComponent);
 }
Esempio n. 16
0
 public ItemRow(MappedDB mappedDB, Row row) : base(ModuleType.Item, mappedDB, row)
 {
 }