コード例 #1
0
//    private void UpdateInput()
//    {
//        if (player.isActionTurn == false)
//            return;
//
//        if (Input.GetMouseButtonDown(0))
//        {
//            Vector3 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
//            Vector2 mousePos2D = new Vector2(mousePos.x, mousePos.y);
//
//            RaycastHit2D hit = Physics2D.Raycast(mousePos2D, Vector2.zero);
//            if (hit.collider != null)
//            {
//                GameObject obj = hit.collider.gameObject;
//                Debug.Log("click object: " + obj.name);
//
//                IAbilityTarget target = obj.GetComponent<IAbilityTarget>();
//                if (target != null)
//                {
//                    target.Selected(this, player.activeAbility);
//                }
//            }
//        }
//    }

    private void UpdateAction()
    {
        if (curTurnStatus != turnStatus)
        {
            curTurnStatus = turnStatus;

            if (curTurnStatus == TurnStatus.PREPARE)
            {
                turnStatus = TurnStatus.SWITCHING;
            }
            else if (curTurnStatus == TurnStatus.SWITCHING)
            {
                // TODO
                // 2 = actor nums
                actionTurn = (actionTurn + 1) % 2;
                if (actionTurn == TURN_PLAYER)
                {
                    Debug.Log("player action turn");
                    player.StartTurn();
                }
                else
                {
                    Debug.Log("enemy action turn");
                    enemy.StartTurn();
                }
            }
        }
    }
コード例 #2
0
    private IEnumerator setStatus(TurnStatus value)
    {
        yield return(new WaitForFixedUpdate());

        _status = value;
        yield return(new WaitForFixedUpdate());
    }
コード例 #3
0
    public void SetBodyDir(TurnStatus status, Vector3 moveDir, GameObject character)
    {
        if (moveDir == Vector3.zero)
        {
            moveDir = character.transform.forward;
        }

        moveDir.y = 0;

        switch (status)
        {
        case TurnStatus.Forward:
            character.transform.forward = moveDir;
            break;

        case TurnStatus.Back:
            character.transform.forward = -moveDir;
            break;

        case TurnStatus.Right:
            character.transform.forward = moveDir.Vector3RotateInXZ(90);
            break;

        case TurnStatus.Left:
            character.transform.forward = moveDir.Vector3RotateInXZ2(90);
            break;
        }
    }
コード例 #4
0
 public void Charge(GameObject weaponGlow, GameObject glow)
 {
     if (this.useSpecial && !weaponGlow.activeInHierarchy)
     {
         weaponGlow.SetActive(true);
         this.GetComponent <Animation>().CrossFade("Charge");
         this._currentWaitTime = waitTime;
         this.hasAttacked      = false;
     }
     else if (!this.useSpecial)
     {
         if (glow != null)
         {
             weaponGlow.SetActive(false);
         }
         this.GetComponent <Animation>().CrossFade("Idle");
         this._currentWaitTime = waitTime;
         this.hasAttacked      = false;
         this._turnStatus      = TurnStatus.Idle;
     }
     if (!this.GetComponent <Animation>().IsPlaying("Charge"))
     {
         this._turnStatus = TurnStatus.Idle;
     }
 }
コード例 #5
0
 public void Idle()
 {
     questionBreakIndex = 1;
     hasPlayedTeleport  = false;
     if ((_currentWaitTime == waitTime) && _target != null)
     {
         float xx = (float)rand.Next(1, 3);
         if (_startPos != this.transform.position)
         {
             _startPos = this.transform.position - this.transform.forward * xx;
         }
     }
     if (_currentWaitTime - Time.fixedDeltaTime > 0)
     {
         _currentWaitTime -= Time.fixedDeltaTime;
         if (Move(this.transform.position, _startPos, moveSpeed, true, true, 0.5f) && !this.GetComponent <Animation>().IsPlaying("Attack"))
         {
         }
         else
         {
             this.GetComponent <Animation>().CrossFade("Idle");
             this.transform.LookAt(GameObject.FindGameObjectWithTag("Player").transform);
             if (_target != null)
             {
                 this.transform.LookAt(_target.transform);
             }
         }
     }
     else
     {
         _turnStatus = TurnStatus.Answering;
     }
 }
コード例 #6
0
 void SetToIdle()
 {
     this.transform.LookAt(_startPos);
     _currentWaitTime = waitTime;
     hasAttacked      = false;
     this._turnStatus = TurnStatus.MoveBack;
 }
コード例 #7
0
 public void OnChangeStatus(string roomId, TurnStatus status)
 {
     if (_room != roomId)
     {
         return;
     }
     TurnStatus = status;
     _guiDispatcher.Invoke(() =>
     {
         if (CurrentTurn)
         {
             if (TurnStatus == TurnStatus.RollDice)
             {
                 CurrentStatus = "Please roll dice";
             }
             else if (TurnStatus == TurnStatus.Move)
             {
                 CurrentStatus = "Please play your moves";
             }
             else if (TurnStatus == TurnStatus.EndTurn)
             {
                 CurrentStatus = "Your turn is ended";
             }
         }
         if (TurnStatus == TurnStatus.GameOver)
         {
             CurrentStatus = "Game Over";
         }
     });
 }
コード例 #8
0
 public void BreakAttack()
 {
     this.GetComponent <Animation>()["Combo" + questionBreakIndex].speed = 1f;
     if (!this.GetComponent <Animation>().isPlaying)
     {
         this._turnStatus = TurnStatus.QuestionBreakEnd;
         print("sssss");
     }
 }
