void Start() { if (myBehaviorManager == null) myBehaviorManager = this.GetComponent<BehaviorManager>(); myBehaviorManager.OnBehaviorStateChangedEvent += HandleOnBehaviorStateChangedEvent; idleTimeRemaining = 0f; }
void OnEnable () { bm = FindObjectOfType<BehaviorManager>(); tween = GetComponent<dfTweenFloat>(); rm = GetComponent<dfRadialMenu>(); myControl = GetComponent<dfControl>(); oColor = myControl.Color; mainCamera = Camera.main; manager = FindObjectOfType<dfGUIManager>(); }
public static void SyncGlobalVariablesToICode(this BehaviorManager behaviorManager) { DoVariablesToICodeSync(GlobalVariables.Instance, ICode.GlobalVariables.GetVariables()); }
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); }
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); } }
public void Init() { this.thing = new Thing(); this.behaviorManager = new BehaviorManager(this.thing); }
public virtual bool checkBehavior(BehaviorManager manager) { return(false); }
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; }
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 } }
// 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로 놓으면 자동으로 턴 진행 } } }
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; }
public override void doBehavior(BehaviorManager manager) { manager.agent.destination = target.transform.position; }
public override bool checkBehavior(BehaviorManager manager) { return(pathComplete(manager)); }
public virtual void updateBehavior(BehaviorManager manager) { }
void OnEnable() { if (instance != null) throw new ApplicationException("Multiple BehaviorManagers found"); instance = this; this.receivers = new List<IBehaviorUpdate>(); }
public virtual void doBehaviour(BehaviorManager manager) { }
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; }