void Start() 
	{
		if (myBehaviorManager == null)
			myBehaviorManager = this.GetComponent<BehaviorManager>();
		
		myBehaviorManager.OnBehaviorStateChangedEvent += HandleOnBehaviorStateChangedEvent;
		idleTimeRemaining = 0f;
	}
Ejemplo n.º 2
0
    void OnEnable ()
    {
        bm = FindObjectOfType<BehaviorManager>();
        tween = GetComponent<dfTweenFloat>();
        rm = GetComponent<dfRadialMenu>();
        myControl = GetComponent<dfControl>();
        oColor = myControl.Color;
        mainCamera = Camera.main;
        manager = FindObjectOfType<dfGUIManager>();
	}
Ejemplo n.º 3
0
 public static void SyncGlobalVariablesToICode(this BehaviorManager behaviorManager)
 {
     DoVariablesToICodeSync(GlobalVariables.Instance, ICode.GlobalVariables.GetVariables());
 }
Ejemplo n.º 4
0
 public static void SyncVariablesToICode(this BehaviorManager behaviorManager, IVariableSource variableSource, FsmVariable[] iCodeVariables)
 {
     DoVariablesToICodeSync(variableSource, iCodeVariables);
 }
 public void Step()
 {
     BehaviorManager.Step();
 }
    public void SetUpdateRate()
    {
        float persecond = float.Parse(InputBoi.text);

        BehaviorManager.SetUpdateRate(persecond);
    }