コード例 #9
0
 // Start is called before the first frame update
 void Start()
 {
     this.RotatorMenu = MenuRouter.EnabledMenus["Player Rotator Menu"] as RotatorMenu;
     if (TurnStatusStartingValue)
     {
         BattleEncounterType = (TurnStatus)TurnStatusStartingValue.Value;
     }
     Invoke("StartBattleEncounter", .2f);
 }
コード例 #10
0
 void CheckEnemies()
 {
     selectedIndex = 0;                                                                                 //change the target
     enemyList     = enemyList.FindAll(p => p.GetComponent <PlayerObject>().state != PlayerState.Dead); //get all enemies that are not dead.
     print(enemyList.Count);
     if (enemyList.Count == 0)                                                                          //check if there are still enemies that are alive
     {
         this._turnStatus = TurnStatus.Victory;                                                         //if no enemies are alive, do Victory
     }
 }
コード例 #11
0
    private void Start()
    {
        Debug.Assert(player != null, "CHECK");
        Debug.Assert(enemy != null, "CHECK");

        player.onTurnStart  += OnActorTurnStart;
        player.onTurnFinish += OnActorTurnFinish;
        enemy.onTurnStart   += OnActorTurnStart;
        enemy.onTurnFinish  += OnActorTurnFinish;

        turnStatus = TurnStatus.PREPARE;
    }
コード例 #12
0
    public void RootedMovement()
    {
        if (_target != null)
        {
            if (_target.GetComponent <PlayerObject>().state == PlayerState.Dead)
            {
                return;
            }
        }

        switch (_turnStatus)
        {
        case TurnStatus.Idle:
            this.GetComponent <Animator>().Play("Idle");
            if (_currentWaitTime > 0)
            {
                _currentWaitTime -= Time.fixedDeltaTime;
            }
            else
            {
                _turnStatus = TurnStatus.Answered;
            }
            break;

        case TurnStatus.Answered:
            if (_target == null)
            {
                _target = enemyList[new System.Random().Next(0, enemyList.Count - 1)];
            }
            else
            {
                this.transform.LookAt(_target.transform);

                if (!hasAttacked)
                {
                    this.hasAttacked = true;
                    this.GetComponent <Rooted>().Attack();
                    this.GetComponent <Animator>().Play("Attack");
                }
                else
                {
                    SetToIdle();
                }
            }
            break;

        case TurnStatus.MoveBack:
            this.transform.LookAt(GameObject.FindGameObjectWithTag("Player").transform);
            this._turnStatus = TurnStatus.Idle;
            break;
        }
    }
コード例 #13
0
    public void AnimLogic(EntityBase entity)
    {
        LifeComponent   lc  = entity.GetComp <LifeComponent>();
        AnimComponent   ac  = entity.GetComp <AnimComponent>();
        MoveComponent   mc  = entity.GetComp <MoveComponent>();
        PlayerComponent pc  = entity.GetComp <PlayerComponent>();
        PerfabComponent pbc = entity.GetComp <PerfabComponent>();

        if (lc.Life <= 0)
        {
            ac.anim.Play("empty", 1);
            ac.anim.Play("die");
            return;
        }

        //移动逻辑
        if (Vector3.Distance(mc.pos.ToVector(), pbc.perfab.transform.position) > .05f)
        {
            Vector3 Dir = mc.dir.ToVector();

            if (Dir == Vector3.zero)
            {
                Dir = mc.pos.ToVector() - pbc.perfab.transform.position;
            }

            TurnStatus status = GetTurnStatus(Dir, pc.faceDir.ToVector());

            //身体移动方向
            SetBodyDir(status, Dir, ac.perfab);
            //播放不同动画
            SetMoveAnim(status, ac.anim);
        }
        else
        {
            Vector3 Dir = pc.faceDir.ToVector();
            if (entity.GetExistComp <SelfComponent>())
            {
                Dir = InputSystem.skillDirCache;
            }

            ac.anim.Play("wait");
            if (pc.faceDir.ToVector() != Vector3.zero)
            {
                ac.perfab.transform.forward = Dir;
            }
        }

        //上层动画
        UpperAnim(entity, ac);
    }
コード例 #14
0
    string GetMoveAnimName(TurnStatus status)
    {
        switch (status)
        {
        case TurnStatus.Forward: return("move");     //m_character.m_Property.m_walkAnimName;

        case TurnStatus.Back: return("move_back");   // m_character.m_Property.m_BackWalkAnimName;

        case TurnStatus.Left: return("move_left");   // m_character.m_Property.m_LeftWalkAnimName;

        case TurnStatus.Right: return("move_right"); // m_character.m_Property.m_RightWalkAnimName;
        }

        return("move");// m_character.m_Property.m_walkAnimName;
    }
コード例 #15
0
 public TurnModel(
     Team team,
     int turnNumber,
     TurnStatus status,
     string?hintWord,
     int?wordCount,
     List <PlayerVote> endTurnVotes,
     int?guessesRemaining)
 {
     Team             = team;
     TurnNumber       = turnNumber;
     Status           = status;
     HintWord         = hintWord;
     WordCount        = wordCount;
     EndTurnVotes     = endTurnVotes ?? throw new ArgumentNullException(nameof(endTurnVotes));
     GuessesRemaining = guessesRemaining;
 }
