Exemple #1
0
        private static void CalculateMyTankShotPredictions(Point point, Direction direction, List <Direction> command)
        {
            var startShotPoint = point;

            var startIndex = Math.Min(-1 - State.ThisRound.MyTank.ShotCountdownLeft, 1);

            for (var i = startIndex; i <= Bullet.DefaultSpeed * AppSettings.MyShotPredictionDepth; i++)
            {
                var shotPoint = BaseMobile.Shift(startShotPoint, direction);
                var shotCell  = Field.GetCell(shotPoint);

                var depth = (int)Math.Ceiling((decimal)i / 2);

                if (i >= -1)
                {
                    var actualDepth = (command.Count - 1) + Math.Max(0, State.ThisRound.MyTank.ShotCountdownLeft) + depth;

                    var directionActCommand = command.ToList();
                    directionActCommand.Add(Direction.Act);
                    shotCell.AddPrediction(actualDepth, PredictionType.MyShot, directionActCommand);
                }

                if (shotCell.CanShootThrough)
                {
                    startShotPoint = shotPoint;
                }
                else
                {
                    break;
                }
            }
        }
Exemple #2
0
        public Energy(BaseMobile mobile) : base(mobile)
        {
            MaxValue     = mobile.Dexterity.Value * 10;
            CurrentValue = MaxValue;

            Mobile.Dexterity.OnAfterValueChangedEvent += new Kryz.CharacterStats.CharacterStat.CharacterStatEventHandler(OnAfterDexterityChanged);
        }
Exemple #3
0
        public static void CalculateTankShotPredictions(Point point, PredictionType type, Direction direction, BaseTank tank, int maxDepth = 1, List <Direction> command = null)
        {
            var startShotPoint = point;

            var startIndex = Math.Min(-1 - tank.ShotCountdownLeft, 1);

            //if (!tank.IsShotThisRound)
            //    return;


            for (var i = startIndex; i <= Bullet.DefaultSpeed * maxDepth; i++)
            {
                var shotPoint = BaseMobile.Shift(startShotPoint, direction);
                var shotCell  = Field.GetCell(shotPoint);

                var depth = (int)Math.Ceiling((decimal)i / 2);

                if (i >= -1)
                {
                    var actualDepth = Math.Max(1, tank.ShotCountdownLeft) + depth;
                    shotCell.AddPrediction(actualDepth, type, command);
                }

                if (shotCell.CanShootThrough)
                {
                    startShotPoint = shotPoint;
                }
                else
                {
                    break;
                }
            }
        }
Exemple #4
0
        private static void PopulateMyHiddenTank(MyTank prevMyTank, List <Tree> trees, Direction?direction)
        {
            var prevMyTankStepPosition = prevMyTank.GetNextPositionNotCheckedForCanMove(direction);

            foreach (var tree in trees)
            {
                if (prevMyTankStepPosition != tree.Point)
                {
                    continue;
                }

                var thisHiddenMyTank = prevMyTank.DeepClone();
                thisHiddenMyTank.Point     = tree.Point;
                thisHiddenMyTank.Direction = direction;
                thisHiddenMyTank.UpdateElementByDirection();

                var cell = Field.GetCell(tree.Point);
                cell.Items.Insert(0, thisHiddenMyTank);
                State.ThisRound.MyTank = thisHiddenMyTank;

                if (State.PrevRound.CurrentMoveCommands.Contains(Direction.Act))
                {
                    var bulletPoint = BaseMobile.Shift(prevMyTank.Point, direction, Bullet.DefaultSpeed);

                    var bullet = new Bullet(Element.BULLET, bulletPoint);
                    bullet.Direction  = direction;
                    bullet.IsMyBullet = true;

                    var bulletCell = Field.GetCell(bulletPoint);
                    bulletCell.Items.Insert(0, bullet);
                    State.ThisRound.Bullets.Add(bullet);
                }
            }
        }
Exemple #5
0
        private void SetAnimation(BaseMobile mobile)
        {
            var equipment = this.ItemTemplate as BaseEquipment;

            var      movementAnimationHandler = GameObject.FindGameObjectWithTag("Player").GetComponentInChildren <MovementAnimationHandler>();
            Animator animator = null;

            switch (equipment.EquipmentType)
            {
            case EquipmentType.Chest:
                break;

            case EquipmentType.Legs:
                animator = movementAnimationHandler.LegsSlot.GetComponentInChildren <Animator>();
                animator.runtimeAnimatorController = IsEquipped ?
                                                     equipment.ItemPrefab.GetComponent <EquippableItemBehaviour>().AnimatorController : null;
                break;

            case EquipmentType.Boots:
                break;

            case EquipmentType.RightHand:
                break;

            case EquipmentType.LeftHand:
                break;
            }
        }