Ejemplo n.º 7
0
        internal static BehaviorArray GetGarrisonBuildingFirstQuestArray(Building b, bool alliance)
        {
            if (b.Type == BuildingType.SalvageYard)
            {
                //var abandon = new Behaviors.BehaviorQuestAbandon(b.FirstQuestID);
                var pickup          = new BehaviorQuestPickup(b.FirstQuestId, b.SafeMovementPoint, b.WorkOrderNpcEntryId);
                var itemInteraction = new BehaviorItemInteraction(118473);
                var turnin          = new BehaviorQuestTurnin(b.FirstQuestId, b.SafeMovementPoint, b.WorkOrderNpcEntryId);
                var behaviorArray   = new BehaviorArray(new Behavior[] { pickup, itemInteraction, turnin });
                behaviorArray.Criteria += () => BaseSettings.CurrentSettings.BehaviorQuests;
                return(behaviorArray);
            }
            else if (b.Type == BuildingType.TradingPost)
            {
                var pickup  = new BehaviorQuestPickup(b.FirstQuestId, b.SafeMovementPoint, b.WorkOrderNpcEntryId);
                var moveLoc = Player.IsAlliance
                    ? new WoWPoint(1764.08, 150.39, 76.02)
                    : new WoWPoint(5745.101, 4570.491, 138.8332);

                var moveto   = new BehaviorMove(moveLoc, 7f);
                var npcId    = Player.IsAlliance ? 87288 : 87260;
                var target   = new BehaviorSelectTarget(moveLoc);
                var interact = new BehaviorItemInteraction(118418, true);
                var turnin   = new BehaviorQuestTurnin(b.FirstQuestId, b.SafeMovementPoint, b.WorkOrderNpcEntryId);

                var behaviorArray = new BehaviorArray(new Behavior[] { pickup, moveto, target, interact, turnin });
                behaviorArray.Criteria += () => BaseSettings.CurrentSettings.BehaviorQuests;
                return(behaviorArray);
            }
            else if (b.Type == BuildingType.Storehouse)
            {
                var pickup = new BehaviorQuestPickup(b.FirstQuestId, b.EntranceMovementPoint, b.FirstQuestNpcId);

                List <WoWPoint> _hotSpots = new List <WoWPoint>
                {
                    MovementCache.GarrisonEntrance,

                    MovementCache.GardenPlot63SafePoint,
                    MovementCache.MinePlot59SafePoint,

                    MovementCache.MediumPlot22SafePoint,
                    MovementCache.LargePlot23SafePoint,
                    MovementCache.LargePlot24SafePoint,
                    MovementCache.MediumPlot25SafePoint,

                    MovementCache.SmallPlot18SafePoint,
                    MovementCache.SmallPlot19SafePoint,
                    MovementCache.SmallPlot20SafePoint,
                };

                var looting = new BehaviorHotspotRunning(_hotSpots.ToArray(), BehaviorHotspotRunning.HotSpotType.Looting, () => BehaviorManager.HasQuestAndNotCompleted(b.FirstQuestId));
                var turnin  = new BehaviorQuestTurnin(b.FirstQuestId, b.EntranceMovementPoint, b.FirstQuestNpcId);

                var behaviorArray = new BehaviorArray(new Behavior[] { pickup, looting, turnin });
                behaviorArray.Criteria += () => BaseSettings.CurrentSettings.BehaviorQuests;
                return(behaviorArray);
            }
            else if (b.Type == BuildingType.Lumbermill)
            {
                var pickup = new BehaviorQuestPickup(b.FirstQuestId, b.EntranceMovementPoint, b.FirstQuestNpcId);

                WoWPoint movementPoint;
                if (Player.IsAlliance)
                {
                    movementPoint = new WoWPoint(1555.087, 173.8229, 72.59766);
                }
                else
                {
                    movementPoint = new WoWPoint(6082.979, 4795.821, 149.1655);
                }

                var looting       = new BehaviorHotspotRunning(new[] { movementPoint }, new uint[] { 234021, 233922 }, BehaviorHotspotRunning.HotSpotType.Looting, () => BehaviorManager.HasQuestAndNotCompleted(b.FirstQuestId));
                var turnin        = new BehaviorQuestTurnin(b.FirstQuestId, b.EntranceMovementPoint, b.FirstQuestNpcId);
                var behaviorArray = new BehaviorArray(new Behavior[] { pickup, looting, turnin });
                behaviorArray.Criteria += () => BaseSettings.CurrentSettings.BehaviorQuests;
                return(behaviorArray);
            }
            else if (b.Type == BuildingType.Mines)
            {
                var pickup = new BehaviorQuestPickup(b.FirstQuestId, b.EntranceMovementPoint, b.FirstQuestNpcId);

                var looting = new BehaviorHotspotRunning(Player.IsAlliance ?
                                                         MovementCache.Alliance_Mine_LevelOne.ToArray() :
                                                         MovementCache.Horde_Mine_LevelOne.ToArray(),
                                                         MineQuestMobIDs.ToArray(),
                                                         BehaviorHotspotRunning.HotSpotType.Killing,
                                                         () => BehaviorManager.HasQuestAndNotCompleted(b.FirstQuestId));

                var turnin = new BehaviorQuestTurnin(b.FirstQuestId, b.EntranceMovementPoint, b.FirstQuestNpcId);

                var behaviorArray = new BehaviorArray(new Behavior[] { pickup, looting, turnin });
                behaviorArray.Criteria += () => BaseSettings.CurrentSettings.BehaviorQuests;
                return(behaviorArray);
            }
            else if (b.Type == BuildingType.HerbGarden)
            {
                var pickup = new BehaviorQuestPickup(b.FirstQuestId, b.EntranceMovementPoint, b.FirstQuestNpcId);

                var looting = new BehaviorHotspotRunning(Player.IsAlliance ?
                                                         MovementCache.Alliance_Herb_LevelOne.ToArray() :
                                                         MovementCache.Horde_Herb_LevelOne.ToArray(),
                                                         HerbQuestMobIDs.ToArray(),
                                                         BehaviorHotspotRunning.HotSpotType.Killing,
                                                         () => BehaviorManager.HasQuestAndNotCompleted(b.FirstQuestId));

                var turnin = new BehaviorQuestTurnin(b.FirstQuestId, b.EntranceMovementPoint, b.FirstQuestNpcId);

                var behaviorArray = new BehaviorArray(new Behavior[] { pickup, looting, turnin });
                behaviorArray.Criteria += () => BaseSettings.CurrentSettings.BehaviorQuests;
                return(behaviorArray);
            }
            else
            {
                var pickup          = new BehaviorQuestPickup(b.FirstQuestId, b.SafeMovementPoint, b.FirstQuestNpcId);
                var workorder       = new BehaviorQuestWorkOrder(b);
                var workorderPickup = new BehaviorQuestWorkOrderPickup(b);
                var turnin          = new BehaviorQuestTurnin(b.FirstQuestId, b.SafeMovementPoint, b.WorkOrderNpcEntryId);
                var behaviorArray   = new BehaviorArray(new Behavior[] { pickup, workorder, workorderPickup, turnin });
                behaviorArray.Criteria += () => BaseSettings.CurrentSettings.BehaviorQuests;
                return(behaviorArray);
            }
        }