コード例 #16
0
ファイル: Program.cs プロジェクト: tdorais/briskbot
        public async static Task run(HttpClient client)
        {
            IApiClient  apiClient = new ApiClient(client);
            IGameAccess newAccess = await GameAccess.Create(apiClient, "Pinky and the Brain");

            WarRoom board = new WarRoom(newAccess);

            Console.WriteLine($"Game: {newAccess.GameId}");

            int waitCount = 0;

            while (waitCount < 10)
            {
                TurnStatus state = await board.TakeTurn();

                switch (state)
                {
                case TurnStatus.TookTurn:
                    Console.WriteLine("And so my watch has ended (for now)");
                    waitCount = 0;
                    break;

                case TurnStatus.Waiting:
                    Console.WriteLine("Waits patiently...");
                    waitCount++;
                    break;

                case TurnStatus.LostGame:
                    Console.WriteLine($"Valar Morghulis");
                    return;

                case TurnStatus.WonGame:
                    Console.WriteLine($"Hail to the King!");
                    return;

                default:
                    Console.WriteLine("Status Unavailable");
                    break;
                }

                Thread.Sleep(1000); //optimize
            }
        }
コード例 #17
0
ファイル: GameController.cs プロジェクト: Rayal/APTGGjam11-18
    public void EndTurn()
    {
        if (turn < TurnStatus.ENEMY_PLAYER_TRANSITION)
        {
            turn++;
        }
        else
        {
            turn = TurnStatus.PLAYER_TURN;
        }

        if (turn.Equals(TurnStatus.PLAYER_ENEMY_TRANSITION))
        {
            StartCoroutine(DelayTwoSecondsThenSuspendPhysics(1));
        }
        else if (turn.Equals(TurnStatus.ENEMY_PLAYER_TRANSITION))
        {
            StartCoroutine(DelayTwoSecondsThenSuspendPhysics(2));
        }
    }
コード例 #18
0
    IEnumerator GameFlow()
    {
        //StartGame()を待つ
        while (!gameStart)
        {
            yield return(null);
        }
        Debug.Log("Game Start!");
        yield return(StartCoroutine(cardObjManager.InitHand()));

        TurnStatus now = (Random.Range(0, 1) == 0)? TurnStatus.PlayerTurn : TurnStatus.AITurn;

        while (true)
        {
            if (now == TurnStatus.PlayerTurn)
            {
                yield return(StartCoroutine(human.Turn()));
            }
            else
            {
                yield return(StartCoroutine(ai.Turn()));
            }
            if (gameStatus != GameStatus.Continue)
            {
                Debug.Log("Game Finish!");
                break;
            }
            now = (now == TurnStatus.PlayerTurn)? TurnStatus.AITurn : TurnStatus.PlayerTurn;
        }
        winnerShower.SetActive(true);
        var txt = winnerShower.GetComponentInChildren <Text>();

        if (gameStatus == GameStatus.AIWin)
        {
            txt.text = "You Lose...";
        }
        else
        {
            txt.text = "You Win!";
        }
    }
コード例 #19
0
    public void Save(BinaryWriter writer)
    {
        // NOTE: It's stupid, but ToEE completely ignores the action structs that are embedded into the
        // action sequence struct, and will actually duplicate the actions after the action sequence array.
        Span <byte> padding = stackalloc byte[32 * 0x58];

        writer.Write(padding);

        writer.WriteInt32(Actions.Length);

        writer.WriteInt32(CurrentActionIndex);
        writer.WriteInt32(0); // Previous Sequence (pointer, transient data)
        writer.WriteInt32(0); // Interrupt Sequence (pointer, transient data)
        var flags = 0;

        if (IsPerforming)
        {
            flags |= 1;
        }

        if (IsInterrupted)
        {
            flags |= 2;
        }
        writer.WriteInt32(flags);

        TurnStatus.Save(writer);
        writer.WriteInt64(0); // Skip transient performer object handle
        writer.WriteLocationAndOffsets(PerformerLocation);
        writer.WriteInt64(0); // Skip transient target object handle
        // Skip the spell packet body, because ToEE was lazy and just saved the structure directly,
        // the packet only contains invalid object handles (since they are transient) and not the object ids
        // that are required to restore the handles. Instead of fixing this by saving information after the
        // sequences, ToEE saves the spell packets in action_sequencespellpackets.bin instead.
        Span <byte> padding2 = stackalloc byte[0xae8];

        writer.Write(padding2);
        writer.WriteInt32(0); // Transient action pointer
        writer.WriteInt32(IgnoreLineOfSight ? 1 : 0);
    }
コード例 #20
0
        public async Task TakeTurnReturnsStatus(bool currentTurn, int?winner, TurnStatus status)
        {
            GameResult mockedResult = new GameResult()
            {
                player = 1
            };
            PlayerState mockedState = new PlayerState()
            {
                winner = winner, current_turn = currentTurn, territories = new Territory[] { new Territory()
                                                                                             {
                                                                                                 territory = 1, territory_name = ""
                                                                                             } }
            };

            mockAccess.Setup(a => a.CurrentPlayer).Returns(1);
            mockAccess.Setup(a => a.GetPlayerState()).ReturnsAsync(mockedState);
            mockAccess.Setup(a => a.PlaceArmies(It.IsAny <int>(), It.IsAny <int>())).ReturnsAsync(true);

            TurnStatus actual = await board.TakeTurn();

            Assert.Equal(status, actual);
        }
コード例 #21
0
ファイル: PlayerObject.cs プロジェクト: jkevinp/SciHeroes
 void CancelBreak()
 {
     questionBreakIndex = 0;
     _turnStatus = TurnStatus.Idle;
 }