Exemple #6
0
        public Health(BaseMobile mobile) : base(mobile)
        {
            MaxValue     = mobile.Strength.Value * 10;
            CurrentValue = MaxValue;

            Mobile.Strength.OnAfterValueChangedEvent += new Kryz.CharacterStats.CharacterStat.CharacterStatEventHandler(OnAfterValueStrengthChanged);
        }
        /// <summary>
        ///  Preenche um objeto proposta com todas as informações contidas na base de dados da Proposta e de todos os seus itens.
        /// </summary>
        /// <returns> Objeto Proposta </returns>
        private Proposta fillProposta()
        {
            Proposta proposta = null;

            objTransacoes = new BaseMobile();
            daoProposta   = new DaoProposta();
            daoEmbalagem  = new DaoEmbalagem();

            try
            {
                //Carrega um list com informações gerais sobre a proposta atual na base Mobile.
                listInfoProposta = daoProposta.fillInformacoesProposta();

                //carrega um obj Proposta com a atual proposta na base mobile
                //e com o item top 1 da proposta que ainda não esteja separado.
                proposta = daoProposta.fillPropostaWithTop1Item();

                //Set o total de peças e o total de Itens para o objeto proposta
                proposta.setTotalValoresProposta(Convert.ToDouble(listInfoProposta[4]), Convert.ToDouble(listInfoProposta[3]));

                //Carrega informações de Embalagem para o produto que será trabalhado.
                proposta.ListObjItemProposta[0].Embalagens = daoEmbalagem.carregarEmbalagensProduto(proposta);

                //Set os valores para os atributos auxiliares.
                ProcedimentosLiberacao.inicializarProcedimentos(Convert.ToDouble(listInfoProposta[4]), Convert.ToDouble(listInfoProposta[3]), proposta.ListObjItemProposta[0].Quantidade, proposta.Volumes);

                //Carrega o formulário com as informações que serão manusueadas para a proposta e o item da proposta
                //this.fillCamposForm(proposta.Numero, (string)proposta.RazaoCliente, proposta.Totalpecas, proposta.TotalItens, (string)proposta.ListObjItemProposta[0].Partnumber, (string)proposta.ListObjItemProposta[0].Descricao, (string)proposta.ListObjItemProposta[0].NomeLocalLote, proposta.ListObjItemProposta[0].Quantidade.ToString());
                this.fillCamposForm(proposta);

                //Retorna o objeto proposta o qual terá suas informações trabalhadas do processo de conferencia do item.
                return(proposta);
            }
            catch (ArithmeticException ex)
            {
                StringBuilder sbMsg = new StringBuilder();
                sbMsg.Append("Problemas durante o processamento de informações sobre a proposta.\n");
                sbMsg.AppendFormat("Error : {0}", ex.Message);
                MainConfig.errorMessage(sbMsg.ToString(), "Operação Inválida!");
                throw;
                //return null;
            }
            catch (Exception ex)
            {
                StringBuilder sbMsg = new StringBuilder();
                sbMsg.Append("Problemas durante o processamento de informações sobre a proposta \n");
                sbMsg.AppendFormat("Error : {0}", ex.Message);
                sbMsg.Append("Contate o Administrador do sistema.");
                MainConfig.errorMessage(sbMsg.ToString(), "Sistem Error!");
                throw;
                //return null;
            }
            finally
            {
                //zera o obj transações
                objTransacoes = null;
                daoProposta   = null;
                proposta      = null;
            }
        }
Exemple #8
0
 public PhoneForm()
 {
     InitializeComponent();
     simCorp = new SimCorpMobile(new TextBoxOutput(PlayTextBox));
     simCorp.PlaybackDevice = simCorp.Speaker;
     unofficialHeadset      = new UnofficialHeadset(new RealSpeaker(0.2), new RealSpeaker(0.2), 50, new TextBoxOutput(PlayTextBox));
     samsungHeadset         = new SamsungHeadset(new RealSpeaker(0.5), new RealSpeaker(0.5), 20, new TextBoxOutput(PlayTextBox));
     externalSpeaker        = new ExternalSpeaker(new RealSpeaker(10), 20, new TextBoxOutput(PlayTextBox));
 }
Exemple #9
0
        public static void CalculateStuckPosition(BaseMobile mobileItem, PredictionType type, int maxDepth)
        {
            var cell = Field.GetCell(mobileItem.Point);

            for (var depth = 1; depth <= maxDepth; depth++)
            {
                cell.AddPrediction(depth, type, item: mobileItem);
            }
        }
Exemple #10
0
 public override bool Consume(ItemInstance instance, BaseMobile mobile)
 {
     if (mobile.Health.CurrentValue == mobile.Health.MaxValue)
     {
         Debug.Log("mobile is already at max health.");
         return(false);
     }
     mobile.Health.CurrentValue += (((int)instance.Quality + 0.5f) * 10);
     return(true);
 }
Exemple #11
0
 void InitGameData()
 {
     BaseMobile.Init();
     BaseItem.Init();
     // load all room id's into used id' section
     foreach (Room r in ScriptResolver.ImportedRooms)
     {
         r.RoomsIDsInUse.Add(r.RoomID);
     }
     Console.WriteLine("Server startup tasks complete.");
 }
