protected override void SetOfflineData(OfflineDatabase offlineDatabase, IOfflineDefinitionLoader offlineDefinitions)
    {
        TubeData value = offlineDatabase.Read <TubeData>();

        value.EquippedTubeId = TubeId;
        offlineDatabase.Write(value);
    }
Esempio n. 2
0
    private void CreateInteractableTile()
    {
        _grid = new GameObject[_gridSize, _gridSize];

        foreach (GridPlacement placement in _specialTile)
        {
            GameObject newObj = PlaceTile(placement.xCoordinate, placement.yCoordinate, placement.spriteID);
            TubeData   tube   = newObj.GetComponent <TubeData>();
            if (tube != null)
            {
                tube.SetValue(placement.value);
            }
        }

        for (int y = 0; y < _gridSize; y++)
        {
            for (int x = 0; x < _gridSize; x++)
            {
                if (_grid[x, y] == null)
                {
                    PlaceTile(x, y, 0);
                }
            }
        }
    }
Esempio n. 3
0
    // consumer to tube
    void linkConsumerToTube(int tubeIdx, int consumerIdx) // tube ==> consumer
    {
        //TubeData tube = tubes[tubeIdx];
        //CanTakeState cts = endStates[tube.idxInEndStateArray];
        //cts.init();
        //cts.tailType = CTS_Consumer;
        //cts.tailIdx = consumerIdx;

        //cts.addNewHead(CTS_Tube, tubeIdx);
        //endStates[tube.idxInEndStateArray] = cts;


        CanTakeState cts = headStates[consumers[consumerIdx].headArrayIdx];

        cts.init();
        cts.tailType = CTS_Consumer;
        cts.tailIdx  = consumerIdx;
        cts.addNewHead(CTS_Tube, tubeIdx);
        headStates[consumers[consumerIdx].headArrayIdx] = cts;

        TubeData tube = tubes[tubeIdx];

        tube.tailArrayIdx = consumers[consumerIdx].headArrayIdx;
        tubes[tubeIdx]    = tube;
    }
    private void getTubeData()
    {
        CPDataEntityCollection cPDataEntityCollection = Service.Get <CPDataEntityCollection>();

        if (cPDataEntityCollection.TryGetComponent(cPDataEntityCollection.LocalPlayerHandle, out TubeData component))
        {
            tubeData = component;
            component.OnTubeSelected += onSelectedTubeChanged;
        }
    }
Esempio n. 5
0
    private void LateUpdate()
    {
        sampler.Begin();
        generic[0].lateUpdate();
        generic[1].lateUpdate();
#if !DEBUG_JOB
        updateTubesJH.Complete();
#endif
        //debugTube();

        procTransfer();
        // debug
        float itemHeight = 0.13f;
        itemPositions.Clear();
        for (int j = 0; j < tubeCount; ++j)
        {
            TubeData d      = tubes[j];
            float    offset = d.getOffset();
            for (int i = 0; i < d.count; ++i)
            {
                Vector3 pos = Vector3.zero;
                if (i > d.currentIndex)
                {
                    pos = new Vector3(d.positions[i], itemHeight, j);
                }
                else
                {
                    pos = new Vector3(d.positions[i] + offset, itemHeight, j);
                }
                itemPositions.Add(pos);
                //Debug.DrawLine(pos, pos + Vector3.up, Color.green);
            }
        }

        for (int i = 0; i < itemPositions.Count; ++i)
        {
            if (i >= itemObjs.Count)
            {
                GameObject newItemObj = GameObject.Instantiate(objPrefab, this.transform) as GameObject;
                itemObjs.Add(newItemObj);
            }
            itemObjs[i].transform.localPosition = itemPositions[i];
            itemObjs[i].SetActive(true);
        }
        for (int i = itemPositions.Count; i < itemObjs.Count; ++i)
        {
            itemObjs[i].SetActive(false);
        }
        currentIndex0 = tubes[0].currentIndex;
        count0        = tubes[0].count;

        dbgArray = tubes[0].positions;
    }
Esempio n. 6
0
    // link converter to tube
    void linkConverterToTube(int tubeIdx, int converterIdx) // tube ==> converter
    {
        TubeData     tube = tubes[tubeIdx];
        CanTakeState cts  = headStates[tube.tailArrayIdx];

        cts.tailType = CTS_Converter;
        cts.tailIdx  = converterIdx;

        cts.addNewHead(CTS_Tube, tubeIdx);
        headStates[tube.tailArrayIdx] = cts;

        converters[converterIdx].headArrayIdx = tube.tailArrayIdx;
    }
    protected override void PerformOfflineAction(OfflineDatabase offlineDatabase, IOfflineDefinitionLoader offlineDefinitions)
    {
        TubeData value = offlineDatabase.Read <TubeData>();

        value.EquippedTubeId = TubeId;
        offlineDatabase.Write(value);
        SignedEquipTubeResponse = new SignedResponse <EquipTubeResponse>
        {
            Data = new EquipTubeResponse
            {
                tubeId = TubeId
            }
        };
    }
    public virtual void Awake()
    {
        OnGetTube     = delegate { };
        OnDropTube    = delegate { };
        OnDeleteTube  = delegate { };
        OnGetSkill    = delegate { };
        OnDeleteSkill = delegate { };
        OnCreateSkill = delegate { };

        tubeData = FindObjectOfType <DataManager>().TubeData;

        tubes  = new List <Tube>();
        skills = new List <Skill>();
    }