コード例 #22
0
    public void AiMovement()
    {
        print("Ai movement");
        if (_target != null)
        {
            if (_target.GetComponent <PlayerObject>().state == PlayerState.Dead)
            {
                return;
            }
        }
        switch (_turnStatus)
        {
        case TurnStatus.Idle:
            if (_currentWaitTime > 0)
            {
                _currentWaitTime -= Time.fixedDeltaTime;
            }
            else
            {
                _turnStatus = TurnStatus.Answered;
            }
            break;

        case TurnStatus.Answered:
            if (_target == null)
            {
                _target = enemyList[new System.Random().Next(0, enemyList.Count - 1)];
            }
            else
            {
                this.transform.LookAt(_target.transform);
                print(_target.name);
                if (Vector3.Distance(this.transform.position, _target.transform.position) > 1 && !hasAttacked)
                {
                    this.gameObject.transform.position = Vector3.MoveTowards(this.gameObject.transform.position, _target.transform.position, moveSpeed);
                    this.GetComponent <Animation>().CrossFade("Run");
                }
                else
                {
                    if (!hasAttacked)
                    {
                        this.GetComponent <Animation>().CrossFade("Attack");
                        this.hasAttacked = true;
                        _target.GetComponent <PlayerObject>().ApplyDamage(this.Damage);
                        damageResult = Instantiate(_damageResult, Vector3.up + _target.transform.position, this.transform.rotation) as GameObject;
                        damageResult.transform.Find("Text").GetComponent <Text>().text = "-" + this.Damage;
                    }
                    else
                    {
                        if (!this.GetComponent <Animation>().IsPlaying("Attack"))
                        {
                            this.GetComponent <Animation>().CrossFade("Idle");
                            SetToIdle();
                        }
                    }
                }
            }
            break;

        case TurnStatus.MoveBack:
            float dis = Vector3.Distance(this.transform.position, _startPos);
            if (dis > 1)
            {
                this.transform.position = Vector3.MoveTowards(this.transform.position, _startPos, moveSpeed);
                this.GetComponent <Animation>().CrossFade("Run");
                this.transform.LookAt(_startPos);
            }
            else
            {
                this.GetComponent <Animation>().CrossFade("Idle");
                this.transform.LookAt(GameObject.FindGameObjectWithTag("Player").transform);
                this._turnStatus = TurnStatus.Idle;
            }
            break;
        }
    }
コード例 #23
0
    public void PlayerMovement(Player _p)
    {
        CheckEnemies();
        cursorMove();
        switch (_turnStatus)
        {
        case TurnStatus.QuestionBreakSetup:
            BreakCharge(_p.glow);
            break;

        case TurnStatus.QuestionBreakInteract:
            BreakInteract();
            break;

        case TurnStatus.QuestionBreakAttack:
            BreakAttack();
            break;

        case TurnStatus.QuestionBreakEnd:
            questionBreakIndex += 1;
            if (questionBreakIndex <= 3)
            {
                this._turnStatus = TurnStatus.QuestionBreakInteract;
            }
            else
            {
                RenderSettings.fogColor   = Color.cyan;
                RenderSettings.fogDensity = 0.09f;
                RenderSettings.fog        = true;
                this._turnStatus          = TurnStatus.Setup;
                _p.glow.SetActive(false);
            }
            break;

        case TurnStatus.Setup:
            Charge(_p.weaponGlow, _p.glow);
            break;

        case TurnStatus.Idle:
            Idle();
            break;

        case TurnStatus.Answering:
            _target = enemyList[selectedIndex];
            if (!this.GetComponent <Animation>().IsPlaying("Hit"))
            {
                this.GetComponent <Animation>().CrossFade("Idle");
            }
            float x = (float)rand.Next(-5, 5);
            float y = (float)rand.Next(-3, 3);
            if (_startPos != this.transform.position)
            {
                _startPos = _target.transform.position + new Vector3(x, 0, y);
            }
            break;

        case TurnStatus.Answered:
            if (_target == null)
            {
                _target = enemyList[selectedIndex];
            }
            else
            {
                if (!hasAttacked)
                {
                    if (!Move(this.transform.position, _target.transform.position, moveSpeed, true, true, 1f))
                    {
                        if (!useSpecial)
                        {
                            Attack(this._anim, this._target, this.Damage);
                        }
                        else
                        {
                            SpecialAttack(this._anim, this._target, this.Damage);
                        }
                    }
                }
                else
                {
                    if (!this.GetComponent <Animation>().IsPlaying("Attack") && !this.GetComponent <Animation>().IsPlaying("Special"))
                    {
                        this._turnStatus = TurnStatus.MoveBack;
                    }
                }
            }
            break;

        case TurnStatus.MoveBack:
            float dis = Vector3.Distance(this.transform.position, _startPos);
            if (Move(this.transform.position, _startPos, moveSpeed, true, true, 0.5f) && !this.GetComponent <Animation>().IsPlaying("Attack") && !this.GetComponent <Animation>().IsPlaying("Special"))
            {
            }
            else
            {
                this.GetComponent <Animation>().CrossFade("Idle");
                this.transform.LookAt(GameObject.FindGameObjectWithTag("Player").transform);
                this.transform.LookAt(_target.transform);
                this._turnStatus = TurnStatus.AfterAttack;
            }
            break;

        case TurnStatus.AfterAttack:
            this._turnStatus = TurnStatus.Setup;
            break;
        }
    }
