public void AddOrder(AgentOrder order) { Owner.WorldState.SetWSProperty(E_PropKey.E_ORDER, order.Type); switch (order.Type) { case AgentOrder.E_OrderType.E_GOTO: Owner.WorldState.SetWSProperty(E_PropKey.E_AT_TARGET_POS, false); DesiredDirection = order.Direction; DesiredPosition = order.Position; MoveSpeedModifier = order.MoveSpeedModifier; break; case AgentOrder.E_OrderType.E_STOPMOVE: Owner.WorldState.SetWSProperty(E_PropKey.E_AT_TARGET_POS, true); DesiredPosition = order.Position; break; case AgentOrder.E_OrderType.E_ATTACK: bool inRange = order.Target == null || (order.Target.Position - Owner.Position).magnitude <= WeaponRange; Owner.WorldState.SetWSProperty(E_PropKey.E_IN_WEAPONS_RANGE, inRange); DesiredTarget = order.Target; DesiredAttackType = order.AttackType; DesiredAttackPhase = order.AnimAttackData; break; default: break; } AgentOrderFactory.Return(order); }
private void CreateOrderAttack(E_AttackType type) { if (CouldBufferNewOrder() == false && CouldAddnewOrder() == false) { //Debug.Log(Time.timeSinceLevelLoad + " attack order rejected, already buffered one "); return; } AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_ATTACK); if (InputDirection != Vector3.zero) //Controls.Joystick.Direction != Vector3.zero) { order.Direction = InputDirection; //Controls.Joystick.Direction; } else { order.Direction = Transform.forward; } order.AnimAttackData = ProcessCombo(type); order.Target = GetBestTarget(false); if (CouldAddnewOrder()) { //Debug.Log("order " + (order.Target != null ? order.Target.name : "no target") + " " + order.AnimAttackData.AnimName); Owner.BlackBoard.OrderAdd(order); } else { //Debug.Log("order to queue " + (order.Target != null ? order.Target.name : "no target") + " " + order.AnimAttackData.AnimName); BufferedOrders.Enqueue(order); } }
private void CreateOrderMove(Vector3 direction) { if (CouldAddnewOrder() == false) { // Debug.Log("不能添加动作"); return; } if (lastDir != null) { direction = (direction + lastDir).normalized; lastDir = direction; } AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_GOTO); order.Direction = direction; order.MoveSpeedModifier = moveSpeed; Owner.BlackBoard.OrderAdd(order); Owner.BlackBoard.DesiredDirection = direction; ActionMove actionMove = ActionFactory.Create(ActionFactory.E_Type.E_MOVE) as ActionMove; GetComponent <AnimComponent>().HandleAction(actionMove); }
public void OnTriggerEnter(Collider other) { TriggerObject interaction = other.GetComponent <TriggerObject>(); if (interaction != null) { if (interaction.GetEntryTransform() == null) { return; } // 当玩家碰到触发器,播放使用动画 Owner.transform.position = interaction.GetEntryTransform().position; Owner.transform.rotation = interaction.GetEntryTransform().rotation; useMode = false; AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_USE); order.InteractionObject = interaction; order.Position = order.InteractionObject.GetEntryTransform().position; order.Interaction = E_InteractionType.On; Owner.BlackBoard.OrderAdd(order); ActionUseLever actionUseLever = ActionFactory.Create(ActionFactory.E_Type.E_USE_LEVER) as ActionUseLever; actionUseLever.InterObj = interaction; actionUseLever.Interaction = E_InteractionType.On; GetComponent <AnimComponent>().HandleAction(actionUseLever); return; } }
private void CreateOrderDodge() { if (Owner.BlackBoard.IsOrderAddPossible(AgentOrder.E_OrderType.E_DODGE) == false) { return; } Vector3 rollDir; if (InputDirection != Vector3.zero) //Controls.Joystick.Direction != Vector3.zero) { rollDir = InputDirection; // Controls.Joystick.Direction; } else { rollDir = Owner.Forward; } rollDir.Normalize(); AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_DODGE); order.Direction = rollDir; Owner.BlackBoard.OrderAdd(order); ComboProgress.Clear(); ClearBufferedOrder(); GuiManager.Instance.ShowComboProgress(ComboProgress); }
private void CreateOrderDodge() { if (Agent.BlackBoard.IsOrderAddPossible(AgentOrder.E_OrderType.E_DODGE) == false) { return; } Vector3 rollDir; if (MoveDirection != Vector3.zero) { rollDir = MoveDirection; } else { rollDir = Agent.Forward; } rollDir.Normalize(); AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_DODGE); order.Direction = rollDir; Agent.BlackBoard.AddOrder(order); ComboProgress.Clear(); ClearBufferedOrder(); //GuiManager.Instance.ShowComboProgress(ComboProgress); }
public void CreateOrderUse() { if (Agent.BlackBoard.IsOrderAddPossible(AgentOrder.E_OrderType.E_USE) == false) { return; } InteractionGameObject onObject = MissionZone.Instance.CurrentGameZone.GetNearestInteractionObject(Agent.Position, 2); if (onObject == null) { return; } if (onObject is InteractionLever) { InteractionLever lever = onObject as InteractionLever; if (lever.State != InteractionLever.E_State.E_OFF && lever.State != InteractionLever.E_State.E_OFF) { return; } AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_USE); order.InteractionObject = onObject; order.Position = order.InteractionObject.GetEntryTransform().position; order.Interaction = E_InteractionType.On; Agent.BlackBoard.AddOrder(order); return; } ComboProgress.Clear(); ClearBufferedOrder(); //GuiManager.Instance.ShowComboProgress(ComboProgress); }
private void CreateOrderAttack(E_AttackType type) { if (CouldBufferNewOrder() == false && CouldAddnewOrder() == false) { return; } AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_ATTACK); if (MoveDirection != Vector3.zero) { order.Direction = MoveDirection; } else { order.Direction = Transform.forward; } order.AnimAttackData = ProcessCombo(type); order.Target = MissionZone.Instance.GetBestTarget(Agent, LastAttacketTarget);; if (CouldAddnewOrder()) { Agent.BlackBoard.AddOrder(order); } else { BufferedOrders.Enqueue(order); } }
private void CreateOrderStop() { AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_STOPMOVE); Owner.BlackBoard.OrderAdd(order); GetComponent <AnimComponent>().HandleAction(ActionFactory.Create(ActionFactory.E_Type.E_IDLE)); }
void CreateOrderGoTo(Vector3 _moveDirection) { AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_GOTO); order.Direction = _moveDirection; order.Position = Agent.Position; order.MoveSpeedModifier = 1.0f; Agent.BlackBoard.AddOrder(order); }
private void CreateOrderGoTo() { if (CouldAddnewOrder() == false) { return; } AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_GOTO); order.Direction = Controls.Joystick.Direction; order.MoveSpeedModifier = Controls.Joystick.Force; Owner.BlackBoard.OrderAdd(order); }
void OnTriggerEnter(Collider other) { InteractionTrigger interaction = other.GetComponent <InteractionTrigger>(); if (interaction != null) { AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_USE); order.InteractionObject = interaction; order.Position = order.InteractionObject.GetEntryTransform().position; order.Interaction = E_InteractionType.On; Owner.BlackBoard.OrderAdd(order); return; } }
private void CreateOrderGoTo(Vector3 dir, float force) { if (CouldAddnewOrder() == false) { return; } AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_GOTO); order.Direction = dir; order.MoveSpeedModifier = force; Agent.BlackBoard.AddOrder(order); }
void CreateOrderAttack(E_AttackType type) { AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_ATTACK); order.AttackType = type; //todo ... 移动方向或者正前方 order.Direction = Transform.forward; //todo ... 攻击动画信息 order.AnimAttackData = null; //todo ... 获取当前最佳攻击对象 order.Target = null; //todo ... 根据条件添加 Agent.BlackBoard.AddOrder(order); }
void CreateOrderGoto(Vector3 _moveDirection) { // Agent.BlackBoard.DesiredDirection = _moveDirection; // Agent.BlackBoard.DesiredPosition = Agent.Position; // AgentAction _action = AgentActionFactory.Create(AgentActionFactory.E_Type.E_Move); // Agent.BlackBoard.AddAction(_action); AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_GOTO); order.Direction = _moveDirection; order.MoveSpeedModifier = 1; order.Position = Agent.Position; Agent.BlackBoard.AddOrder(order); }
private void CreateOrderGoTo() { if (CouldAddnewOrder() == false) { return; } AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_GOTO); Owner.BlackBoard.CameraDirection = CameraBehaviour.Instance.lookAt; order.Direction = InputDirection; // Controls.Joystick.Direction; order.MoveSpeedModifier = 0.6f; //Controls.Joystick.Force; //Debug.Log("order.MoveSpeedModifier=" + order.MoveSpeedModifier); Owner.BlackBoard.OrderAdd(order); }
static public AgentOrder Create(AgentOrder.E_OrderType type) { AgentOrder o; if (m_UnusedOrders.Count > 0) { o = m_UnusedOrders.Dequeue(); o.Type = type; } else { o = new AgentOrder(type); } m_InAction.Add(o); return(o); }
// 闪避动作 private void CreateOrderDodge() { if (Owner.BlackBoard.IsOrderAddPossible(AgentOrder.E_OrderType.E_DODGE) == false) { return; } AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_DODGE); order.Direction = Owner.Transform.forward; Owner.BlackBoard.OrderAdd(order); GetComponent <AnimComponent>().HandleAction(ActionFactory.Create(ActionFactory.E_Type.E_ROLL) as ActionRoll); // 清空连招 comboProgress.Clear(); ClearBufferedOrder(); // 清空画面显示 MainPanelCtrl.Instance.ComboProgressMessage(comboProgress); }
// 攻击动作 private void CreateOrderAttack(E_AttackType type) { if (CouldBufferNewOrder() == false && CouldAddnewOrder() == false) { // Debug.Log(Time.timeSinceLevelLoad + " attack order rejected, already buffered one "); return; } AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_ATTACK); order.Direction = Owner.Transform.forward; order.AnimAttackData = ProcessCombo(type); // 查找最优的目标对象 order.Target = GetBestTarget(false); if (CouldAddnewOrder()) { //Debug.Log("order " + (order.Target != null ? order.Target.name : "no target") + " " + order.AnimAttackData.AnimName); Owner.BlackBoard.OrderAdd(order); } else { //Debug.Log("order to queue " + (order.Target != null ? order.Target.name : "no target") + " " + order.AnimAttackData.AnimName); bufferedOrders.Enqueue(order); } ActionAttack attack = ActionFactory.Create(ActionFactory.E_Type.E_ATTACK) as ActionAttack; attack.Data = order.AnimAttackData; attack.AttackDir = Owner.Transform.forward; attack.Target = order.Target; Owner.BlackBoard.WeaponState = E_WeaponState.Ready; // currentAttackAction = attack; weaponStartTime = 0; GetComponent <AnimComponent>().HandleAction(attack); }
private void CreateOrderStop() { AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_STOPMOVE); Owner.BlackBoard.OrderAdd(order); }
public ActionResult Checkout(OrderViewModel ovModel) { if (SessionHelper.GetObjectFromJson <List <CartItem> >(HttpContext.Session, "cart") == null) { return(RedirectToAction("Index", "Products")); } var customerChk = _context.Customers.Where(c => c.Email == ovModel.Order.Email); if (customerChk.ToList().Count < 1) { var cust = new Customer(); cust.Name = ovModel.Order.Name; cust.Email = ovModel.Order.Email; cust.Phone = ovModel.Customer.Phone; cust.DistrictId = ovModel.Order.DistrictId; _context.Customers.Add(cust); _context.SaveChanges(); customer = cust; } else { customer = _context.Customers.Find(ovModel.Customer.Id); } var order = new Order { Name = customer.Name, Email = customer.Email, DistrictId = customer.DistrictId, //fixed portion ShippingAddress = ovModel.Order.ShippingAddress, PostalCode = ovModel.Order.PostalCode, StreetNo = ovModel.Order.StreetNo, CustomerId = customer.Id, TotalPrice = ovModel.TotalPrice, OrderDate = DateTime.Now, AccountNo = ovModel.Order.AccountNo, TransactionId = ovModel.Order.TransactionId }; _context.Orders.Add(order); _context.SaveChanges(); var cartList = SessionHelper.GetObjectFromJson <List <CartItem> >(HttpContext.Session, "cart"); ViewBag.total = cartList.Sum(c => c.Product.Price * c.Quantity); foreach (var item in cartList) { var order_product = new ProductOrder { OrderId = order.Id, ProductId = item.Product.Id, NumberOfProduct = item.Quantity }; _context.ProductOrders.Add(order_product); _context.SaveChanges(); var quantity = _context.Products.Where(c => c.Id == item.Product.Id).SingleOrDefault(); if (quantity != null) { var pro = _context.Products.Find(item.Product.Id); pro.ItemInStock = pro.ItemInStock - order_product.NumberOfProduct; _context.Products.Update(pro); _context.SaveChanges(); } } //clear the session now HttpContext.Session.Clear(); var agents = _context.Agents.Where(c => c.DistrictId == order.DistrictId).ToList(); var random = new Random(); var index = random.Next(0, agents.Count); var agent = agents[index]; var agentorder = new AgentOrder { AgentId = agent.Id, OrderId = order.Id, IsPaid = false, IsOnRoute = false, IsFullyCompleted = false }; _context.AgentOrders.Add(agentorder); _context.SaveChanges(); TempData["orderSuccess"] = "Your order has been placed successfully!"; return(RedirectToAction("Checkout")); }
static public void Return(AgentOrder order) { m_UnusedOrders.Enqueue(order); m_InAction.Remove(order); }
void CreateOrderStop() { AgentOrder order = AgentOrderFactory.Create(AgentOrder.E_OrderType.E_STOPMOVE); Agent.BlackBoard.AddOrder(order); }
public void OrderAdd(AgentOrder order) { // Debug.Log(Time.timeSinceLevelLoad + " order arrived " + order.Type); if (IsOrderAddPossible(order.Type)) { Owner.WorldState.SetWSProperty(E_PropKey.E_ORDER, order.Type); switch (order.Type) { case AgentOrder.E_OrderType.E_STOPMOVE: Owner.WorldState.SetWSProperty(E_PropKey.E_AT_TARGET_POS, true); DesiredPosition = Owner.Position; break; case AgentOrder.E_OrderType.E_GOTO: Owner.WorldState.SetWSProperty(E_PropKey.E_AT_TARGET_POS, false); DesiredPosition = order.Position; DesiredDirection = order.Direction; MoveSpeedModifier = order.MoveSpeedModifier; break; case AgentOrder.E_OrderType.E_DODGE: DesiredDirection = order.Direction; // Debug.Log(Time.timeSinceLevelLoad + " order arrived " + order.Type); break; case AgentOrder.E_OrderType.E_USE: Owner.WorldState.SetWSProperty(E_PropKey.E_USE_WORLD_OBJECT, true); if ((order.Position - Owner.Position).sqrMagnitude <= 1) { Owner.WorldState.SetWSProperty(E_PropKey.E_AT_TARGET_POS, true); } else { Owner.WorldState.SetWSProperty(E_PropKey.E_AT_TARGET_POS, false); } DesiredPosition = order.Position; InteractionObject = order.InteractionObject; Interaction = order.Interaction; break; case AgentOrder.E_OrderType.E_ATTACK: if (order.Target == null || (order.Target.Position - Owner.Position).magnitude <= (WeaponRange + 0.2f)) { Owner.WorldState.SetWSProperty(E_PropKey.E_IN_WEAPONS_RANGE, true); } else { Owner.WorldState.SetWSProperty(E_PropKey.E_IN_WEAPONS_RANGE, false); } DesiredAttackType = order.AttackType; DesiredTarget = order.Target; DesiredDirection = order.Direction; DesiredAttackPhase = order.AnimAttackData; break; } // Debug.Log(Time.timeSinceLevelLoad + " order arrived " + order.Type); } else if (order.Type == AgentOrder.E_OrderType.E_ATTACK) { // Debug.Log(Time.timeSinceLevelLoad + " " +order.Type + " is nto allowed because " + currentOrder); } AgentOrderFactory.Return(order); }
public async Task <ActionResult> Checkout(OrderViewModel ovModel) { if (SessionHelper.GetObjectFromJson <List <CartItem> >(HttpContext.Session, "cart") == null) { return(RedirectToAction("Index", "Products")); } Customer customer = new Customer(); var customerExisted = _context.Customers.Where(c => c.Email == ovModel.Order.Email).AsNoTracking().FirstOrDefault(); if (customerExisted == null) { //nw user var user = new AppUser { Email = ovModel.Order.Email, UserName = ovModel.Order.Email }; var res = await _userManager.CreateAsync(user); if (res.Succeeded) { var cust = new Customer { Id = NumberUtilities.GetUniqueNumber(), Name = ovModel.Order.Name, Email = ovModel.Order.Email, Phone = ovModel.Customer.Phone, UserId = user.Id }; await _context.Customers.AddAsync(cust); await _context.SaveChangesAsync(); customer = cust; } } else { customer = _context.Customers.Find(ovModel.Customer.Id); } var order = new Order { Id = NumberUtilities.GetUniqueNumber(), Name = customer.Name, Email = customer.Email, //fixed portion ShippingAddress = ovModel.Order.ShippingAddress, PostalCode = ovModel.Order.PostalCode, StreetNo = ovModel.Order.StreetNo, CustomerId = customer.Id, TotalPrice = ovModel.TotalPrice, OrderDate = DateTime.Now, AccountNo = ovModel.Order.AccountNo, TransactionId = ovModel.Order.TransactionId }; _context.Orders.Add(order); _context.SaveChanges(); var cartList = SessionHelper.GetObjectFromJson <List <CartItem> >(HttpContext.Session, "cart"); ViewBag.total = cartList.Sum(c => c.Product.Price * c.Quantity); foreach (var item in cartList) { var order_product = new ProductOrder { Id = NumberUtilities.GetUniqueNumber(), OrderId = order.Id, ProductId = item.Product.Id, NumberOfProduct = item.Quantity }; _context.ProductOrders.Add(order_product); _context.SaveChanges(); var quantity = _context.Products.Where(c => c.Id == item.Product.Id).SingleOrDefault(); if (quantity != null) { var pro = _context.Products.Find(item.Product.Id); pro.ItemInStock = pro.ItemInStock - order_product.NumberOfProduct; _context.Products.Update(pro); _context.SaveChanges(); } } //clear the session now HttpContext.Session.Clear(); var agents = _context.Agents.Where(c => c.User.DistrictId == customer.User.DistrictId).ToList(); var random = new Random(); var index = random.Next(0, agents.Count); var agent = agents[index]; var agentorder = new AgentOrder { Id = NumberUtilities.GetUniqueNumber(), AgentId = agent.Id, OrderId = order.Id, IsPaid = false, IsOnRoute = false, IsFullyCompleted = false }; _context.AgentOrders.Add(agentorder); _context.SaveChanges(); TempData["orderSuccess"] = "Your order has been placed successfully!"; return(RedirectToAction("Checkout")); }