public PlayerTurnMove(TurnMgr owner, Unit unit) : base(owner, unit) { cubesCanGo = MapMgr.Instance.GetCubes( unit.GetCube, cube => cube != unit.GetCube && (cube.GetUnit() == null || cube.GetUnit().currHealth <= 0), path => path.path.Count <= unit.actionPointsRemain + 1); }
void SetUIBeginEnter(EventParam param) { turnMgr = gameMgr._turnMgr; Dictionary <ActionType, UnityAction> btnEvents = new Dictionary <ActionType, UnityAction>(); btnEvents.Add(ActionType.Move, OnClickMoveBtn); btnEvents.Add(ActionType.Attack, OnClickAttackBtn); btnEvents.Add(ActionType.Item, OnClickItemBtn); btnEvents.Add(ActionType.Skill, OnClickSkillBtn); Unit nextTurnUnit = turnMgr.turns.Peek(); actionPanel.SetPanel(nextTurnUnit.actionSlots, nextTurnUnit.actionPointsRemain, btnEvents); actionPointPanel.SetText(nextTurnUnit.actionPointsRemain); turnPanel.gameObject.SetActive(true); if (turnPanel.ShouldUpdateSlots(turnMgr.turns.ToList())) { turnPanel.SetSlots(statusPanel, turnMgr.turns.ToList()); } testPlayBtn.SetActive(false); endTurnBtn.SetActive(true); backBtn.SetActive(false); }
/// <summary> /// Event를 기다리는 State입니다. /// branches List에 들어있는 순서대로 Predicate를 검사하고 True를 반환하는 Key의 Value인 State로 Transition합니다. /// </summary> /// <param name="e">기다릴 Event</param> public TurnMgr_BranchSingleEvent_( TurnMgr owner, Unit unit, ObserverEvent e, List<KeyValuePair<Predicate<EventParam>, TurnMgr_State_>> branches, Predicate<EventParam> ignoreCondition = null, Action onWaitEnter = null, Action onWaitExecute = null, Action onWaitExit = null) : base(owner, unit, e, null, null, onWaitEnter, onWaitExecute, onWaitExit) { _branches = branches; _ignoreCondition = ignoreCondition; }
public TurnMgr_PlayerAttack_(TurnMgr owner, Unit unit) : base(owner, unit) { // get all cubes in range cubesAttackRange = MapMgr.Instance.GetCubes(unit.basicAttackRange, unit.GetCube); // filter cubes cubesCanAttack = cubesAttackRange .Where(CubeCanAttackConditions) .ToList(); }
void OnClickItemSlotBtn(Item item) { turnMgr = gameMgr._turnMgr; string popupContent = $"r u sure u wanna use {item.name}?"; turnMgr.stateMachine.ChangeState( new TurnMgr_Popup_(turnMgr, turnMgr.turns.Peek(), Input.mousePosition, popupContent, () => UseItem(item), () => turnMgr.stateMachine.ChangeState(null, StateMachine <TurnMgr> .StateTransitionMethod.ReturnToPrev), () => itemPanel.SetPanel(turnMgr.turns.Peek().itemBag.GetItem(), OnClickItemSlotBtn), null, () => itemPanel.UnsetPanel()), StateMachine <TurnMgr> .StateTransitionMethod.JustPush); }
public TurnMgr_PlayerSkill_(TurnMgr owner, Unit unit) : base(owner, unit) { // get all cubes in range cubesCastRange = MapMgr.Instance.GetCubes( unit.skill.skillRange, unit.GetCube ); // filter cubes cubesCanCast = cubesCastRange .Where(CubeCanCastConditions) .ToList(); }
/// <summary> /// Event를 기다리는 State입니다. /// </summary> /// <param name="e">기다릴 Event</param> /// <param name="nextState">이 State 다음 State</param> /// <param name="paramCondition">Event발생시 매개변수를 검사하여 nextState로 Tranisition 여부를 결정하는 Predicate</param> public TurnMgr_WaitSingleEvent_( TurnMgr owner, Unit unit, Event e, TurnMgr_State_ nextState, Predicate <EventParam> paramCondition = null, Action onWaitEnter = null, Action onWaitExecute = null, Action onWaitExit = null) : base(owner, unit) { _e = e; _nextState = nextState; _paramCondition = paramCondition; _onWaitEnter = onWaitEnter; _onWaitExecute = onWaitExecute; _onWaitExit = onWaitExit; }
public TurnMgr_Popup_(TurnMgr owner, Unit unit, Vector3 popupPos, string popupContent, UnityAction onClickYes, UnityAction onClickNo, Action onPopupEnter = null, Action onPopupExecute = null, Action onPopupExit = null) : base(owner, unit) { // TODO �Ķ���Ͱ����� Event�� �ذᰡ�� //_popup = MonoBehaviour.FindObjectOfType<BattleUI>().popupPanel; // ���Ⱑ ���� ���� _popupPos = popupPos; _onClickNo = onClickNo; _onClickYes = onClickYes; _popupContent = popupContent; this.onPopupEnter = onPopupEnter; this.onPopupExecute = onPopupExecute; this.onPopupExit = onPopupExit; }
public TurnMgr_Popup_(TurnMgr owner, Unit unit, Vector2 popupPos, string popupContent, UnityAction onClickYes, UnityAction onClickNo, Action onPopupEnter = null, Action onPopupExecute = null, Action onPopupExit = null) : base(owner, unit) { // TODO 파라미터가능한 Event시 해결가능 _popup = MonoBehaviour.FindObjectOfType <UIMgr>().popupPanel; // 여기가 조금 문제 _popupPos = popupPos; _onClickNo = onClickNo; _onClickYes = onClickYes; _popupContent = popupContent; this.onPopupEnter = onPopupEnter; this.onPopupExecute = onPopupExecute; this.onPopupExit = onPopupExit; }
void SetUIPlan(EventParam param) { turnMgr = gameMgr._turnMgr; testPlayBtn.SetActive(false); endTurnBtn.SetActive(false); backBtn.SetActive(false); actionPanel.UnsetPanel(); actionPointPanel.SetText(turnMgr.turns.Peek().actionPointsRemain); turnPanel.gameObject.SetActive(true); if (turnPanel.ShouldUpdateSlots(turnMgr.turns.ToList())) { turnPanel.SetSlots(statusPanel, turnMgr.turns.ToList()); } }
void UseItem(Item item) { turnMgr = gameMgr._turnMgr; TurnMgr_State_ nextState = new TurnMgr_PlayerBegin_(turnMgr, turnMgr.turns.Peek()); turnMgr.stateMachine.ChangeState( new TurnMgr_WaitSingleEvent_(turnMgr, turnMgr.turns.Peek(), EventMgr.Instance.onUnitIdleEnter, nextState), StateMachine <TurnMgr> .StateTransitionMethod.JustPush); ItemCommand itemCommand; if (ItemCommand.CreateCommand(turnMgr.turns.Peek(), item, out itemCommand)) { turnMgr.turns.Peek().EnqueueCommand(itemCommand); } }
public AITurnBegin(TurnMgr owner, Unit unit) : base(owner, unit) { }
public TurnMgr_PlayerAttack_(TurnMgr owner, Unit unit) : base(owner, unit) { }
public TurnMgr_Nobody_(TurnMgr owner) : base(owner, null) { }
public void SetTMEndTurnBtn() { _turnMgr = FindObjectOfType <TurnMgr>(); }
public void RegisterEvent() { EventMgr.Instance.onGameBattleEnter.Register(el_GameBattleEnter, (param) => { _turnMgr = FindObjectOfType <TurnMgr>(); }); }
public TurnMgr_PlayerItemUse_(TurnMgr owner, Unit unit, Item item) : base(owner, unit) { _item = item; }
/// <summary> /// Event를 기다리는 State입니다. /// </summary> /// <param name="e">기다릴 Event</param> /// <param name="nextState">Event발생시 Transition할 다음 State</param> /// <param name="onEvent">state를 바꾸기 전에 호출할 함수가 있다면 추가하세요.</param> public TurnMgr_WaitMultipleEvents_(TurnMgr owner, Unit unit, List <ObserverEvent> events, TurnMgr_State_ nextState, Action onWaitEnter = null, Action onWaitExecute = null, Action onWaitExit = null) : base(owner, unit, null, nextState, null, onWaitEnter, onWaitExecute, onWaitExit) { _events = events; }
public TurnMgr_AIPlan_(TurnMgr owner, Unit unit) : base(owner, unit) { }
public void SetTestPlayBtn() { _turnMgr = FindObjectOfType <TurnMgr>(); }
public TurnMgr_PlayerItemBag_(TurnMgr owner, Unit unit) : base(owner, unit) { }
public TurnMgr_PlayerBegin_(TurnMgr owner, Unit unit) : base(owner, owner.turns.Peek()) // 여기서 turns 큐가 비어있음 { }
public GameMgr_Battle_(GameMgr owner, TurnMgr turnMgrPrefab) : base(owner) { _turnMgr = Object.Instantiate(turnMgrPrefab); }
public TurnMgr_AIBegin_(TurnMgr owner, Unit unit) : base(owner, unit) { }
public TurnMgr_AIAction_(TurnMgr owner, Unit unit, List <APActionNode> actions) : base(owner, unit) { _actions = new Queue <APActionNode>(actions); }
public TurnMgr_PlayerBegin_(TurnMgr owner, Unit unit) : base(owner, unit) { }
public PlayerTurnItem(TurnMgr owner, Unit unit) : base(owner, unit) { }