Exemple #12
0
        private static void PopulateMyTankUnderTrees()
        {
            Settings.Get.ShowMyTankUnderTree = false; //todo: temp
            if (!State.HasPrevRound || Settings.Get.ShowMyTankUnderTree || State.ThisRound.MyTank != null)
            {
                return;
            }

            var trees      = State.ThisRound.Trees;
            var prevMyTank = State.PrevRound.MyTank;

            if (prevMyTank == null)
            {
                return;
            }

            if (State.PrevRound.CurrentMoveCommands.Count == 1 && State.PrevRound.CurrentMoveCommands[0] == Direction.Act)
            {
                return;
            }

            var prevDirection          = State.PrevRound.CurrentMoveCommands.FirstOrDefault(x => BaseMobile.ValidDirections.Contains(x));
            var prevMyTankStepPosition = prevMyTank.GetNextPositionNotCheckedForCanMove(prevDirection);

            foreach (var tree in trees)
            {
                if (prevMyTankStepPosition == tree.Point)
                {
                    var thisHiddenMyTank = prevMyTank.DeepClone();
                    thisHiddenMyTank.Point            = tree.Point;
                    thisHiddenMyTank.CurrentDirection = prevDirection;

                    var cell = Field.GetCell(tree.Point);
                    cell.Items.Insert(0, thisHiddenMyTank);
                    State.ThisRound.MyTank = thisHiddenMyTank;

                    if (State.PrevRound.CurrentMoveCommands.Contains(Direction.Act))
                    {
                        var bulletPoint = BaseMobile.Shift(prevMyTank.Point, prevDirection, Bullet.DefaultSpeed);

                        var bullet = new Bullet(Element.BULLET, bulletPoint);
                        bullet.CurrentDirection = prevDirection;

                        var bulletCell = Field.GetCell(bulletPoint);
                        bulletCell.Items.Insert(0, bullet);
                        State.ThisRound.Bullets.Add(bullet);
                    }
                }
            }
        }
Exemple #13
0
        public int SetCurrentAnimation(Vector2 direction, BaseMobile mobile)
        {
            //use the Run states by default
            string[] directionArray = null;

            if (mobile.IsAttacking)
            {
                directionArray = attackingAnimations;
            }
            else if (mobile.IsDefending)
            {
                directionArray = defendingAnimations;
            }
            else if (direction.magnitude < .01f)   //measure the magnitude of the input.
            {
                //if we are basically standing still, we'll use the Static states
                //we won't be able to calculate a direction if the user isn't pressing one, anyway!
                directionArray = idleAnimations;
            }
            else
            {
                //we can calculate which direction we are going in
                //use DirectionToIndex to get the index of the slice from the direction vector
                //save the answer to lastDirection
                directionArray = walkingAnimations;

                lastDirectionIndex = DirectionToIndex(direction, 4);
            }
            if (mobile.Health <= 0)
            {
                directionArray = deadAnimations;
            }

            //tell the animator to play the requested state
            var animationName = directionArray[lastDirectionIndex];

            if (lastAnimationName == animationName)
            {
                return(lastDirectionIndex);
            }

            lastDirection = direction;
            //play base character animation
            animator.Play(animationName, -1, 0);
            SetHandleSortIndex(lastDirectionIndex, mobile.IsAttacking);
            lastAnimationName = animationName;
            return(lastDirectionIndex);
        }
Exemple #14
0
 public void RemoveModifiers(BaseMobile mobile)
 {
     if (isModifiersSet)
     {
         var bonusList = ItemTemplate.GetBonusList();
         foreach (var bonus in bonusList)
         {
             var characterStat = GetField <CharacterStat>(mobile, bonus.ModifierName);
             if (characterStat != null)
             {
                 characterStat.RemoveAllModifiersFromSource(this);
             }
         }
         isModifiersSet = false;
     }
 }
Exemple #15
0
        public frmLogin()
        {
            try
            {
                daoUsuario = new DaoUsuario();

                //Configurações de criação do form
                InitializeComponent();
                //Seta as configurações principais a serem usadas na classe MainConfig
                MainConfig.setMainConfigurations();
                //Configura a string de conexão para conexão com o servidor.
                SqlServerConn.configuraStrConnection(System.IO.Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase), "strConn.txt");
                //Configura string de conexão E/OU cria a base mobile e todas as suas tabelas.
                BaseMobile.configurarBaseMobile();
                //Recupera Permissões a serem usadas no sistema mobile
                MainConfig.recuperaPermissoes();
                //Configura Layout
                this.configControls();
                //Preenche o combo de Usuários para que seja validado o Login
                this.preencheComboBoxUsuario(cbUsuario, daoUsuario.retornaListUsuarios(), Usuario.usuarioProperty.NOME, false);
            }
            catch (System.Data.SqlClient.SqlException sqlEx)
            {
                StringBuilder bdMsg = new StringBuilder();
                bdMsg.Append("\nOcorreu um problema durante a tentativa de conexão com a base de dados!");
                bdMsg.Append("\nA aplicação não poderá ser iniciada.");
                bdMsg.Append("\nDescription :" + sqlEx.Message);
                bdMsg.Append("\nSource :" + sqlEx.Source);
                MainConfig.errorMessage(bdMsg.ToString(), "Connection error");

                Application.Exit();
            }
            catch (Exception ex)
            {
                StringBuilder bdMsg = new StringBuilder();
                bdMsg.Append("\nO sistema não pode ser iniciado.");
                bdMsg.Append("\nFavor contate o administrador do sitema.");
                bdMsg.Append("\nDescription :" + ex.Message);
                MainConfig.errorMessage(bdMsg.ToString(), "Application Error.");

                Application.Exit();
            }
            finally
            {
                daoUsuario = null;
            }
        }
        void Update()
        {
            if (!this.IsPlaced)
            {
                return;
            }
            if (this.state == ETowerState.LOADING)
            {
                return;
            }
            if (this.state == ETowerState.WATCHING)
            {
                var layerMask = LayerMask.GetMask("Mobiles");
                var cols      = Physics.OverlapSphere(this.transform.position, this.attackRange, layerMask);
                if (cols.Length > 0)
                {
                    var target = cols[0].GetComponent <BaseMobile>();
                    Debug.Log(target.gameObject.name);
                    if (target)
                    {
                        Debug.Log("ATTACKING!!!!");
                        this.target = target;
                        this.state  = ETowerState.ATTACKING;
                    }
                }
                return;
            }

            if (target && Vector3.Distance(this.transform.position, target.transform.position) > this.attackRange)
            {
                this.target = null;
                this.state  = ETowerState.WATCHING;
                return;
            }

            if (this.target && !this.target.isActiveAndEnabled)
            {
                this.target = null;
                this.state  = ETowerState.WATCHING;
            }

            if (this.target && this.state == ETowerState.ATTACKING)
            {
                this.Attack();
            }
        }