Ejemplo n.º 8
0
 public void Init()
 {
     this.thing = new Thing();
     this.behaviorManager = new BehaviorManager(this.thing);
 }
Ejemplo n.º 9
0
 public virtual bool checkBehavior(BehaviorManager manager)
 {
     return(false);
 }
Ejemplo n.º 10
0
        private void DrawNode(NodeValue nodeValue, string title)
        {
            if (nodeValue.NodeType != (int)NODE_TYPE.CONDITION &&
                nodeValue.NodeType != (int)NODE_TYPE.ACTION)
            {
                return;
            }

            ConditionGroup conditionGroup = DrawConditionGroup(nodeValue);

            for (int i = 0; i < nodeValue.parameterList.Count; ++i)
            {
                nodeValue.parameterList[i].index = i;
            }

            GUI.enabled = !BehaviorManager.Instance.CurrentOpenConfigSubTree();
            EditorGUILayout.BeginVertical("box", GUILayout.ExpandWidth(true));
            {
                EditorGUILayout.LabelField(title);

                int height = (nodeValue.parameterList.Count * 58);
                height    = height <= 300 ? height : 300;
                scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.Height(height));
                {
                    GUI.backgroundColor = new Color(0.85f, 0.85f, 0.85f, 1f);
                    for (int i = 0; i < nodeValue.parameterList.Count; ++i)
                    {
                        BehaviorParameter behaviorParameter = nodeValue.parameterList[i];

                        Action DelCallBack = () =>
                        {
                            if (null != BehaviorManager.behaviorNodeParameter)
                            {
                                BehaviorManager.behaviorNodeParameter(nodeValue.id, behaviorParameter, false);
                            }
                        };

                        Color color = Color.white;
                        if (null != conditionGroup)
                        {
                            string name = conditionGroup.parameterList.Find(a => (a.CompareTo(behaviorParameter.parameterName) == 0));
                            if (!string.IsNullOrEmpty(name))
                            {
                                color = colorArr[0];
                            }
                        }

                        GUI.backgroundColor = color; // new Color(0.85f, 0.85f, 0.85f, 1f);

                        EditorGUILayout.BeginVertical("box");
                        {
                            string parameterName = behaviorParameter.parameterName;

                            BehaviorParameter tempParameter = behaviorParameter.Clone();
                            tempParameter = DrawParameter.Draw(behaviorParameter, DrawParameterType.NODE_PARAMETER, DelCallBack);
                            if (parameterName.CompareTo(behaviorParameter.parameterName) != 0)
                            {
                                if (null != BehaviorManager.behaviorNodeChangeParameter)
                                {
                                    BehaviorManager.behaviorNodeChangeParameter(nodeValue.id, parameterName, behaviorParameter.parameterName);
                                }
                            }
                            else
                            {
                                behaviorParameter.CloneFrom(tempParameter);
                            }
                        }
                        EditorGUILayout.EndVertical();
                    }
                    GUI.backgroundColor = Color.white;
                }
                EditorGUILayout.EndScrollView();
            }
            EditorGUILayout.EndVertical();
            GUI.enabled = true;

            GUILayout.Space(10);
            EditorGUILayout.BeginVertical("box");
            {
                DrawAddParameter(nodeValue);
            }
            EditorGUILayout.EndVertical();
        }
	// Use this for initialization
	protected virtual void Start () 
	{
		
		if (myBehaviorManager == null)
			myBehaviorManager = GetComponent<BehaviorManager>();
		
		//Link up with our behavior manager's movement events
		myBehaviorManager.OnRequestStartMovingEvent += HandleOnMovementRequestEvent;
		myBehaviorManager.OnRequestStopMovingEvent += HandleOnStopMovementRequestEvent;
		myBehaviorManager.OnBehaviorStateChangedEvent += HandleOnBehaviorStateChangedEvent;
	}