Esempio n. 9
0
    void linkConverterToTubes(int[] tubeIdx, int converterIdx) // tubes ==> converter
    {
        ConverterData conv = converters[converterIdx];

        //TubeData tube = tubes[tubeIdx];
        CanTakeState cts = headStates[conv.headArrayIdx];

        cts.init();
        cts.tailType = CTS_Converter;
        cts.tailIdx  = converterIdx;

        for (int i = 0; i < tubeIdx.Length; ++i)
        {
            cts.addNewHead(CTS_Tube, tubeIdx[i]);
            TubeData tube = tubes[tubeIdx[i]];
            tube.tailArrayIdx = conv.headArrayIdx;
            tubes[tubeIdx[i]] = tube;
        }
        headStates[conv.headArrayIdx] = cts;
    }
        protected override void SetOfflineData(OfflineDatabase offlineDatabase, IOfflineDefinitionLoader offlineDefinitions)
        {
            TubeData value = offlineDatabase.Read <TubeData>();

            value.EquippedTubeId = SignedJoinRoomData.Data.selectedTubeId;
            offlineDatabase.Write(value);
            ClubPenguin.Net.Offline.ConsumableInventory value2 = offlineDatabase.Read <ClubPenguin.Net.Offline.ConsumableInventory>();
            value2.Inventory = SignedJoinRoomData.Data.playerRoomData.consumableInventory.inventoryMap;
            offlineDatabase.Write(value2);
            ClubPenguin.Net.Offline.PlayerAssets value3 = offlineDatabase.Read <ClubPenguin.Net.Offline.PlayerAssets>();
            value3.Assets = SignedJoinRoomData.Data.playerRoomData.assets;
            offlineDatabase.Write(value3);
            ClubPenguin.Net.Offline.PlayerOutfitDetails value4 = offlineDatabase.Read <ClubPenguin.Net.Offline.PlayerOutfitDetails>();
            value4.Parts = new List <CustomEquipment>(SignedJoinRoomData.Data.playerRoomData.outfit.parts);
            offlineDatabase.Write(value4);
            ClubPenguin.Net.Offline.Profile value5 = offlineDatabase.Read <ClubPenguin.Net.Offline.Profile>();
            value5.Colour      = SignedJoinRoomData.Data.playerRoomData.profile.colour;
            value5.DateCreated = DateTime.UtcNow.AddDays(-1 * SignedJoinRoomData.Data.playerRoomData.profile.daysOld).GetTimeInMilliseconds();
            offlineDatabase.Write(value5);
            SetProgressOperation.SetOfflineQuestStateCollection(offlineDatabase, SignedJoinRoomData.Data.playerRoomData.quests);
        }
