Ejemplo n.º 1
0
Archivo: Check.cs Proyecto: fberga/Iren
        public override CheckOutput ExecuteCheck(Excel.Worksheet ws, DefinedNames nomiDefiniti, CheckObj check)
        {
            _ws           = ws;
            _nomiDefiniti = nomiDefiniti;
            _check        = check;

            CheckOutput n = new CheckOutput();

            switch (check.Type)
            {
            case 1:
                n = CheckFunc1();
                break;

            case 2:
                n = CheckFunc2();
                break;

            case 3:
                n = CheckFunc3();
                break;

            case 4:
                n = CheckFunc4();
                break;

            case 5:
                n = CheckFunc5();
                break;
            }

            return(n);
        }
Ejemplo n.º 2
0
        public override CheckOutput ExecuteCheck(Excel.Worksheet ws, DefinedNames definedNames, CheckObj check)
        {
            _ws           = ws;
            _nomiDefiniti = definedNames;
            _check        = check;

            return(CheckFunc1());
        }
Ejemplo n.º 3
0
 public void OnDataChange(DataSnapshot snapshot)
 {
     foreach (DataSnapshot child in snapshot.Children.ToEnumerable())
     {
         CheckObj checkIn = (CheckObj)child;
         AccountService.checkIns.Add(checkIn);
         Console.WriteLine($"Acct: {AccountService.checkIns}");
     }
 }
Ejemplo n.º 4
0
Archivo: Check.cs Proyecto: fberga/Iren
        public override CheckOutput ExecuteCheck(Excel.Worksheet ws, DefinedNames definedNames, CheckObj check)
        {
            _ws           = ws;
            _nomiDefiniti = definedNames;
            _check        = check;

            CheckOutput n = new CheckOutput();

            switch (check.Type)
            {
            case 1:
                n = CheckFunc1();
                break;
            }

            return(n);
        }
Ejemplo n.º 5
0
        public override CheckOutput ExecuteCheck(Excel.Worksheet ws, DefinedNames definedNames, CheckObj check)
        {
            //Funzione che non centra nulla con i check ma che permette di effettuare il refresh del riepilogo ad ogni azioni che può modificarlo.
            Aggiorna aggiorna = new Aggiorna();

            aggiorna.AggiornaPrevisioneRiepilogo();

            return(new CheckOutput());
        }
