コード例 #1
0
        public static void ReadMemory(BinaryReader reader)
        {
            LocalEvents.Clear();
            GlobalEvents.Clear();

            int version = reader.ReadInt32();

            switch (version)
            {
                case 1:
                    int keyCount = reader.ReadInt32();
                    for (var i = 0; i < keyCount; i++)
                    {
                        int key = reader.ReadInt32();
                        int valueCount = reader.ReadInt32();
                        var set = new TriggerSet();

                        for (var a = 0; a <= valueCount; a++)
                        {
                            if (reader.ReadBoolean())
                            {
                                set.Add(a);
                            }

                        }

                        LocalEvents.Add(key, set);
                    }

                    int eventCount = reader.ReadInt32();
                    for (var i = 0; i < eventCount; i++)
                        GlobalEvents.Add(reader.ReadInt32());
                    break;
            }
        }
コード例 #2
0
ファイル: SaveSystem.cs プロジェクト: Beodrich/project-Lunen
    public GameData(SetupRouter sr)
    {
        PlayerTeam = new List <PlayerLunen>();
        //Debug.Log("Found " + sr.battleSetup.PlayerLunenTeam.Count + " Lunen!");
        foreach (GameObject monster in sr.battleSetup.PlayerLunenTeam)
        {
            PlayerTeam.Add(GeneratePlayerLunen(monster.GetComponent <Monster>(), sr));
        }
        StorageLunen = sr.storageSystem.StoredLunen;

        InventoryItems = new List <InventoryItem>();
        //Debug.Log("Found " + sr.inventory.listOfItems.Count + " Item" + (sr.inventory.listOfItems.Count == 1 ? "" : "s") + "!");
        for (int i = 0; i < sr.inventory.listOfItems.Count; i++)
        {
            Inventory.InventoryEntry currentItem = sr.inventory.listOfItems[i];
            InventoryItem            a           = new InventoryItem();
            a.itemIndex  = sr.database.ItemToIndex(currentItem.item);
            a.itemAmount = currentItem.amount;
            InventoryItems.Add(a);
        }

        SaveTriggers = new List <TriggerSet>();
        for (int i = 0; i < sr.database.GlobalStoryTriggerList.Count; i++)
        {
            TriggerSet set = new TriggerSet();
            set.setName = sr.database.GlobalStoryTriggerList[i].name;
            foreach (TriggerPart part in sr.database.GlobalStoryTriggerList[i].triggerParts)
            {
                TriggerSave save = new TriggerSave();
                save.triggerTITLE  = part.title;
                save.triggerType   = part.type;
                save.triggerBool   = part.triggerBool;
                save.triggerInt    = part.triggerInt;
                save.triggerFloat  = part.triggerFloat;
                save.triggerDouble = part.triggerDouble;
                save.triggerString = part.triggerString;
                set.triggerParts.Add(save);
            }
            SaveTriggers.Add(set);
        }

        GuidList        = sr.battleSetup.GuidList;
        positionX       = sr.playerLogic.transform.position.x;
        positionY       = sr.playerLogic.transform.position.y;
        currentScene    = sr.battleSetup.lastOverworld;
        facingDirection = (int)sr.playerLogic.move.lookDirection;
        gold            = sr.inventory.gold;

        respawnX         = sr.battleSetup.respawnLocation.x;
        respawnY         = sr.battleSetup.respawnLocation.y;
        respawnScene     = sr.battleSetup.respawnScene;
        respawnDirection = (int)sr.battleSetup.respawnDirection;
    }
コード例 #3
0
        public Firmware(Program program, Action <TriggerSet> configureAction)
        {
            if (Instance != null)
            {
                throw new InvalidOperationException();
            }
            Instance      = this;
            Program       = program;
            TimingManager = new TimingManager(Program.Runtime);

            var triggerSet = new TriggerSet();

            configureAction(triggerSet);
            _argumentTriggers = triggerSet.Triggers.OfType <ArgumentTrigger>().ToList();
            _triggers         = triggerSet.Triggers.Where(x => !(x is ArgumentTrigger)).ToList();
        }
コード例 #4
0
        public static void SetState(int sceneID, int index, bool state = true)
        {
            TriggerSet section;
            if (!LocalEvents.TryGetValue(sceneID, out section))
            {
                section = new TriggerSet();
                LocalEvents.Add(sceneID, section);
            }

            if (state)
            {
                section.Add(index);
            }
            else
            {
                section.Remove(index);
                if (section.Count == 0)
                {
                    LocalEvents.Remove(sceneID);
                }
            }
        }
コード例 #5
0
    public void AddTriggerSet(TriggerSet ts)
    {
        // ALL old triggers get cleared
        triggerIndecies.Clear();
        triggerTickNumbers.Clear();
        triggerData.Clear();

        if (ts.lastTickReceived > lastTickReceived)
        {
            for (int i = 0; i < ts.triggerIndecies.Count; i++)
            {
                if (ts.triggerTickNumbers [i] > lastTickReceived)
                {
                    triggerIndecies.Add(ts.triggerIndecies[i]);
                    triggerTickNumbers.Add(ts.triggerTickNumbers[i]);
                    triggerData.Add(ts.triggerData[i]);
                }
            }

            lastTickReceived = ts.lastTickReceived;
        }
    }
コード例 #6
0
 public void RegisterIn(TriggerSet triggerSet)
 {
     triggerSet.Register(this);
 }
コード例 #7
0
 //
 //
 //    bla bla.
 //
 void Configure(TriggerSet triggers)
 {
     new AirlockConstruct(Tag <IMyDoor>("[SP-ADI]"), Tag <IMyDoor>("[SP-ADE]"), Tag <IMyAirVent>("[SP-AV]"))
     .AddArgumentTriggers("SPAirlock")
     .RegisterIn(triggers);
 }