Ejemplo n.º 12
0
        public void Launcher_Load(object sender, EventArgs e)
        {
            prevState  = new WiimoteState();
            m_vkcodes  = new VKCodes();
            m_profiles = new List <Profile>();

            // Behavior
            m_bMgr = new BehaviorManager();
            m_bMgr.Add(new StandardBehavior());
            m_bMgr.Add(new MinecraftBehavior());

            // Profileフォルダの読み込み
            if (!Directory.Exists("./Profile/"))
            {
                // Defaultプロファイルの作成
                Directory.CreateDirectory("./Profile/");
                var defaultProfile = new Profile();
                defaultProfile.Name              = "Default";
                defaultProfile.Behavior          = (new StandardBehavior()).GetName();
                defaultProfile.ActionAssignments = new Dictionary <WiimoteModel, List <ActionAttribute> >();
                defaultProfile.Save("./Profile/default.json");
            }

            LoadProfiles();

            // フォルダ内JSON変更の検知
            m_fileSystemWatcher.Path   = "./Profile";
            m_fileSystemWatcher.Filter = "*.json";
            m_fileSystemWatcher.SynchronizingObject = this;
            m_fileSystemWatcher.NotifyFilter        = NotifyFilters.LastAccess;
            m_fileSystemWatcher.Changed            += m_fileSystemWatcher_Changed;
            // m_fileSystemWatcher.EnableRaisingEvents = true; //監視を開始

            m_wm = new Wiimote();

            try
            {
                // 接続
                m_wm.WiimoteChanged          += (s, args) => UpdateState(args);
                m_wm.WiimoteExtensionChanged += (s, args) => UpdateExtension(args);
                m_wm.Connect();
                m_wm.SetReportType(InputReport.IRExtensionAccel, true);

                // LED
                m_wm.SetLEDs(true, false, false, false);

                // 振動
                Task.Run(() =>
                {
                    m_wm.SetRumble(true);
                    Thread.Sleep(200);
                    m_wm.SetRumble(false);
                });

                // デバッグ情報
                m_debugInfo         = new DebugInfo();
                m_debugInfo.OnHiden = () =>
                {
                    MenuItem_debugInfo.Checked = false;
                };
#if DEBUG
                m_debugInfo.Show();
                MenuItem_debugInfo.Checked = true;
#endif
            }
            catch (Exception ex)
            {
                string msg;

                switch (ex)
                {
                case WiimoteNotFoundException _:
                    msg = "Wiiリモコンを認識できませんでした.\n\n1. Bluetoothが有効になっているか,\n2. Wiiリモコンに電池が入っているか,\n3. LEDが点滅して接続待機状態になっているかどうか\n等を確認してください.";
                    break;

                case WiimoteException _:
                    msg = "Wiiリモコンに何らかのエラーが発生しました.";
                    break;

                default:
                    msg = "予期せぬエラーが発生しました.";
                    break;
                }

                MessageBox.Show(
                    msg,
                    "エラー",
                    MessageBoxButtons.OK,
                    MessageBoxIcon.Error
                    );
#if !DEBUG
                Environment.Exit(1);
#endif
            }
        }
