public static Bonus Deserialize(DataStream reader) { BonusTypes type = (BonusTypes)reader.ReadSInt32(); Bonus bonus = null; switch (type) { case BonusTypes.UnlockCardByID: { int cardID = reader.ReadSInt32(); bonus = new Bonus_UnlockCardByID(cardID); break; } case BonusTypes.UnlockCardByLevelNum: { int levelNum = reader.ReadSInt32(); bonus = new Bonus_UnlockCardByLevelNum(levelNum); break; } case BonusTypes.LifeUpperLimit: { int lifeUpperLimit = reader.ReadSInt32(); bonus = new Bonus_LifeUpperLimit(lifeUpperLimit); break; } case BonusTypes.EnergyUpperLimit: { int energyUpperLimit = reader.ReadSInt32(); bonus = new Bonus_EnergyUpperLimit(energyUpperLimit); break; } case BonusTypes.Budget: { int budget = reader.ReadSInt32(); bonus = new Bonus_Budget(budget); break; } case BonusTypes.BudgetLifeEnergyMixed: { int value = reader.ReadSInt32(); bonus = new Bonus_BudgetLifeEnergyMixed(value); break; } } return(bonus); }
public void Initialize(BonusGroup bonusGroup, IEnumerator co_refresh, UnityAction deleteAction, UnityAction clearAction, UnityAction onEditAction, UnityAction <bool, int, int, LevelEditorPanel.SelectCardContents> onStartSelectCard) { Clear(); Co_refresh = co_refresh; DeleteButton.onClick.RemoveAllListeners(); DeleteButton.onClick.AddListener(deleteAction); ClearButton.onClick.RemoveAllListeners(); ClearButton.onClick.AddListener(clearAction); OnEditAction = onEditAction; OnStartSelectCard = onStartSelectCard; AddButton.onClick.RemoveAllListeners(); AddButton.onClick.AddListener(delegate { LevelPropertyForm_BonusTypeDropdown btd = GameObjectPoolManager.Instance.PoolDict[GameObjectPoolManager.PrefabNames.LevelPropertyForm_BonusTypeDropdown].AllocateGameObject <LevelPropertyForm_BonusTypeDropdown>(BonusContainer); btd.Initialize(onDeleteButtonClick: delegate { My_BonusGroupPropertyForm_BonusTypeDropdown.Remove(btd); btd.PoolRecycle(); Refresh(); }, onAddBonusType : delegate(Bonus.BonusTypes type) { My_BonusGroupPropertyForm_BonusTypeDropdown.Remove(btd); btd.PoolRecycle(); Bonus bonus = null; switch (type) { case Bonus.BonusTypes.UnlockCardByID: { bonus = new Bonus_UnlockCardByID((int)AllCards.EmptyCardTypes.EmptyCard); break; } case Bonus.BonusTypes.UnlockCardByLevelNum: { bonus = new Bonus_UnlockCardByLevelNum(1); break; } case Bonus.BonusTypes.Budget: { bonus = new Bonus_Budget(25); break; } case Bonus.BonusTypes.BudgetLifeEnergyMixed: { bonus = new Bonus_BudgetLifeEnergyMixed(150); break; } case Bonus.BonusTypes.LifeUpperLimit: { bonus = new Bonus_LifeUpperLimit(2); break; } case Bonus.BonusTypes.EnergyUpperLimit: { bonus = new Bonus_EnergyUpperLimit(2); break; } } Cur_BonusGroup.Bonuses.Add(bonus); Refresh(); }); My_BonusGroupPropertyForm_BonusTypeDropdown.Add(btd); }); SetBonusGroup(bonusGroup); }