コード例 #24
0
    /// <summary>
    /// 创建状态
    /// </summary>
    /// <param name="Core">雷达拥有者的核心信息</param>
    /// <param name="f">雷达拥有视野</param>
    public static StatusM Create(int SceneID, int ResalseSceneID, int SkillID, SkillStatusInfo Info)
    {
        if (Info == null)
        {
            return(null);
        }
        StatusType s      = (StatusType)Info.m_type;
        StatusM    status = null;

        switch (s)
        {
        case StatusType.AddAttr:
            status = new AddAttrStatus();
            break;

        case StatusType.Vertigo:
            status = new VertigoStatus();
            break;

        case StatusType.Silence:
            status = new SilenceStatus();
            break;

        case StatusType.Vampire:
            status = new VampireStatus();
            break;

        case StatusType.Rebound:
            status = new ReboundStatus();
            break;

        case StatusType.Invisible:
            status = new InvisibleStatus();
            break;

        case StatusType.Invincible:
            status = new InvincibleStatus();
            break;

        case StatusType.Transfiguration:
            status = new TransfigurationStatus();
            break;

        case StatusType.Summon:
            status = new SummonStatus();
            break;

        case StatusType.ClickFly:
            status = new ClickFlyStatus();
            break;

        case StatusType.AbsorbDamage:
            status = new AbsorbDamageStatus();
            break;

        case StatusType.Virtual:
            status = new VirtualStatus();
            break;

        case StatusType.Shield:
            status = new ShieldStatus();
            break;

        case StatusType.Sputtering:
            status = new SputteringStatus();
            break;

        case StatusType.Damnation:
            status = new DamnationStatus();
            break;

        case StatusType.ImmunePhysical:
            status = new ImmunePhysicalStatus();
            break;

        case StatusType.ImmunityMagic:
            status = new ImmunityMagicStatus();
            break;

        case StatusType.IceBuild:
            status = new IceBuildStatus();
            break;

        case StatusType.Ring:
            status = new RingStatus();
            break;

        case StatusType.Taunt:
            status = new TauntStatus();
            break;

        case StatusType.StaticElec:
            status = new StaticElecStatus();
            break;

        case StatusType.Still:
            status = new StillStatus();
            break;

        case StatusType.Squash:
            status = new SquashStatus();
            break;

        case StatusType.Sauna:
            status = new SaunaStatus();
            break;

        case StatusType.KTV:
            status = new KTVStatus();
            break;

        case StatusType.ImmuneState:
            status = new ImmuneState();
            break;

        case StatusType.NoSquash:
            status = new NoSquashStatus();
            break;

        case StatusType.paralysis:
            status = new ParalysisStatus();
            break;

        case StatusType.PhyAnitInterrupt:
            status = new PhyAnitInterruptStatus();
            break;

        case StatusType.MagAnitInterrupt:
            status = new MagAnitInterruptStatus();
            break;

        case StatusType.Cleanse:
            status = new CleanseStatus();
            break;

        case StatusType.Charm:
            status = new CharmStatus();
            break;

        case StatusType.BuildDestory:
            status = new BuildDestoryStatus();
            break;

        case StatusType.Mark:
            status = new MarkStatus();
            break;

        case StatusType.RunAway:
            status = new RunAwayStaus();
            break;

        case StatusType.FakeTaunt:
            status = new FakeTauntStatus();
            break;

        case StatusType.Die:
            status = new DieStatus();
            break;

        case StatusType.Turn:
            status = new TurnStatus();
            break;

        case StatusType.WetBody:
            status = new WetBodyStatus();
            break;

        case StatusType.Berserker:
            status = new BerserkerStatus();
            break;

        case StatusType.Paralyze:
            status = new ParalyzeStatus();
            break;

        case StatusType.DieMark:
            status = new DieMarkStatus();
            break;

        case StatusType.Sleep:
            status = new SleepStatus();
            break;

        case StatusType.TearOfMermaid:
            status = new TearOfMermaidStatus();
            break;

        case StatusType.Trapped:
            status = new TrapedStatus();
            break;

        case StatusType.KickedBack:
            status = new KickedBackStatus();
            break;

        case StatusType.WhipCorpse:
            status = new WhipCorpseStatus();
            break;

        case StatusType.FireShield:
            status = new FireShieldStatus();
            break;

        default:
            break;
        }
        return(status);
    }
コード例 #25
0
ファイル: PlayerObject.cs プロジェクト: jkevinp/SciHeroes
    public void Charge(GameObject weaponGlow ,GameObject glow)
    {
        if (this.useSpecial && !weaponGlow.activeInHierarchy)
        {

            weaponGlow.SetActive(true);
            this.GetComponent<Animation>().CrossFade("Charge");
            this._currentWaitTime = waitTime;
            this.hasAttacked = false;

        }
        else if (!this.useSpecial)
        {
            if (glow != null) weaponGlow.SetActive(false);
            this.GetComponent<Animation>().CrossFade("Idle");
            this._currentWaitTime = waitTime;
            this.hasAttacked = false;
            this._turnStatus = TurnStatus.Idle;
        }
        if (!this.GetComponent<Animation>().IsPlaying("Charge"))
        {
            this._turnStatus = TurnStatus.Idle;
        }
    }
コード例 #26
0
 //COMBAT STUFF START
 void StartPlayerTurn()
 {
     turnStatus = TurnStatus.Player;
     uiToggler.EnableTurnoverButton();
     playerHandManager.NewPlayerTurnStart();
 }