Ejemplo n.º 13
0
    // FixedUpdate() 함수는 고정된 프레임 수(1초에 60번)에 따라 매 프레임마다 호출됩니다.
    // 여기서의 FixedUpdate() 함수는 턴의 각 단계를 진행시키는 함수입니다.
    void FixedUpdate()
    {
        if (turn == 1)
        {
            // 턴이 시작되면
            //Debug.Log("Turn starts.");
            foreach (PlayerController p in Players)
            {
                // 모든 생존자 마나 2씩 회복
                p.ManaRecovery();
            }
            // 행동 결정 단계로 넘어감
            turn = 2;
        }
        else if (turn == 2)
        {
            // 행동 결정 단계에서
            //Debug.Log("Decide your behavior.");

            if (Players[0].GetTargetDecide())       // 대상 결정 중이면
            {
                if (!decideButton.activeInHierarchy)
                {
                    decideButton.SetActive(true);   // 결정 버튼이 나타나게 한다.
                }
                if (Input.GetMouseButtonDown(0))
                {
                    PlayerToSelectTarget();         // 플레이어1이 선택한 대상들을 저장하여 기억한다.
                }
            }
            else
            {
                if (decideButton.activeInHierarchy)
                {
                    decideButton.SetActive(false);  // 결정 버튼이 보이지 않게 한다.
                }
            }
            bool isCompleted = true;
            foreach (PlayerController p in Players)
            {
                // 사망한 플레이어는 행동을 결정하지 않음
                if (p.GetDead())
                {
                    continue;
                }
                else if (!p.GetHasDecided())
                {
                    isCompleted = false;
                    break;
                }
            }
            // TODO 각 플레이어가 결정한 행동을 저장해 놓아야 한다.
            // 행동은 PlayerController.cs에서 만들도록 한다.
            // 만약 모든 생존자가 행동 결정을 완료하면 행동 수행 단계로 넘어감
            if (isCompleted)
            {
                turn = 3;
            }
        }
        else if (turn == 3)
        {
            foreach (Behavior behavior in Behaviors)
            {
                if (behavior.GetObjectPlayers().Count == 2)
                {
                    Debug.Log(behavior.GetSubjectPlayer().GetPlayerName() + " -> "
                              + behavior.GetObjectPlayers()[0].GetPlayerName() + ", " + behavior.GetObjectPlayers()[1].GetPlayerName() + " (" + behavior.GetBehavior().Name + ")");
                }
                else if (behavior.GetObjectPlayers().Count == 1)
                {
                    Debug.Log(behavior.GetSubjectPlayer().GetPlayerName() + " -> "
                              + behavior.GetObjectPlayers()[0].GetPlayerName() + " (" + behavior.GetBehavior().Name + ")");
                }
            }
            //Debug.Log("Performming behaviors...");
            // 모든 플레이어의 상태이상을 해제하고 행동을 결정하지 않은 상태로 초기화함
            foreach (PlayerController p in Players)
            {
                p.Purify();
                p.SetNotDecided();
            }
            // 전 단계에서 결정된 행동들을 수행함
            foreach (Behavior b in Behaviors)
            {
                // TODO 피해 무시, 상대 행동 무효화 등의 행동은 가장 먼저 이루어져야 함
                //StartCoroutine("PerformBehavior", b);
                BehaviorManager.Perform(b);
            }
            Behaviors = new List <Behavior>();
            turn      = 4;
        }
        else if (turn == 4)
        {
            //Debug.Log("Processing the dead...");
            foreach (PlayerController p in Players)
            {
                p.Death();
            }
            turn = 5;
        }
        else if (turn == 5)
        {
            bool isEnd   = false;
            bool allDead = true;
            for (int i = 0; i < 5; i++)
            {
                //Debug.Log(PlayerPermutation[i].player.GetPlayerName() + "'s target is " + PlayerPermutation[PlayerPermutation[i].GetTargetIndex()[0]].player.GetPlayerName() + " and "+ PlayerPermutation[PlayerPermutation[i].GetTargetIndex()[1]].player.GetPlayerName() + ".");
                if (!PlayerPermutation[i].player.GetDead())
                {
                    allDead = false;
                    if (PlayerPermutation[PlayerPermutation[i].GetTargetIndex()[0]].player.GetDead() &&
                        PlayerPermutation[PlayerPermutation[i].GetTargetIndex()[1]].player.GetDead())
                    {
                        isWin[i] = true;
                        isEnd    = true;
                        Debug.Log(PlayerPermutation[i].player.GetPlayerName() + " wins!");
                    }
                }
            }
            if (allDead)
            {
                Debug.Log("No one wins.");
                isEnd = true;
            }
            if (isEnd)
            {
                Debug.Log("Battle ends.");
                turn = 6;
            }
            else
            {
                Debug.Log("Turn ends.");
                turn = 1;   // 7로 놓으면 수동으로(버튼을 눌러서) 턴 진행, 1로 놓으면 자동으로 턴 진행
            }
        }
    }
Ejemplo n.º 14
0
 public void Init()
 {
     this.thing           = new Thing();
     this.behaviorManager = new BehaviorManager(this.thing);
 }