Exemple #17
0
        public virtual void SetModifiers(BaseMobile mobile)
        {
            if (!isModifiersSet)
            {
                var bonusList = ItemTemplate.GetBonusList();
                foreach (var bonus in bonusList)
                {
                    var characterStat = GetField <CharacterStat>(mobile, bonus.ModifierName);
                    if (characterStat != null)
                    {
                        characterStat.AddModifier(new StatModifier(bonus.Value + (int)this.Quality, StatModType.Flat, this));
                    }
                }

                isModifiersSet = true;
            }
        }
        public void Interact(BaseMobile baseMobile)
        {
            Debug.Log("Interacted with rock tile");

            //TODO: Check if mobile is equipping pickaxe

            if (Source < 0)
            {
                //TODO: create popup that says there is no source left on this rock
                Debug.Log("There is no source left on this rock");
                return;
            }

            //TODO: Add source item to mobile's backpack
            Source--;
            Debug.Log(Source);
        }
Exemple #19
0
        private static void PopulateAiTanksUnderTrees()
        {
            if (!State.HasPrevRound)
            {
                return;
            }

            var trees       = State.ThisRound.Trees;
            var prevAiTanks = State.PrevRound.AiTanks;

            foreach (var tree in trees)
            {
                var prevHiddenAiTank =
                    prevAiTanks.FirstOrDefault(b => b.GetNextPositionNotCheckedForCanMove() == tree.Point);

                if (prevHiddenAiTank == null)
                {
                    continue;
                }

                var thisHiddenAiTank = prevHiddenAiTank.DeepClone();
                thisHiddenAiTank.Point = tree.Point;

                var cell = Field.GetCell(tree.Point);
                cell.Items.Insert(0, thisHiddenAiTank);
                State.ThisRound.AiTanks.Add(thisHiddenAiTank);

                if (prevHiddenAiTank.IsShotThisRound && prevHiddenAiTank.Direction.HasValue)
                {
                    var bulletPoint = BaseMobile.Shift(prevHiddenAiTank.Point, prevHiddenAiTank.Direction,
                                                       Bullet.DefaultSpeed);

                    var bullet = new Bullet(Element.BULLET, bulletPoint);
                    bullet.Direction = prevHiddenAiTank.Direction;

                    var bulletCell = Field.GetCell(bulletPoint);
                    bulletCell.Items.Insert(0, bullet);
                    State.ThisRound.Bullets.Add(bullet);
                }
            }
        }
Exemple #20
0
        private static void CalculateEnemyShotForDirection(Point point, Direction direction, EnemyTank tank)
        {
            var startShotPoint = point;

            //var startIndex = Math.Min(-1 - tank.ShotCountdownLeft, 1);
            var startIndex = 1;

            for (var i = startIndex; i <= Bullet.DefaultSpeed * AppSettings.EnemyTankShotPredictionDepth; i++)
            {
                var shotPoint = BaseMobile.Shift(startShotPoint, direction);
                var shotCell  = Field.GetCell(shotPoint);

                if (shotCell.IsWall)
                {
                    break;
                }

                //var depth = (int)Math.Ceiling((decimal)i / 2);
                //var actualDepth = Math.Max(1, tank.ShotCountdownLeft) + depth;

                var depth = (int)Math.Ceiling((decimal)i / 2);

                var shotCountDownLeft = tank.ShotCountdownLeft;
                var actualDepth       = shotCountDownLeft + depth;

                shotCell.AddPrediction(actualDepth, PredictionType.EnemyShot);

                if (shotCell.CanShootThrough)
                {
                    startShotPoint = shotPoint;
                }
                else
                {
                    break;
                }
            }
        }
 public BaseRangedWeapon(string name, float damage, float swingSpeed, BaseMobile mobile) : base(name, damage, swingSpeed, mobile)
 {
 }