コード例 #27
0
ファイル: PlayerObject.cs プロジェクト: jkevinp/SciHeroes
    public void AiMovement()
    {
        print("Ai movement");
        if (_target != null) if (_target.GetComponent<PlayerObject>().state == PlayerState.Dead) return;
        switch (_turnStatus)
        {
            case TurnStatus.Idle:
                if (_currentWaitTime > 0) _currentWaitTime -= Time.fixedDeltaTime;
                else _turnStatus = TurnStatus.Answered;
                break;
            case TurnStatus.Answered:
                if (_target == null) _target = enemyList[new System.Random().Next(0, enemyList.Count - 1)];
                else{
                    this.transform.LookAt(_target.transform);
                    print(_target.name);
                    if (Vector3.Distance(this.transform.position, _target.transform.position) > 1 && !hasAttacked)
                    {
                        this.gameObject.transform.position = Vector3.MoveTowards(this.gameObject.transform.position, _target.transform.position, moveSpeed);
                        this.GetComponent<Animation>().CrossFade("Run");
                    }
                    else
                    {
                        if (!hasAttacked){
                            this.GetComponent<Animation>().CrossFade("Attack");
                            this.hasAttacked = true;
                            _target.GetComponent<PlayerObject>().ApplyDamage(this.Damage);
                            damageResult = Instantiate(_damageResult, Vector3.up + _target.transform.position, this.transform.rotation) as GameObject;
                            damageResult.transform.Find("Text").GetComponent<Text>().text = "-" +this.Damage;
                        }
                        else{

                            if (!this.GetComponent<Animation>().IsPlaying("Attack"))
                            {
                                this.GetComponent<Animation>().CrossFade("Idle");
                                SetToIdle();
                            }
                        }
                    }
                }
           break;

            case TurnStatus.MoveBack:
                float dis = Vector3.Distance(this.transform.position, _startPos);
                if (dis > 1){
                    this.transform.position = Vector3.MoveTowards(this.transform.position, _startPos, moveSpeed);
                    this.GetComponent<Animation>().CrossFade("Run");
                    this.transform.LookAt(_startPos);
                }
                else{
                    this.GetComponent<Animation>().CrossFade("Idle");
                    this.transform.LookAt(GameObject.FindGameObjectWithTag("Player").transform);
                    this._turnStatus = TurnStatus.Idle;
                }
           break;
        }
    }
コード例 #28
0
 public void RpcUpdateClientStatus(TurnStatus status)
 {
     this.status = status;
 }
コード例 #29
0
    public void SetMoveAnim(TurnStatus status, Animator anim)
    {
        string animName = GetMoveAnimName(status);

        anim.Play(animName);
    }
コード例 #30
0
ファイル: PlayerObject.cs プロジェクト: jkevinp/SciHeroes
    public void BreakCharge(GameObject glow)
    {
        if (this.GetComponent<TrailRenderer>() == null) this.gameObject.AddComponent<TrailRenderer>();
            this.GetComponent<TrailRenderer>().startWidth = 3f;
            this.GetComponent<TrailRenderer>().endWidth = 0.5f;
            this.GetComponent<TrailRenderer>().material.color = Color.green;

        if (_target != null)
        {
            _target.transform.LookAt(this.transform);
            _target.gameObject.GetComponent<Animation>().Play("Hit");
        }

        if (Vector3.Distance(this.transform.position, this._target.transform.position) <= 5)
        {
            if (!hasPlayedTeleport)
            {
                if (audioTeleport != null) _audioSource.PlayOneShot(audioTeleport);
                hasPlayedTeleport = true;
            }

            _anim.Play("Run");

            this.transform.LookAt(_target.transform.forward * 6 + _target.transform.position );
            foreach (Collider _c in this.gameObject.GetComponentsInChildren<Collider>()) _c.enabled = false;
            this.GetComponent<Rigidbody>().useGravity = false;
            this.gameObject.transform.position = Vector3.MoveTowards(this.transform.position, _target.transform.forward * 6 + _target.transform.position + Vector3.right, 0.2f);

            return;
        }else{

            this.gameObject.GetComponent<TrailRenderer>().enabled = false;
            foreach (Collider _c in this.gameObject.GetComponentsInChildren<Collider>()) _c.enabled = true;
            this.transform.LookAt(_target.transform);
            this.GetComponent<Rigidbody>().useGravity = true;
        }

        if (glow.activeInHierarchy)
        {
            if (!this.GetComponent<Animation>().IsPlaying("Charge"))
            {
                this._turnStatus = TurnStatus.QuestionBreakInteract;
            }
        }
        else
        {

            this.GetComponent<Animation>().CrossFade("Charge");
            if (this.GetComponent<Animation>().IsPlaying("Charge"))
            glow.SetActive(true);
            this._currentWaitTime = waitTime;
            this.hasAttacked = false;
            if (_target != null) this.transform.LookAt(_target.transform);
            RenderSettings.fogColor = Color.yellow;
            RenderSettings.fogDensity = 0.09f;
            RenderSettings.fog = true;

        }
    }