Esempio n. 11
0
    void procTransfer()
    {
        // generator output
        for (int i = 0; i < generic[0].tempGenericUpdateOps.Length; ++i)
        {
            if (generic[0].tempGenericUpdateOps[i] != 0)
            {
                GeneratorData gen = generators[i];
                CanTakeState  cts = headStates[gen.tailArrayIdx];
                // check if this generator has space at its end?
                if (tubes[cts.tailIdx].hasSpace(gen.itemId))
                {
                    tubes[cts.tailIdx].push(gen.itemId);
                    // consume a unit of resource.
                    //Debug.LogFormat("generator {0} makes one at {1}", i, elapsedTime);
                    gen.pop();
                    generators[i] = gen;
                }
                else
                {
                    Debug.LogFormat("generator {0} got blocked.", i);
                    gen.block();
                    generators[i] = gen;
                }
            }
        }

        // tubes output
        for (int i = 0; i < arrayLength; ++i)
        {
            if (updateTubesJob.outputOps[i] != 0)
            {
                CanTakeState cts     = headStates[tubes[i].tailArrayIdx];
                TubeData     srcTube = tubes[i];
                if (cts.tailType == CTS_Tube) // tube
                {
                    if (tubes[cts.tailIdx].hasSpace(srcTube.itemId))
                    {
                        srcTube.pop();
                        tubes[cts.tailIdx].push(srcTube.itemId);
                        Debug.LogFormat("{0} Tube {1} pops into {2}.", elapsedTime, i, cts.tailIdx);
                        cts = headStates[srcTube.headArrayIdx];
                        cts.invokeUnblock();
                    }
                    else
                    {
                        Debug.LogFormat("{0} Tube {1} blocked", elapsedTime, i);
                        srcTube.block();
                    }
                }
                else if (cts.tailType == CTS_Converter) // converter
                {
                    ConverterData conv = converters[cts.tailIdx];
                    if (conv.hasSpace(srcTube.itemId))
                    {
                        srcTube.pop();
                        if (converters[cts.tailIdx].push(srcTube.itemId))
                        {
                            Debug.LogFormat("{0} Tube {1} pops into converter {2}.", elapsedTime, i, cts.tailIdx);
                            cts = headStates[srcTube.tailArrayIdx];
                            cts.invokeUnblock();
                        }
                    }
                    else
                    {
                        srcTube.block();
                        Debug.LogFormat("{0} Tube {1} got blocked by converter {2}.", elapsedTime, i, cts.tailIdx);
                    }
                    //Debug.LogFormat("{0} converter @ {1}, {2}", elapsedTime, conv.srcCurrent[0], conv.srcCurrent[1]);
                }
                else if (cts.tailType == CTS_Consumer)  // consumer
                {
                    ConsumerData consData = consumers[cts.tailIdx];
                    consData.attemptToTake(srcTube.itemId);
                    srcTube.pop();
                    consumers[cts.tailIdx] = consData;

                    Debug.LogFormat("{0} Tube {1} pops into consumer {2}.", elapsedTime, i, cts.tailIdx);
                    cts = headStates[srcTube.headArrayIdx];
                    cts.invokeUnblock();
                }
                tubes[i] = srcTube;
            }
        }

        // converter output
        for (int i = 0; i < generic[1].tempGenericUpdateOps.Length; ++i)
        {
            if (generic[1].tempGenericUpdateOps[i] != 0)
            {
                CanTakeState  cts  = headStates[converters[i].tailArrayIdx];
                ConverterData conv = converters[i];
                // check if this converter has space at its end?
                if (cts.tailType == CTS_Tube)   // the end entity of this converter is a tube
                {
                    if (tubes[cts.tailIdx].hasSpace(conv.targetId))
                    {
                        Debug.Log("converter out!");
                        tubes[cts.tailIdx].push(conv.targetId);

                        //headStates[conv.headArrayIdx].invokeUnblock();
                        Debug.LogFormat("{0} converter {1} pops into tube {2}.", elapsedTime, i, cts.tailIdx);
                    }
                    else
                    {
                        //head_cts
                        Debug.LogFormat("{0} converter {1} got blocked by tube {2}.", elapsedTime, i, cts.tailIdx);
                    }
                }
                else if (cts.tailType == CTS_Converter)  // converter
                {
                    Debug.LogFormat("{0} converter {1} pops into converter {2}.", elapsedTime, i, cts.tailIdx);
                }
                if (conv.allMet())
                {
                    converters[i].startUpdate();
                    headStates[conv.headArrayIdx].invokeUnblock();
                }
            }
        }

        sampler.End();
    }
Esempio n. 12
0
    void debugTube()
    {
        // generator
        for (int i = 0; i < generic[0].tempGenericUpdateOps.Length; ++i)
        {
            if (generic[0].tempGenericUpdateOps[i] != 0)
            {
                GeneratorData gen = generators[i];
                CanTakeState  cts = headStates[gen.tailArrayIdx];
                // check if this generator has space at its end?
                if (tubes[cts.tailIdx].hasSpace(gen.itemId))
                {
                    tubes[cts.tailIdx].push(gen.itemId);
                    // consume a unit of resource.
                    gen.pop();

                    generators[i] = gen;
                }
                else
                {
                    gen.block();
                }
            }
        }
        for (int i = 0; i < arrayLength; ++i)
        {
            int op = updateTubesJob.outputOps[i];
            if (op != 0)
            {
                TubeData srcTube = tubes[i];
                if (endState_Open)
                {
                    srcTube.pop();
                    CanTakeState cts = headStates[srcTube.headArrayIdx];
                    cts.invokeUnblock();
                }
                else
                {
                    srcTube.block();
                }

                //CanTakeState cts = endStates[tubes[i].idxInEndStateArray];

                //if (cts.type == 0) // tube
                //{
                //    if (tubes[cts.idx].hasSpace(srcTube.itemId)) {
                //        srcTube.pop();
                //        tubes[cts.idx].push(srcTube.itemId);
                //        // consume a unit of resource.
                //    }
                //    else {
                //        srcTube.saturate();
                //    }
                //}
                //else if (cts.type == 1) // converter
                //{
                //    ConverterData conv = converters[cts.idx];
                //    if (conv.hasSpace(srcTube.itemId)) {
                //        srcTube.pop();
                //        conv.push(srcTube.itemId);
                //        converters[cts.idx] = conv;

                //    }
                //    else {
                //        srcTube.saturate();
                //    }
                //}
                //else if (cts.type == 2) { // consumer
                //    ConsumerData consData = consumers[cts.idx];
                //    consData.attemptToTake(srcTube.itemId);
                //    srcTube.pop();
                //    consumers[cts.idx] = consData;
                //}
                tubes[i] = srcTube;
            }
        }
        if (prevEndState0 != endState_Open)
        {
            if (endState_Open)
            {
                tubes[0].unblock();
                CanTakeState cts = headStates[tubes[0].headArrayIdx];
                cts.invokeUnblock();
            }
            prevEndState0 = endState_Open;
        }
    }