Exemple #22
0
        /// <summary>
        /// Reliza todos os processos nescessários para efetuar a carga de dados na base Mobile.
        /// </summary>
        public static void carregaBaseMobile(FrmProposta frm)
        {
            var objTransacoes   = new BaseMobile();
            var objProposta     = new Proposta();
            var daoItemProposta = new DaoProdutoProposta();
            var daoProposta     = new DaoProposta();
            var daoProduto      = new DaoProduto();
            var daoEmbalagem    = new DaoEmbalagem();

            //LIMPA INFORMAÇÕES RESULTANTE DE OUTROS PRODUTOS JÁ CONFERIDOS
            ProcedimentosLiberacao.limpar();

            try
            {
                //Limpa a Base.
                objTransacoes.clearBaseMobile();

                //Carrega um objeto Proposta e inicia todo o procedimento.
                //Caso não exista propostas a serem liberadas gera um exception
                //onde será feito os tratamentos para evitar o travamento do sistema.
                if ((objProposta = daoProposta.fillTop1PropostaServidor()) != null)
                {
                    daoProposta.InsertOrUpdatePickingMobile(objProposta, MainConfig.UserOn.Codigo, Proposta.StatusLiberacao.TRABALHANDO, DateTime.Now);

                    //recupera o codigoPickingMobile da proposta trabalhada.
                    objProposta.CodigoPikingMobile = daoProposta.selectMaxCodigoPickingMobile(objProposta.Codigo);

                    //Realiza o Insert na Base Mobile
                    daoProposta.insertProposta(objProposta, MainConfig.UserOn.Codigo);

                    //Recupera List com itens da proposta
                    //Insert na Base Mobile tabela tb0002_ItensProposta
                    daoItemProposta.carregarBaseMobileItens(daoItemProposta.fillListItensProposta((int)objProposta.Codigo).ToList <ProdutoProposta>());

                    //Insert na base Mobile tabela tb0003_Produtos
                    //Recupera informações sobre os produtos existentes na proposta
                    daoProduto.insertProdutoBaseMobile(daoProduto.fillListProduto((int)objProposta.Codigo).ToList <Produto>());

                    //Armazena informações de embalagens do produto na base mobile.
                    daoEmbalagem.insertEmbalagemBaseMobile(daoEmbalagem.cargaEmbalagensProduto((int)objProposta.Codigo));

                    //Carrega Informações das Embalagens de Separação.
                    //Carrega Quantidade das Embalagens utilizadas nos volumes da separação
                    ProcedimentosLiberacao.ListEmbalagensSeparacao = daoEmbalagem.carregarInformacoesEmbalagensUtilizadas((Int32)objProposta.CodigoPikingMobile, daoEmbalagem.carregarEmbalagensSeparacao());
                }
                else
                {
                    throw new NoNewPropostaException("Não existem novas propostas a serem liberadas!!");
                }
            }
            catch (SqlQueryExceptions ex)
            {
                frm.exitOnError(ex.Message, "Próxima Proposta", false);
            }
            catch (NoNewPropostaException ex)
            {
                frm.exitOnError(ex.Message, "Próxima Proposta", false);
            }
            catch (SqlCeException sqlEx)
            {
                ProcedimentosLiberacao.interromperLiberacao(objProposta);
                daoProposta.updatePropostaTbPickingMobile(objProposta, Proposta.StatusLiberacao.NAOFINALIZADO, true, false);
                StringBuilder strBuilder = new StringBuilder();
                strBuilder.Append("O procedimento não pode ser concluído.\n");
                strBuilder.AppendFormat("Erro : {0}", sqlEx.Errors);
                strBuilder.AppendFormat("Description : {0}", sqlEx.Message);
                frm.exitOnError(strBuilder.ToString(), "SqlException!!", false);
            }
            catch (Exception ex)
            {
                ProcedimentosLiberacao.interromperLiberacao(objProposta);
                daoProposta.updatePropostaTbPickingMobile(objProposta, Proposta.StatusLiberacao.NAOFINALIZADO, true, false);
                StringBuilder strBuilder = new StringBuilder();
                strBuilder.Append("O procedimento não pode ser concluído.\n");
                strBuilder.AppendFormat(" Descrição: {0}", ex.Message);
                strBuilder.Append("\nContate o Administrador do sistema.");
                frm.exitOnError(strBuilder.ToString(), "SqlException!!", false);
            }
            finally
            {
                objTransacoes   = null;
                objProposta     = null;
                daoProposta     = null;
                daoProduto      = null;
                daoItemProposta = null;
                daoEmbalagem    = null;
            }
        }
        /// <summary>
        /// Realiza todos os procedimentos nescessários para carregar o próximo item a ser separado.
        /// </summary>
        /// 
        /// <returns>
        ///          TRUE --> caso exista um próximo item a ser trabalhado
        ///          FALSE --> caso não exista mais items para serem trabalhados.
        /// </returns>
        public static bool nextItemProposta(Proposta objProposta,FrmProposta frm)
        {
            bool hasItem = false;
            var daoItemProposta = new DaoProdutoProposta();
            var daoEtiqueta = new DaoEtiqueta();
            var objTransacoes = new BaseMobile();

            try
            {
                frm.clearParaProximoItem();

                tratarParaProximoItem(objProposta);
                //grava informações do item na base de dados mobile
                daoItemProposta.updateStatusItemProposta(objProposta.ListObjItemProposta[0]);
                //inseri informações das etiquetas referente ao produto liberado em formato Xml
                daoItemProposta.updateXmlItemProposta(montarXmlProcedimento(), objProposta.ListObjItemProposta[0].CodigoItemProposta);

                //carrega próximo item
                if (frm.temItensConferir())
                {
                    var prod = daoItemProposta.itemATrabalhar();
                    var daoEmbalagem = new DaoEmbalagem();

                    if (prod != null)
                    {
                        //Carrega informações de Embalagem para o produto que será trabalhado.
                        prod.Embalagens = daoEmbalagem.carregarEmbalagensProduto(prod);

                        hasItem = true;

                        objProposta.setNextItemProposta(prod);
                    }
                    else
                    {
                        hasItem = false;
                    }
                }
                else // CASO não tenha um próximo item
                {
                    hasItem = false;
                }

                //Se existir um próximo item
                if (hasItem)
                {
                    //seta Parametros para iniciar leitura do próximo item
                    inicializarProcedimentosProximoItem(objProposta.ListObjItemProposta[0].Quantidade);

                    //recarrega o form com as informações do próximo item.
                    //frm.fillCamposForm(objProposta, TotalPecas, TotalItens);
                    frm.fillCamposForm(objProposta);
                }
                else
                {
                    frm.clearFormulario(true, true);
                }
            }
            catch (SqlCeException Ex)
            {
                MessageBox.Show(Ex.Message);
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao carregar próximo item!", ex);
            }
            finally
            {
                daoEtiqueta = null;
                daoItemProposta = null;
                objTransacoes = null;
            }

            return hasItem;
        }
 public MobileInventory(BaseMobile mobile)
 {
     this.mobile = mobile;
     MaxWeight   = (float)mobile.Strength.Value * 10;
 }