コード例 #31
0
        /// <summary>
        /// While the game is playing out, continuously check for data being sent from the server to update the variables
        /// Valid, Turn and Status.
        /// </summary>
        private static void UpdateTurnAndGameStatus()
        {
            while (Status == GameStatus.Playing)
            {
                NetworkStream lNetworkStream = GameClient.GetStream();
                string        JSON_string    = String.Empty;
                while (JSON_string == String.Empty)
                {
                    int byteCount = lNetworkStream.Read(_BufferSize, 0, _BufferSize.Length);
                    JSON_string = _EncodingInstance.GetString(_BufferSize, 0, byteCount);
                    Thread.Sleep(5);
                }

                if (JSON_string.StartsWith(PREFIX_YOURT))
                {
                    Turn = TurnStatus.YourTurn;
                }
                else
                {
                    GameState = DataProcessor.DeserializeGameStateData(JSON_string.Substring(5));

                    switch (GameState.GameState)
                    {
                    case GS_VALIDMOVE:
                        Valid = ValidStatus.Valid;
                        Turn  = TurnStatus.EnemyTurn;

                        break;

                    case GS_INVALIDMOVE:
                        Valid = ValidStatus.Invalid;
                        Turn  = TurnStatus.YourTurn;

                        break;

                    case GS_YOUWON:
                        Valid  = ValidStatus.Valid;
                        Turn   = TurnStatus.NoTurn;
                        Status = GameStatus.YouWon;

                        break;

                    case GS_YOULOST:
                        Valid  = ValidStatus.Valid;
                        Turn   = TurnStatus.NoTurn;
                        Status = GameStatus.YouLost;

                        break;

                    case GS_DRAW:
                        Valid  = ValidStatus.Valid;
                        Turn   = TurnStatus.NoTurn;
                        Status = GameStatus.Draw;
                        break;

                    case GS_VALIDENEMYMOVE:
                    //Der Gegner hat einen gültigen Zug gemacht. Die INfo, dass ich dran bin, kommt in separater Nachricht.
                    default:
                        break;
                    }
                }
            }
        }
コード例 #32
0
ファイル: PlayerObject.cs プロジェクト: jkevinp/SciHeroes
    public void RootedMovement()
    {
        if (_target != null) if (_target.GetComponent<PlayerObject>().state == PlayerState.Dead) return;

        switch (_turnStatus)
        {
            case TurnStatus.Idle:
                this.GetComponent<Animator>().Play("Idle");
                if (_currentWaitTime > 0) _currentWaitTime -= Time.fixedDeltaTime;
                else _turnStatus = TurnStatus.Answered;
                break;
            case TurnStatus.Answered:
                if (_target == null) _target = enemyList[new System.Random().Next(0, enemyList.Count - 1)];
                else
                {
                    this.transform.LookAt(_target.transform);

                        if (!hasAttacked)
                        {
                            this.hasAttacked = true;
                            this.GetComponent<Rooted>().Attack();
                            this.GetComponent<Animator>().Play("Attack");
                        }
                        else
                        {
                                SetToIdle();
                        }
                }
                break;

            case TurnStatus.MoveBack:
                  this.transform.LookAt(GameObject.FindGameObjectWithTag("Player").transform);
                  this._turnStatus = TurnStatus.Idle;
            break;
        }
    }
コード例 #33
0
 void CancelBreak()
 {
     questionBreakIndex = 0;
     _turnStatus        = TurnStatus.Idle;
 }
コード例 #34
0
ファイル: PlayerObject.cs プロジェクト: jkevinp/SciHeroes
    public void PlayerMovement(Player _p)
    {
        CheckEnemies();
        cursorMove();
        switch (_turnStatus)
        {
            case TurnStatus.QuestionBreakSetup:
                BreakCharge(_p.glow);
                break;
            case TurnStatus.QuestionBreakInteract:
                BreakInteract();
                break;
            case TurnStatus.QuestionBreakAttack:
                BreakAttack();
            break;
            case TurnStatus.QuestionBreakEnd:
            questionBreakIndex += 1;
            if (questionBreakIndex <= 3)this._turnStatus = TurnStatus.QuestionBreakInteract;
            else
            {
                RenderSettings.fogColor = Color.cyan;
                RenderSettings.fogDensity = 0.09f;
                RenderSettings.fog = true;
                this._turnStatus = TurnStatus.Setup;
                _p.glow.SetActive(false);
            }
            break;
            case TurnStatus.Setup:
               Charge(_p.weaponGlow , _p.glow);
            break;
            case TurnStatus.Idle:
                Idle();
            break;

            case TurnStatus.Answering:
                  _target = enemyList[selectedIndex];
                  if (!this.GetComponent<Animation>().IsPlaying("Hit")) this.GetComponent<Animation>().CrossFade("Idle");
                  float x = (float)rand.Next(-5,5);
                  float y = (float)rand.Next(-3,3);
                  if (_startPos != this.transform.position) _startPos = _target.transform.position + new Vector3(x, 0, y);
            break;
            case TurnStatus.Answered:
                if (_target == null) _target = enemyList[selectedIndex];
                else
                {
                    if (!hasAttacked)
                    {
                        if (!Move(this.transform.position, _target.transform.position, moveSpeed, true, true, 1f))
                        {
                            if (!useSpecial) Attack(this._anim, this._target , this.Damage);
                            else SpecialAttack(this._anim,this._target, this.Damage);
                        }
                    }
                    else
                    {
                      if (!this.GetComponent<Animation>().IsPlaying("Attack") && !this.GetComponent<Animation>().IsPlaying("Special")) this._turnStatus = TurnStatus.MoveBack;
                    }
                }
            break;
            case TurnStatus.MoveBack:
                float dis = Vector3.Distance(this.transform.position, _startPos);
                if (Move(this.transform.position, _startPos, moveSpeed, true, true, 0.5f) && !this.GetComponent<Animation>().IsPlaying("Attack") && !this.GetComponent<Animation>().IsPlaying("Special"))
                {

                }
                else{
                    this.GetComponent<Animation>().CrossFade("Idle");
                    this.transform.LookAt(GameObject.FindGameObjectWithTag("Player").transform);
                    this.transform.LookAt(_target.transform);
                    this._turnStatus = TurnStatus.AfterAttack;
                }
            break;
            case TurnStatus.AfterAttack:
                this._turnStatus = TurnStatus.Setup;
            break;
        }
    }
