コード例 #1
0
        private static void AddToController(AddToBehavior addToBehavior, BehaviorController controller)
        {
            switch (addToBehavior.Type)
            {
            case Type.Combat:
                controller.CombatController.AddRule(addToBehavior.Rule);
                break;

            case Type.Pull:
                controller.PullController.AddRule(addToBehavior.Rule);
                break;

            case Type.Buff:
                controller.BuffController.AddRule(addToBehavior.Rule);
                break;

            case Type.Rest:
                controller.RestController.AddRule(addToBehavior.Rule);
                break;

            case Type.PrePull:
                controller.PrePullController.AddRule(addToBehavior.Rule);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
コード例 #2
0
    protected virtual void Awake()
    {
        behaviorController = GetComponent <BehaviorController>();

        // 기본적으로 행동 시작을 허용하도록 합니다.
        onBehaviorStarted = () => allowStartBehavior = true;
    }
コード例 #3
0
    public void DoMotion(EnumDoMotionType doMotionType)
    {
        BehaviorController behaviorController = m_Property.GetBehaviorController();

        if (behaviorController == null)
        {
            BehaviorManager.Instance.LogErrorFormat(m_Agent, "behaviorController is null");
            return;
        }

        switch (doMotionType)
        {
        case EnumDoMotionType.DoSlide:
            behaviorController.Slide(0.1f);
            BehaviorManager.Instance.LogFormat(m_Agent, "DoMotion Slide");
            break;

        case EnumDoMotionType.DoStop:
            behaviorController.StopMove();
            BehaviorManager.Instance.LogFormat(m_Agent, "DoMotion StopMove");
            break;

        default:
            break;
        }
    }
コード例 #4
0
        public CollisionProcessor(int _gridSize,
                                  FixedPoint w, FixedPoint h, FixedPoint bounds,
                                  BehaviorController bc)
        {
            gridSize = _gridSize;

            sceneWidth  = w;
            sceneHeight = h;

            boundarySize = bounds;

            gridCellWidth  = w / (FixedPoint)_gridSize;
            gridCellHeight = h / (FixedPoint)_gridSize;

            colliderGrid = new Body[gridSize][][];

            for (int i = 0; i < _gridSize; i++)
            {
                colliderGrid[i] = new Body[gridSize][];

                for (int j = 0; j < _gridSize; j++)
                {
                    colliderGrid[i][j] = new Body[gridCapacity];
                }
            }

            behaviorController = bc;
        }
コード例 #5
0
    void Start()
    {
        behaviorController = GetComponent <BehaviorController>();
        var builder = new BehaviourTreeBuilder();

        tree = builder.Sequence("gatherResources").Splice(CreateGatherTreeSequence())
               .End()
               .Build();
    }
コード例 #6
0
        public BehaviorForm(BehaviorController behaviorController)
        {
            InitializeComponent();
            var    executableFileInfo      = new FileInfo(Application.ExecutablePath);
            string executableDirectoryName = executableFileInfo.DirectoryName;

            _ourDirectory = executableDirectoryName;
            PveBehaviorSettings.LoadSettings();
            _behavior = behaviorController ?? new BehaviorController();
        }
コード例 #7
0
ファイル: Behavior.cs プロジェクト: kevinwall1992/Neumann
    public static T GetBehavior <T>(this BehaviorController behavior_controller) where T : Behavior
    {
        if (!behavior_map.ContainsKey(behavior_controller) ||
            !behavior_map[behavior_controller].ContainsKey(typeof(T)))
        {
            return(null);
        }

        return(behavior_map[behavior_controller][typeof(T)] as T);
    }
コード例 #8
0
ファイル: Behavior.cs プロジェクト: kevinwall1992/Neumann
    public static void Stop <T>(this BehaviorController behavior_controller) where T : Behavior
    {
        Behavior behavior = behavior_controller.GetBehavior <T>();

        if (behavior == null)
        {
            return;
        }

        behavior.CleanUp();
        GameObject.Destroy(behavior);
        behavior_map[behavior_controller][typeof(T)] = null;
    }
コード例 #9
0
    public void Start()
    {
        behaviorController  = new BehaviorController(this);
        collisionController = new CollisionProcessor(10, sceneWidth, sceneHeight, boundarySize, behaviorController);

        mouseTarget = new Placeholder(2);
        MaterializeEntity(mouseTarget);

        mainMenu.start.onClick.AddListener(() =>
        {
            paused = false;
            mainMenu.gameObject.SetActive(false);
        });
    }
コード例 #10
0
    /// 临时代码
    public bool IsHasLeapBreak()
    {
        SpacecraftEntity spacecraftEntity = GetMainPlayer();

        if (spacecraftEntity != null)
        {
            BehaviorController behaviorController = spacecraftEntity.GetSyncTarget().gameObject.GetComponent <BehaviorController>();
            if (behaviorController != null)
            {
                return(behaviorController.HasBehaviorType(BehaviorController.BehaviorType.BT_LeapBreak));
            }
        }

        return(false);
    }
コード例 #11
0
 private void LoadBehavior()
 {
     _behavior = new BehaviorController();
     ClearTree(BeComRules);
     ClearTree(BePullRules);
     ClearTree(BeRestRules);
     ClearTree(BeBuffRules);
     ClearTree(BePrePullRules);
     _behavior.Load(_ourDirectory + "\\Behaviors\\" + BeTBSelectBehavior.SelectedItem + ".xml");
     _behavior.CombatController.GetRules.Sort();
     _behavior.RestController.GetRules.Sort();
     _behavior.PullController.GetRules.Sort();
     _behavior.BuffController.GetRules.Sort();
     _behavior.PrePullController.GetRules.Sort();
     BeCombatDistance.Value     = _behavior.CombatDistance;
     BePullDistance.Value       = _behavior.PullDistance;
     BePrePullDistance.Value    = _behavior.PrePullDistance;
     BeEnableAutoAttack.Checked = _behavior.UseAutoAttack;
     BeSendPet.Checked          = _behavior.SendPet;
     BeGlobalCooldown.Value     = _behavior.GlobalCooldown;
     foreach (Rule rule in _behavior.CombatController.GetRules)
     {
         AddCondition(rule, BeComRules);
     }
     foreach (Rule rule in _behavior.PullController.GetRules)
     {
         AddCondition(rule, BePullRules);
     }
     foreach (Rule rule in _behavior.RestController.GetRules)
     {
         AddCondition(rule, BeRestRules);
     }
     foreach (Rule rule in _behavior.BuffController.GetRules)
     {
         AddCondition(rule, BeBuffRules);
     }
     foreach (Rule rule in _behavior.PrePullController.GetRules)
     {
         AddCondition(rule, BePrePullRules);
     }
     BeTabs.Enabled                      = true;
     BeBarRuleModifier.Enabled           = true;
     BeGMisc.Enabled                     = true;
     PveBehaviorSettings.LoadedBeharvior = BeTBSelectBehavior.SelectedItem.ToString();
     PveBehaviorSettings.SaveSettings();
 }
コード例 #12
0
ファイル: PVEBehaviorCombat.cs プロジェクト: semi420/lazybot
 public override void BotStarted()
 {
     if (File.Exists(OurDirectory + "\\Behaviors\\" + PveBehaviorSettings.LoadedBeharvior + ".xml"))
     {
         Behavior = new BehaviorController();
         Behavior.Load(OurDirectory + "\\Behaviors\\" + PveBehaviorSettings.LoadedBeharvior + ".xml");
     }
     CheckBuffAndKeys(Behavior.PullController.GetRules);
     CheckBuffAndKeys(Behavior.CombatController.GetRules);
     CheckBuffAndKeys(Behavior.BuffController.GetRules);
     CheckBuffAndKeys(Behavior.RestController.GetRules);
     Behavior.CombatController.GetRules.Sort();
     Behavior.BuffController.GetRules.Sort();
     Behavior.BuffController.GetRules.Sort();
     Behavior.PrePullController.GetRules.Sort();
     Behavior.PullController.GetRules.Sort();
 }
コード例 #13
0
ファイル: Behavior.cs プロジェクト: kevinwall1992/Neumann
    public static T Start <T>(this BehaviorController behavior_controller) where T : Behavior
    {
        GameObject host = behavior_controller.BehaviorHost;

        T behavior = host.GetComponent <T>();

        if (behavior == null)
        {
            behavior = host.AddComponent <T>();
        }

        if (!behavior_map.ContainsKey(behavior_controller))
        {
            behavior_map[behavior_controller] = new Dictionary <System.Type, Behavior>();
        }
        behavior_map[behavior_controller][typeof(T)] = behavior;

        return(behavior);
    }
コード例 #14
0
    public override void OnInitialize(ISpacecraftMotionProperty property)
    {
        m_Property      = property;
        m_Transform     = m_Property.GetRootTransform();
        m_Rigidbody     = m_Property.GetRigidbody();
        m_GameplayProxy = GameFacade.Instance.RetrieveProxy(ProxyName.GameplayProxy) as GameplayProxy;

        InitializeMovionAttribute();

        m_BehaviorController           = m_Property.GetBehaviorController();
        m_BehaviorController.Callback += OnBehaviorControllerEvent;

        RefreshSpacecraftMotionState();

        /// TODO 创建运动流
        if (m_Property.IsMain())
        {
            HeroMoveHandler.StartHeroMoveStream();
        }
    }
コード例 #15
0
        public override void Update(float _TimeElapsed)
        {
            Vector2 SteeringForce = VectorMath.Truncate(BehaviorController.CombinedSteeringForce(), MaxForce);
            Vector2 Acceleration  = SteeringForce / this.Mass;

            this.Velocity += Acceleration * _TimeElapsed;

            this.Velocity = VectorMath.Truncate(this.Velocity, this.MaxSpeed);

            this.Location += this.Velocity * _TimeElapsed;

            if (this.Velocity.LengthSquared() > 0.00000001)
            {
                this.Heading = Vector2.Normalize(this.Velocity);
                this.Side    = VectorMath.Perp(this.Heading);
            }

            this.Angle = VectorMath.VectorToAngle(this.Velocity);

            //this.Location = VectorMath.WrapAround(this.Location, 640, 480);
        }
コード例 #16
0
 private void BeTbNewBehaviorPreviewKeyDown(object sender, PreviewKeyDownEventArgs e)
 {
     if (e.KeyValue == 13)
     {
         SaveCurrentBehavior();
         _behavior = new BehaviorController {
             Name = BeTBNewBehavior.Text
         };
         _behavior.ResetControllers();
         ClearTree(BeComRules);
         ClearTree(BePullRules);
         ClearTree(BePrePullRules);
         ClearTree(BeBuffRules);
         ClearTree(BeRestRules);
         BeTBSelectBehavior.Items.Add(_behavior.Name);
         BeTBSelectBehavior.SelectedIndex    = BeTBSelectBehavior.FindStringExact(_behavior.Name);
         BeTBNewBehavior.Text                = "Enter name and press return to create new behavior.";
         PveBehaviorSettings.LoadedBeharvior = _behavior.Name;
         SaveCurrentBehavior();
         LoadBehavior();
     }
 }
コード例 #17
0
        /******************************************** OTHER FUNCTIONS ***************************************************
        * This section holds all other functions that might be called by the primitives to retrieve values for example.*
        * In principle, every function in this section should only be called from within primitives.                   *
        ****************************************************************************************************************/

        /// <summary>
        /// Initialize the main manager
        /// </summary>
        private void Init()
        {
            this.resources           = new List <GameObject>();
            this.spawn_c             = null;
            this.selected_unit       = null;
            this.resource_spawn_area = new Area(this.game_area.center, this.game_area.width / 12.0f, this.game_area.height - 30.0f);

            if (Initializer.Actual != null)
            {
                if (!PropertiesManager.Actual.PropertiesAssigned)
                {
                    PropertiesManager.Actual.AssignProperties();
                }
                GroupController.ClearGroups();
                BehaviorController.ClearBehaviors();
                BehaviorController.LoadBehaviors(1, Initializer.Actual.red_team);
                BehaviorController.LoadBehaviors(2, Initializer.Actual.blue_team);

                this.spawn_delay   = (float)60 / (float)Initializer.Actual.ressources_time;
                this.max_resources = Items.WarResource.MaxRessources;
            }
            this.InitTeams();
        }
コード例 #18
0
 public override void Initialize(GameObject caster, GameObject target)
 {
     behaviorController = target.GetComponent <BehaviorController> ();
 }
コード例 #19
0
        private void BtnCreateClick(object sender, EventArgs e)
        {
            if (File.Exists(PVEBehaviorCombat.OurDirectory + "\\Behaviors\\" + TBName.Text + ".xml"))
            {
                DialogResult result = MessageBoxEx.Show("Behavior exist - overwrite?", "Behavior exist - overwrite?",
                                                        MessageBoxButtons.OKCancel);
                switch (result)
                {
                case DialogResult.Cancel:
                    return;
                }
            }
            var controller = new BehaviorController
            {
                SendPet           = false,
                UseAutoAttack     = true,
                PullDistance      = 9,
                PrePullDistance   = 30,
                CombatDistance    = 3,
                GlobalCooldown    = BeGlobalCooldown.Value,
                Name              = TBName.Text,
                BuffController    = new RuleController(),
                PrePullController = new RuleController(),
                PullController    = new RuleController(),
                RestController    = new RuleController(),
                CombatController  = new RuleController()
            };

            for (int i = 0; i < Normal.Items.Count; i++)
            {
                if (Normal.GetItemChecked(i))
                {
                    var addToBehavior = (AddToBehavior)Normal.Items[i];
                    AddToController(addToBehavior, controller);
                }
            }
            for (int i = 0; i < Spec1.Items.Count; i++)
            {
                if (Spec1.GetItemChecked(i))
                {
                    var addToBehavior = (AddToBehavior)Spec1.Items[i];
                    AddToController(addToBehavior, controller);
                }
            }
            for (int i = 0; i < Spec2.Items.Count; i++)
            {
                if (Spec2.GetItemChecked(i))
                {
                    var addToBehavior = (AddToBehavior)Spec2.Items[i];
                    AddToController(addToBehavior, controller);
                }
            }
            for (int i = 0; i < Spec3.Items.Count; i++)
            {
                if (Spec3.GetItemChecked(i))
                {
                    var addToBehavior = (AddToBehavior)Spec3.Items[i];
                    AddToController(addToBehavior, controller);
                }
            }
            AddToController((AddToBehavior)CBSelectSpecial.SelectedItem, controller);
            AddToController((AddToBehavior)CBSelectSpecial2.SelectedItem, controller);
            AddToController((AddToBehavior)CBSelectSpecial3.SelectedItem, controller);
            controller.Save();
            PveBehaviorSettings.LoadedBeharvior = TBName.Text;
            PveBehaviorSettings.SaveSettings();
            MessageBoxEx.Show("Created behavior, re-open the behavior settings window to load it");
        }
コード例 #20
0
 void Start()
 {
     behaviorController = GetComponent <BehaviorController>();
 }
コード例 #21
0
 protected virtual void Start()
 {
     behaviorController = GetComponent <BehaviorController> ();
 }