Exemple #25
0
 public BaseDamagableProperty(BaseMobile mobile)
 {
     Mobile = mobile;
 }
Exemple #26
0
 private static string SelectionMsg(BaseMobile mobile)
 {
     return(mobile.PlaybackDeviceName + " playback selected" + Environment.NewLine);
 }
        private static void CalculateMyShotsForDirection(Point point, Direction direction, List <Command> commands, List <Direction> command, bool correctFirstShotDepth = false)
        {
            var startShotPoint = point;

            //var startIndex = Math.Min(1 - State.ThisRound.MyTank.ShotCountdownLeft, 1);
            var startIndex = 1;

            for (var i = startIndex; i <= Bullet.DefaultSpeed * AppSettings.MyShotPredictionDepth; i++)
            {
                var shotPoint = BaseMobile.Shift(startShotPoint, direction);
                var shotCell  = Field.GetCell(shotPoint);

                if (shotCell.IsWall)
                {
                    break;
                }

                var depth = (int)Math.Ceiling((decimal)i / 2);
                if (correctFirstShotDepth)
                {
                    depth--;
                }

                var directionActCommand = command.ToList();
                directionActCommand.Add(Direction.Act);

                var directionActCommands = commands.ToList();
                directionActCommands.Add(new Command(directionActCommand.ToArray()));

                var commandRoundsCount = directionActCommands.Count;
                var shotDepth          = depth;

                //var depthShotDelay = commandRoundsCount + shotDepth;

                //var shotCountDownDifference = State.ThisRound.MyTank.ShotCountdownLeft - depthShotDelay;

                var notShotRoundsCount = directionActCommands.Count(x => !x.IsActCommand());
                var shotCountDownLeft  = Math.Max(State.ThisRound.MyTank.ShotCountdownLeft - notShotRoundsCount, 0);
                //var shotCountDownLeft = 0;

                var actualDepth = commandRoundsCount + shotDepth + shotCountDownLeft;

                //var currentDirectionStr = directionActCommand.CommandsToString();

                //var shotCellPredictions = shotCell.Predictions.MyShotPredictions
                //   .Where(x => x.Depth == actualDepth && x.Commands.AreSameCommands(directionActCommands))
                //    .ToList();

                //if (!shotCellPredictions.Any())
                shotCell.AddPrediction(actualDepth, PredictionType.MyShot, directionActCommands);

                if (shotCell.CanShootThrough)
                {
                    startShotPoint = shotPoint;
                }
                else
                {
                    break;
                }
            }
        }
        /// <summary>
        /// Reliza todos os processos nescessários para efetuar a carga de dados na base Mobile.
        /// </summary>
        public static void carregaBaseMobile(FrmProposta frm)
        {
            var objTransacoes = new BaseMobile();
            var objProposta = new Proposta();
            var daoItemProposta = new DaoProdutoProposta();
            var daoProposta = new DaoProposta();
            var daoProduto = new DaoProduto();
            var daoEmbalagem = new DaoEmbalagem();

            //LIMPA INFORMAÇÕES RESULTANTE DE OUTROS PRODUTOS JÁ CONFERIDOS
            ProcedimentosLiberacao.limpar();

            try
            {
                //Limpa a Base.
                objTransacoes.clearBaseMobile();

                //Carrega um objeto Proposta e inicia todo o procedimento.
                //Caso não exista propostas a serem liberadas gera um exception
                //onde será feito os tratamentos para evitar o travamento do sistema.
                if ((objProposta = daoProposta.fillTop1PropostaServidor()) != null)
                {
                    daoProposta.InsertOrUpdatePickingMobile(objProposta, MainConfig.UserOn.Codigo, Proposta.StatusLiberacao.TRABALHANDO, DateTime.Now);

                    //recupera o codigoPickingMobile da proposta trabalhada.
                    objProposta.CodigoPikingMobile = daoProposta.selectMaxCodigoPickingMobile(objProposta.Codigo);

                    //Realiza o Insert na Base Mobile
                    daoProposta.insertProposta(objProposta, MainConfig.UserOn.Codigo);

                    //Recupera List com itens da proposta
                    //Insert na Base Mobile tabela tb0002_ItensProposta
                    daoItemProposta.carregarBaseMobileItens(daoItemProposta.fillListItensProposta((int)objProposta.Codigo).ToList<ProdutoProposta>());

                    //Insert na base Mobile tabela tb0003_Produtos
                    //Recupera informações sobre os produtos existentes na proposta
                    daoProduto.insertProdutoBaseMobile(daoProduto.fillListProduto((int)objProposta.Codigo).ToList<Produto>());

                    //Armazena informações de embalagens do produto na base mobile.
                    daoEmbalagem.insertEmbalagemBaseMobile(daoEmbalagem.cargaEmbalagensProduto((int)objProposta.Codigo));

                    //Carrega Informações das Embalagens de Separação.
                    //Carrega Quantidade das Embalagens utilizadas nos volumes da separação
                    ProcedimentosLiberacao.ListEmbalagensSeparacao = daoEmbalagem.carregarInformacoesEmbalagensUtilizadas((Int32)objProposta.CodigoPikingMobile, daoEmbalagem.carregarEmbalagensSeparacao());

                }
                else
                {
                    throw new NoNewPropostaException("Não existem novas propostas a serem liberadas!!");
                }
            }
            catch (SqlQueryExceptions ex)
            {
                frm.exitOnError(ex.Message, "Próxima Proposta", false);
            }
            catch (NoNewPropostaException ex)
            {
                frm.exitOnError(ex.Message, "Próxima Proposta", false);
            }
            catch (SqlCeException sqlEx)
            {
                ProcedimentosLiberacao.interromperLiberacao(objProposta);
                daoProposta.updatePropostaTbPickingMobile(objProposta, Proposta.StatusLiberacao.NAOFINALIZADO, true, false);
                StringBuilder strBuilder = new StringBuilder();
                strBuilder.Append("O procedimento não pode ser concluído.\n");
                strBuilder.AppendFormat("Erro : {0}", sqlEx.Errors);
                strBuilder.AppendFormat("Description : {0}", sqlEx.Message);
                frm.exitOnError(strBuilder.ToString(), "SqlException!!", false);
            }
            catch (Exception ex)
            {
                ProcedimentosLiberacao.interromperLiberacao(objProposta);
                daoProposta.updatePropostaTbPickingMobile(objProposta, Proposta.StatusLiberacao.NAOFINALIZADO, true, false);
                StringBuilder strBuilder = new StringBuilder();
                strBuilder.Append("O procedimento não pode ser concluído.\n");
                strBuilder.AppendFormat(" Descrição: {0}", ex.Message);
                strBuilder.Append("\nContate o Administrador do sistema.");
                frm.exitOnError(strBuilder.ToString(), "SqlException!!", false);
            }
            finally
            {
                objTransacoes = null;
                objProposta = null;
                daoProposta = null;
                daoProduto = null;
                daoItemProposta = null;
                daoEmbalagem = null;
            }
        }
        /// <summary>
        /// Realiza todos os procedimentos nescessários para carregar o próximo item a ser separado.
        /// </summary>
        ///
        /// <returns>
        ///          TRUE --> caso exista um próximo item a ser trabalhado
        ///          FALSE --> caso não exista mais items para serem trabalhados.
        /// </returns>
        private bool nextItemProposta()
        {
            bool hasItem = false;

            daoItemProposta = new DaoProdutoProposta();
            daoEtiqueta     = new DaoEtiqueta();
            objTransacoes   = new BaseMobile();

            try
            {
                this.clearParaProximoItem();
                //processa Quantidade de itens
                ProcedimentosLiberacao.decrementaQtdTotalItens(1);
                //processa qunatidade de peças
                ProcedimentosLiberacao.decrementaQtdTotalPecas(objProposta.ListObjItemProposta[0].Quantidade);
                //seta status para separado
                ProcedimentosLiberacao.setStatusProdutoParaSeparado(objProposta.ListObjItemProposta[0]);
                //grava informações do item na base de dados mobile
                daoItemProposta.updateStatusItemProposta(objProposta.ListObjItemProposta[0]);

                ////ESTE TRECHO TALVES ESTEJA SENDO DESNECESSÀRIO.
                ////ANALIZAR MELHOR Action SUA UTILIZACAO
                //daoEtiqueta.insertSequencia(ProcedimentosLiberacao.EtiquetasLidas);


                //inseri informações das etiquetas referente ao produto liberado em formato Xml
                daoItemProposta.updateXmlItemProposta(Etiqueta.gerarXmlItensEtiquetas(ProcedimentosLiberacao.EtiquetasLidas), objProposta.ListObjItemProposta[0].CodigoItemProposta);

                //carrega próximo item
                if (ProcedimentosLiberacao.TotalItens > 0)
                {
                    ProdutoProposta prod = daoItemProposta.fillTop1ItemProposta();

                    //Carrega informações de Embalagem para o produto que será trabalhado.
                    prod.Embalagens = daoEmbalagem.carregarEmbalagensProduto(prod);

                    if (prod != null)
                    {
                        hasItem = true;

                        objProposta.setNextItemProposta(prod);
                    }
                    else
                    {
                        hasItem = false;
                    }
                }
                else // CASO não tenha um próximo item
                {
                    hasItem = false;
                }

                //Se existir um próximo item
                if (hasItem)
                {
                    //seta Parametros para iniciar leitura do próximo item
                    ProcedimentosLiberacao.inicializarProcedimentosProximoItem(objProposta.ListObjItemProposta[0].Quantidade);

                    //recarrega o form com as informações do próximo item.
                    this.fillCamposForm(objProposta, ProcedimentosLiberacao.TotalPecas, ProcedimentosLiberacao.TotalItens);
                }
                else
                {
                    this.clearFormulario(true, true);
                }
            }
            catch (SqlCeException Ex)
            {
                MessageBox.Show(Ex.Message);
            }
            catch (Exception ex)
            {
                throw new Exception("Erro ao carregar próximo item!", ex);
            }
            finally
            {
                daoEtiqueta     = null;
                daoItemProposta = null;
            }

            return(hasItem);
        }
 public abstract void OnHit(BaseMobile mobile);
 public RoundShield(string name, float defendRate, float swingSpeed, BaseMobile mobile) : base(name, defendRate, swingSpeed, mobile)
 {
 }
        /// <summary>
        /// Reliza todos os processos nescessários para efetuar a carga de dados na base Mobile.
        /// </summary>
        private void carregaBaseMobile()
        {
            objTransacoes   = new BaseMobile();
            objProposta     = new Proposta();
            daoItemProposta = new DaoProdutoProposta();
            daoProposta     = new DaoProposta();
            daoProduto      = new DaoProduto();
            daoEmbalagem    = new DaoEmbalagem();

            try
            {
                //Limpa a Base.
                objTransacoes.clearBaseMobile();

                //Carrega um objeto Proposta e inicia todo o procedimento.
                //Caso não exista propostas a serem liberadas gera um exception
                //onde será feito os tratamentos para evitar o travamento do sistema.
                if ((objProposta = daoProposta.fillTop1PropostaServidor()) != null)
                {
                    daoProposta.InsertOrUpdatePickingMobile(objProposta, MainConfig.CodigoUsuarioLogado, Proposta.StatusLiberacao.TRABALHANDO, DateTime.Now);

                    //recupera o codigoPickingMobile da proposta trabalhada.
                    objProposta.CodigoPikingMobile = daoProposta.selectMaxCodigoPickingMobile(objProposta.Codigo);

                    //Realiza o Insert na Base Mobile
                    daoProposta.insertProposta(objProposta, MainConfig.CodigoUsuarioLogado);

                    ////Recupera List com itens da proposta
                    //this.listaProdutoProposta = daoItemProposta.fillListItensProposta((int)objProposta.Codigo).ToList<ProdutoProposta>();
                    ////Insert na Base Mobile tabela tb0002_ItensProsposta
                    //daoItemProposta.insertItemProposta(listaProdutoProposta.ToList<ProdutoProposta>());

                    //Recupera List com itens da proposta
                    //Insert na Base Mobile tabela tb0002_ItensProposta
                    daoItemProposta.insertItemProposta(daoItemProposta.fillListItensProposta((int)objProposta.Codigo).ToList <ProdutoProposta>());

                    //Recupera informações sobre os produtos existentes na proposta
                    //this.listaProduto = daoProduto.fillListProduto((int)objProposta.Codigo).ToList<Produto>();
                    //daoProduto.insertProdutoBaseMobile(listaProduto.ToList<Produto>());

                    //Insert na base Mobile tabela tb0003_Produtos
                    //Recupera informações sobre os produtos existentes na proposta
                    daoProduto.insertProdutoBaseMobile(daoProduto.fillListProduto((int)objProposta.Codigo).ToList <Produto>());

                    //Armazena informações de embalagens do produto na base mobile.
                    daoEmbalagem.insertEmbalagemBaseMobile(daoEmbalagem.cargaEmbalagensProduto((int)objProposta.Codigo));

                    //Carrega Informações das Embalagens de Separação.
                    ProcedimentosLiberacao.ListEmbalagensSeparacao = daoEmbalagem.carregarEmbalagensSeparacao();
                }
                else
                {
                    throw new NoNewPropostaException("Não existem novas propostas a serem liberadas!!");
                }
            }
            catch (SqlQueryExceptions ex)
            {
                this.exitOnError(ex.Message, "Próxima Proposta");
            }
            catch (NoNewPropostaException ex)
            {
                this.exitOnError(ex.Message, "Próxima Proposta");
            }
            catch (SqlCeException sqlEx)
            {
                StringBuilder strBuilder = new StringBuilder();
                strBuilder.Append("Ocorreram problemas durante a carga de dados na tabela tb0002_ItensProposta. \n");
                strBuilder.Append("O procedimento não pode ser concluído");
                strBuilder.AppendFormat("Erro : {0}", sqlEx.Errors);
                strBuilder.AppendFormat("Description : {0}", sqlEx.Message);
                MainConfig.errorMessage(strBuilder.ToString(), "SqlException!!");
            }
            catch (Exception ex)
            {
                StringBuilder sbMsg = new StringBuilder();
                sbMsg.Append("Ocorreram problemas durante a carga de dados para a Base Mobile \n");
                sbMsg.AppendFormat("Error : {0}", ex.Message);
                sbMsg.Append("\nContate o Administrador do sistema.");
                MainConfig.errorMessage(sbMsg.ToString(), "Sistem Error!");
            }
            finally
            {
                objTransacoes   = null;
                objProposta     = null;
                daoProposta     = null;
                daoProduto      = null;
                daoItemProposta = null;
                daoEmbalagem    = null;
            }
        }