コード例 #35
0
    public void BreakCharge(GameObject glow)
    {
        if (this.GetComponent <TrailRenderer>() == null)
        {
            this.gameObject.AddComponent <TrailRenderer>();
        }
        this.GetComponent <TrailRenderer>().startWidth     = 3f;
        this.GetComponent <TrailRenderer>().endWidth       = 0.5f;
        this.GetComponent <TrailRenderer>().material.color = Color.green;

        if (_target != null)
        {
            _target.transform.LookAt(this.transform);
            _target.gameObject.GetComponent <Animation>().Play("Hit");
        }

        if (Vector3.Distance(this.transform.position, this._target.transform.position) <= 5)
        {
            if (!hasPlayedTeleport)
            {
                if (audioTeleport != null)
                {
                    _audioSource.PlayOneShot(audioTeleport);
                }
                hasPlayedTeleport = true;
            }

            _anim.Play("Run");

            this.transform.LookAt(_target.transform.forward * 6 + _target.transform.position);
            foreach (Collider _c in this.gameObject.GetComponentsInChildren <Collider>())
            {
                _c.enabled = false;
            }
            this.GetComponent <Rigidbody>().useGravity = false;
            this.gameObject.transform.position         = Vector3.MoveTowards(this.transform.position, _target.transform.forward * 6 + _target.transform.position + Vector3.right, 0.2f);

            return;
        }
        else
        {
            this.gameObject.GetComponent <TrailRenderer>().enabled = false;
            foreach (Collider _c in this.gameObject.GetComponentsInChildren <Collider>())
            {
                _c.enabled = true;
            }
            this.transform.LookAt(_target.transform);
            this.GetComponent <Rigidbody>().useGravity = true;
        }

        if (glow.activeInHierarchy)
        {
            if (!this.GetComponent <Animation>().IsPlaying("Charge"))
            {
                this._turnStatus = TurnStatus.QuestionBreakInteract;
            }
        }
        else
        {
            this.GetComponent <Animation>().CrossFade("Charge");
            if (this.GetComponent <Animation>().IsPlaying("Charge"))
            {
                glow.SetActive(true);
            }
            this._currentWaitTime = waitTime;
            this.hasAttacked      = false;
            if (_target != null)
            {
                this.transform.LookAt(_target.transform);
            }
            RenderSettings.fogColor   = Color.yellow;
            RenderSettings.fogDensity = 0.09f;
            RenderSettings.fog        = true;
        }
    }
コード例 #36
0
 void StartEnemyTurn()
 {
     turnStatus = TurnStatus.Enemy;
     SelectEnemyCharacter(characterManager.GetFirstEnemy());
     StartCoroutine(EnemyTurnProcess());
 }
コード例 #37
0
ファイル: PlayerObject.cs プロジェクト: jkevinp/SciHeroes
 void SetToIdle()
 {
     this.transform.LookAt(_startPos);
     _currentWaitTime = waitTime;
     hasAttacked = false;
     this._turnStatus = TurnStatus.MoveBack;
 }
コード例 #38
0
ファイル: PlayerObject.cs プロジェクト: jkevinp/SciHeroes
    public void Idle()
    {
        questionBreakIndex = 1;
        hasPlayedTeleport = false;
        if ((_currentWaitTime == waitTime) && _target != null)
        {
            float xx = (float)rand.Next(1, 3);
            if (_startPos != this.transform.position) _startPos = this.transform.position - this.transform.forward * xx;
        }
        if (_currentWaitTime - Time.fixedDeltaTime > 0)
        {
            _currentWaitTime -= Time.fixedDeltaTime;
            if (Move(this.transform.position, _startPos, moveSpeed, true, true, 0.5f) && !this.GetComponent<Animation>().IsPlaying("Attack"))
            {

            }
            else
            {
                this.GetComponent<Animation>().CrossFade("Idle");
                this.transform.LookAt(GameObject.FindGameObjectWithTag("Player").transform);
                if (_target != null) this.transform.LookAt(_target.transform);
            }
        }
        else
        {
            _turnStatus = TurnStatus.Answering;
        }
    }
コード例 #39
0
ファイル: PlayerObject.cs プロジェクト: jkevinp/SciHeroes
 void CheckEnemies()
 {
     selectedIndex = 0; //change the target
     enemyList = enemyList.FindAll(p => p.GetComponent<PlayerObject>().state != PlayerState.Dead);//get all enemies that are not dead.
     print(enemyList.Count);
     if (enemyList.Count == 0) //check if there are still enemies that are alive
     {
         this._turnStatus = TurnStatus.Victory; //if no enemies are alive, do Victory
     }
 }
コード例 #40
0
ファイル: PlayerObject.cs プロジェクト: jkevinp/SciHeroes
 public void BreakAttack()
 {
     this.GetComponent<Animation>()["Combo" + questionBreakIndex].speed = 1f;
     if (!this.GetComponent<Animation>().isPlaying)
     {
         this._turnStatus = TurnStatus.QuestionBreakEnd;
         print("sssss");
     }
 }
コード例 #41
0
 private void OnActorTurnFinish(Actor actor)
 {
     curTurnStatus = TurnStatus.SWITCHING;
 }