Beispiel #1
0
        public GUnit CreateUnit(int requiredModuleGroup)
        {
            var unit = new GUnit(Util.GetUnionId(), requiredModuleGroup);

            unitMgr.AddUnit(unit.UnitId, unit);

            var unitData = unit.AddData <UnitData>();

            unitData.disposable = new CompositeDisposable();

            unitData.stateTypeProperty.Subscribe(_ => {
                if (_ == UnitStateType.Init)
                {
                    unitData.stateTypeProperty.Subscribe(stateType => {
                        if (stateType == UnitStateType.Destroy)
                        {
                            DestroyUnit(unit);
                        }
                    }).AddTo(unitData.disposable);

                    if (!string.IsNullOrEmpty(unitData.tag))
                    {
                        unitMgr.AddCache(unitData.tag, unit);
                    }

                    unit.UpdateMeetModuleList();
                }
            }).AddTo(unitData.disposable);

            return(unit);
        }
Beispiel #2
0
    protected override void OnAdd(EUnit unit)
    {
        var unitData       = unit.GetData <UnitData>();
        var helloWorldData = unit.GetData <HelloWorldData>();

        Observable.Interval(TimeSpan.FromSeconds(1)).Subscribe(_ =>
        {
            Log.I(helloWorldData.helloWorld);
        }).AddTo(unitData.disposable);
    }
Beispiel #3
0
        public void DestroyUnit(GUnit unit)
        {
            var unitData = unit.GetData <UnitData>();

            dataMgr.ClearDataToCached(unit.UnitId);
            unit.UpdateMeetModuleList();

            unitData.disposable?.Dispose();
            unitData.disposable = null;

            if (!string.IsNullOrEmpty(unitData.tag))
            {
                unitMgr.ClearCache(unitData.tag);
            }

            dataMgr.ClearCachedData(unit.UnitId);
            unitMgr.RemoveUnit(unit.UnitId);
        }