Ejemplo n.º 6
0
    void FixedUpdate()
    {
        // 如果剧本正在进行则退出
        if (MapCamera.SuspensionDrama && walkTasks.Count == 0 && Controller)
        {
            adjustableTrigger.GetComponent <Collider2D>().isTrigger = true;
            return;
        }
        // 是否正在执行行走任务?
        bool    isWalkTask = (walkTasks.Count > 0);
        Vector3 pos        = transform.localPosition;

        // 如果有行走任务
        if (isWalkTask)
        {
            walkTask wt = walkTasks.referencePeek;
            // 如果坐标尚未初始化
            if (!wt.isCalculated)
            {
                wt.Caculate(pos);
            }
            // 决定是否修正行走坐标(完成行走)
            bool isFix = false;
            if (wt.x < pos.x)
            {
                Move(-1, 0);
                if (wt.x >= transform.localPosition.x)
                {
                    isFix = true;
                }
            }
            else if (wt.x > pos.x)
            {
                Move(1, 0);
                if (wt.x <= transform.localPosition.x)
                {
                    isFix = true;
                }
            }
            else if (wt.y < pos.y)
            {
                Move(0, -1);
                if (wt.y >= transform.localPosition.y)
                {
                    isFix = true;
                }
            }
            else if (wt.y > pos.y)
            {
                Move(0, 1);
                if (wt.y <= transform.localPosition.y)
                {
                    isFix = true;
                }
            }
            if (!Controller)
            {
                UploadWalk();
            }
            // 修正坐标
            if (isFix)
            {
                Debug.Log("Walktask: " + (walkTasks.Count - 1) + " remaining...");
                FixPos();
                //transform.localPosition = new Vector3(wt.x,wt.y,pos.z);
                walkTasks.Dequeue();
                if (walkTasks.Count == 0)
                {
                    if (tMode)
                    {
                        Debug.Log("Walktask: tasks for Pathfinding is done.");
                        tMode = false;
                        MoveArrow.SetActive(false);
                    }
                    else
                    {
                        Debug.Log("Walktask: tasks for Drama Script is done.");
                        walkTaskCallback();
                    }
                    walking = false;
                    UploadWalk();
                }
            }
        }
        // 如果不是玩家
        if (!Controller)
        {
            return;
        }

        bool isKeyboard = false;

        // 判定调查
        Vector2 spyRay = new Vector2(pos.x, pos.y);

        if (dir == walkDir.Left)
        {
            spyRay.x -= 0.96f;
        }
        else if (dir == walkDir.Right)
        {
            spyRay.x += 0.96f;
        }
        else if (dir == walkDir.Up)
        {
            spyRay.y += 0.96f;
        }
        else
        {
            spyRay.y -= 0.96f;
        }
        CheckObj checkObj = null;

        foreach (RaycastHit2D crash in Physics2D.RaycastAll(spyRay, new Vector2(0, 0)))
        {
            if (crash.collider.gameObject.TryGetComponent <CheckObj>(out checkObj))
            {
                if (MapCamera.HitCheck != checkObj.gameObject)
                {
                    checkObj.CheckEncounter();
                }
                break;
            }
        }
        if (checkObj == null && MapCamera.HitCheck != null)
        {
            MapCamera.HitCheck.GetComponent <CheckObj>().CheckGoodbye();
        }

        // 如果屏幕被点击
        if (Input.GetMouseButton(0))
        {
            if (freeTouchTick < 0.5f)
            {
                if (freeTouchTick < 0.2f && (!isWalkTask || tMode))
                {
                    Vector3 mpos = MapCamera.mcamera.GetComponent <Camera>().ScreenToWorldPoint(Input.mousePosition);
                    foreach (RaycastHit2D hit in Physics2D.RaycastAll(new Vector2(mpos.x, mpos.y), new Vector2(0, 0)))
                    {
                        if (hit.collider.gameObject.name == "MovePad")
                        {
                            Animator padAni = Pad.transform.parent.GetComponent <Animator>();
                            padAni.SetFloat("speed", 1.0f);
                            padAni.Play("MovePad", 0, 0f);
                            Debug.Log("Freemove OK!:" + this.gameObject.name);
                            freeTouchTick = 1f;
                        }
                    }
                    if (freeTouchTick < 0.2f)
                    {
                        Debug.Log("Freemove Failed!:" + this.gameObject.name);
                        freeTouchTick = 0.3f;
                    }
                }
            }
            else
            {
                // 从屏幕坐标换算到世界坐标
                Vector3 mpos = Input.mousePosition;
                // 测算
                float xp = mpos.x - srcClickPos.x, yp = mpos.y - srcClickPos.y;
                float xpro = Mathf.Abs(xp) / 30, ypro = Mathf.Abs(yp) / 30;
                if (xpro > 1)
                {
                    xpro = 1;
                }
                if (ypro > 1)
                {
                    ypro = 1;
                }
                if (xRemain == 0 && yRemain == 0 && (xpro == 1 || ypro == 1))
                {
                    if (Mathf.Abs(xp) > Mathf.Abs(yp))
                    {
                        xRemain        = 1.02f * (xp > 0 ? 1 : -1); firstFreeMove = true; isKeyboard = true;
                        targetRotation = (xp > 0 ? 270f : 90f);
                    }
                    else
                    {
                        yRemain        = 1.02f * (yp > 0 ? 1 : -1); firstFreeMove = true; isKeyboard = true;
                        targetRotation = (yp > 0 ? 0f : 180f);
                    }
                }
                float ro = Pad.eulerAngles.z + (targetRotation - Pad.eulerAngles.z) / 5;
                Pad.eulerAngles = new Vector3(0, 0, ro);
            }
        }
        if (Input.GetMouseButtonUp(0))
        {
            if (!isWalkTask && freeTouchTick < 0.5f && xRemain == 0 && yRemain == 0)
            {
                Debug.Log("Occured pathfinding:" + this.gameObject.name);
                // 必要:开启tMode,将寻路WalkTask与DramaScript的WalkTask区别开来
                tMode = true;
                walkTasks.Clear();
                // 从屏幕坐标换算到世界坐标
                Vector3 mpos = MapCamera.mcamera.GetComponent <Camera>().ScreenToWorldPoint(Input.mousePosition);
                mpos.z = 0;
                // 检查是否点击的是UI而不是地板
                if (EventSystem.current.IsPointerOverGameObject())
                {
                    return;
                }
                // 格式化坐标
                mpos.x = Mathf.Floor(mpos.x / 0.96f) * 0.96f + 0.48f - 0.06f;
                mpos.y = Mathf.Ceil(mpos.y / 0.96f) * 0.96f - 0.48f;
                // 设置点击反馈
                MoveArrow.transform.localPosition = mpos;
                MoveArrow.SetActive(true);
                // 设置walkTask保险
                lpos      = new Vector2(0, 0);
                lposCount = 3;
                //prepare for Event to TRayMapBuilder



                dataBridge.EnqueueTask(bridgeTaskbuilderOMP.BuildProduct(this, mpos));

                freeTouchTick     = 0;
                Pad.localPosition = srcPadPos;
                goto skipKeyboard;
            }
            Animator padAni = Pad.transform.parent.GetComponent <Animator>();
            padAni.SetFloat("speed", -2.0f);
            padAni.Play("MovePad", 0, 1f);
            freeTouchTick     = 0;
            Pad.localPosition = srcPadPos;
        }

        // 检测键盘输入
        if ((!isWalkTask || tMode) && xRemain == 0 && yRemain == 0)
        {
            if (Input.GetKey(KeyCode.A) || Input.GetKey(KeyCode.LeftArrow))
            {
                xRemain = -1.02f; firstFreeMove = true; isKeyboard = true;
            }
            else if (Input.GetKey(KeyCode.D) || Input.GetKey(KeyCode.RightArrow))
            {
                xRemain = 1.02f; firstFreeMove = true; isKeyboard = true;
            }
            else if (Input.GetKey(KeyCode.W) || Input.GetKey(KeyCode.UpArrow))
            {
                yRemain = 1.02f; firstFreeMove = true; isKeyboard = true;
            }
            else if (Input.GetKey(KeyCode.S) || Input.GetKey(KeyCode.DownArrow))
            {
                yRemain = -1.02f; firstFreeMove = true; isKeyboard = true;
            }
        }
        // 自由移动
        if (xRemain != 0 || yRemain != 0)
        {
            int xDir = xRemain < 0 ? -1 : 1, yDir = yRemain < 0 ? -1 : 1;
            if (xRemain == 0)
            {
                xDir = 0;
            }
            if (yRemain == 0)
            {
                yDir = 0;
            }
            if (firstFreeMove)
            {
                Collider2D crash = Physics2D.Raycast(new Vector2(pos.x + xDir, pos.y + yDir), new Vector2(0, 0)).collider;
                if (crash != null)
                {
                    if (!crash.isTrigger)
                    {
                        if (xDir != 0)
                        {
                            dir = xDir < 0 ? walkDir.Left : walkDir.Right;
                        }
                        if (yDir != 0)
                        {
                            dir = yDir < 0 ? walkDir.Down : walkDir.Up;
                        }
                        walking = true;
                        xRemain = 0; yRemain = 0;
                    }
                }
                firstFreeMove = false;
            }
            if (xRemain != 0)
            {
                xRemain -= Move(xDir, 0);
                if ((xRemain < 0 ? -1 : 1) != xDir)
                {
                    FixPos();
                    walking = true;
                    if (freeTouchTick == 0)
                    {
                        MoveArrow.SetActive(false);
                    }
                    xRemain = 0;
                }
            }
            if (yRemain != 0)
            {
                yRemain -= Move(0, yDir);
                if ((yRemain < 0 ? -1 : 1) != yDir)
                {
                    FixPos();
                    walking = true;
                    if (freeTouchTick == 0)
                    {
                        MoveArrow.SetActive(false);
                    }
                    yRemain = 0;
                }
            }
        }

skipKeyboard:

        if (Controller && adjustableTrigger != null)
        {
            adjustableTrigger.GetComponent <Collider2D>().isTrigger = !isKeyboard;
        }

        // 仅打断寻路task(tMode),不打断DramaScript的task
        if (lpos.x == pos.x && lpos.y == pos.y && isWalkTask && tMode)
        {
            lposCount--;
        }
        if (lposCount == 0 && isWalkTask && tMode)
        {
            Debug.Log("Walktask: tasks for Pathfinding is broke.");
            walking = false;
            UploadWalk();
            walkTasks.Clear(); tMode = false; MoveArrow.SetActive(false);
        }
        lpos = pos;

        // 更新图片
        UploadWalk();
    }