Ejemplo n.º 15
0
        public void Profiler_Load(object sender, EventArgs e)
        {
            m_vkcodes  = new VKCodes();
            m_profiles = new List <Profile>();

            // ModelRect
            m_dic_buttonRect = new Dictionary <WiimoteModel, Rectangle>();
            ReadRectsFromCsv(csv: Properties.Resources.modelRect);

            // Behavior
            m_bMgr = new BehaviorManager();
            m_bMgr.Add(new StandardBehavior());
            m_bMgr.Add(new MinecraftBehavior());

            m_dic_mouseAction = new Dictionary <string, MouseAction>
            {
                { "マウスのXを相対移動", MouseAction.MoveDx },
                { "マウスのYを相対移動", MouseAction.MoveDy },
                { "マウスのXを指定", MouseAction.MoveX },
                { "マウスのYを指定", MouseAction.MoveY },
                { "マウスのホイールを回転", MouseAction.ScrollWheel },
                { "マウスの左クリック", MouseAction.LeftClick },
                { "マウスの右クリック", MouseAction.RightClick },
                { "マウスの中クリック", MouseAction.MiddleClick }
            };

            // 装飾キーを追加
            m_dic_modKeys = new Dictionary <string, byte>
            {
                { "Shift", m_vkcodes["Shift"] },
                { "Ctrl", m_vkcodes["Ctrl"] },
                { "Alt", m_vkcodes["Alt"] },
                { "Win", m_vkcodes["LWin"] }
            };

            #region UIの初期化
            // RadioButton
            radioBtn_none.Checked    = true;
            radioBtn_JoyNone.Checked = true;

            // 設定Panel
            panel_setKeyMouse.Visible = true;
            panel_setJoystick.Visible = false;

            // Behavior
            combo_behavior.Items.AddRange(m_bMgr.GetBehaviorNames().ToArray());
            combo_behavior.SelectedIndex = 0;

            // キーボード
            combo_key.Items.AddRange(m_vkcodes.GetKeys().ToArray());

            // マウス
            combo_mouse.Items.AddRange(m_dic_mouseAction.Keys.ToArray());

            // 装飾キー
            combo_modKey.Items.AddRange(m_dic_modKeys.Keys.ToArray());

            #endregion

            LoadProfiles();

            // 詳細タブ
            listBox_models.Items.AddRange(Enum.GetNames(typeof(WiimoteModel)).Where(x => x != "_N_STICK").ToArray());
            listBox_models.SelectedIndex = 0;
        }
Ejemplo n.º 16
0
 public override void doBehavior(BehaviorManager manager)
 {
     manager.agent.destination = target.transform.position;
 }
Ejemplo n.º 17
0
 public override bool checkBehavior(BehaviorManager manager)
 {
     return(pathComplete(manager));
 }
Ejemplo n.º 18
0
 public virtual void updateBehavior(BehaviorManager manager)
 {
 }
Ejemplo n.º 19
0
 void OnEnable()
 {
     if (instance != null)
         throw new ApplicationException("Multiple BehaviorManagers found");
     instance = this;
     this.receivers = new List<IBehaviorUpdate>();
 }
Ejemplo n.º 20
0
 public virtual void doBehaviour(BehaviorManager manager)
 {
 }
Ejemplo n.º 21
0
        public void Start()
        {
            // cache for quick lookup
            behaviorManager = BehaviorManager.instance;

            // speed the game up a bit
            Time.timeScale = 2;

            // remember the starting position/rotation of the flag
            startFlagPosition = flag.position;
            startFlagRotation = flag.rotation;

            // find all of the NPCS
            for (int i = 0; i < NPCGroup.childCount; ++i) {
                NPCs.Add(NPCGroup.GetChild(i).GetComponent<NPC>());
            }

            // group the behaviors
            var allBehaviors = FindObjectsOfType(typeof(Behavior)) as Behavior[];
            for (int i = 0; i < allBehaviors.Length; ++i) {
                if (allBehaviors[i].group == 0) { // 0 indicates flag not taken behaviors
                    flagNotTakenBehaviors.Add(allBehaviors[i]);
                } else { // 1 indicates flag taken behaviors
                    flagTakenBehaviors.Add(allBehaviors[i]);
                }
            }

            // currently the flag is not taken and the game is active
            activeGroup = 0;
            gameActive = true;
        }
 public override void doBehavior(BehaviorManager manager)
 {
     manager.agent.destination = HealthPack.transform.position;
 }