示例#1
0
文件: Scene1.cs 项目: pacojq/Mononoke
        public Scene1()
        {
            Entity cameraControllerEntity = new Entity();

            cameraControllerEntity.Bind(new CameraController());
            cameraControllerEntity.Bind(new CameraControllerDrawer());

            Add(cameraControllerEntity);

            MainCamera.Width  /= 2;
            MainCamera.Height /= 2;
            var offset = new Vector2(MainCamera.Width / 2f, MainCamera.Height / 2f);

            MainCamera.Offset = offset;


            for (int i = 0; i < 100; i++)
            {
                var p = new DummyPlayer();
                Add(p);
                p.X = Random.Range(.2f, .8f) * MononokeGame.Width;
                p.Y = Random.Range(.2f, .8f) * MononokeGame.Height;

                /*
                 * var b = new DummyBox();
                 * Add(b);
                 * b.X = Random.Next(MononokeGame.Width);
                 * b.Y = Random.Next(MononokeGame.Height);
                 */
            }

            //Space.EnableDebugDraw = true;
        }
 protected override ISantaseGame CreateGame()
 {
     IPlayer firstPlayer = new ELRumDrinkingCapitanPlayer(); // new PlayerWithLoggerDecorator(new SmartPlayer(), new ConsoleLogger("[-]"))
     IPlayer secondPlayer = new DummyPlayer();
     ISantaseGame game = new SantaseGame(firstPlayer, secondPlayer); // new ConsoleLogger("[game] "));
     return game;
 }
示例#3
0
        protected override ISantaseGame CreateGame()
        {
            IPlayer      firstPlayer  = new DummyPlayer("First Dummy Player");
            IPlayer      secondPlayer = new DummyPlayer("Second Dummy Player");
            ISantaseGame game         = new SantaseGame(firstPlayer, secondPlayer); // new ConsoleLogger("[game] "));

            return(game);
        }
        protected override ISantaseGame CreateGame()
        {
            IPlayer      firstPlayer  = new SantiagoPlayer();                       // new PlayerWithLoggerDecorator(new SmartPlayer(), new ConsoleLogger("[-]"))
            IPlayer      secondPlayer = new DummyPlayer();
            ISantaseGame game         = new SantaseGame(firstPlayer, secondPlayer); // new ConsoleLogger("[game] "));

            return(game);
        }
示例#5
0
        public void TestClone_CloneIgnore_Player()
        {
            var player = new DummyPlayer();

            player.Color     = Color.Black;
            player.IsChanged = true;
            var player2 = player.Clone();

            Assert.AreEqual(player.Color, player2.Color);
            Assert.IsTrue(player2.IsChanged);
        }
示例#6
0
            public DummyLobbyMaster()
            {
                DummyPlayer player = new DummyPlayer(0, "Server", 0, 0);

                LobbyPlayers.Add(player);
                LobbyPlayersMap.Add(0, player);
                LobbyTeams.Add(0, new List <IClientMockPlayer>()
                {
                    player
                });
            }
示例#7
0
        public void ShouldHave_0_StartingCrystals()
        {
            //assign
            IDeck        startingDummyDeck = new DummyDeck();
            IDummyPlayer dummyPlayer       = new DummyPlayer(startingDummyDeck);
            //act
            int startingCrystalCount = dummyPlayer.CrystalCount();

            //assert
            startingCrystalCount.Should().Be(0);
        }
    void OnTriggerEnter(Collider other)
    {
        GameObject           otherObject  = other.gameObject;
        RespondToHidingPlace actionScript = otherObject.GetComponent <RespondToHidingPlace>();

        // actionScript.isInHiding = true;
        actionScript.EnterHiding(transform.position);

        // Tell the server that this player is now hiding
        DummyPlayer dummyScript = otherObject.GetComponent <DummyPlayer>();

        dummyScript.frozen = true;
    }
示例#9
0
        public void ShouldHave_1_StartingCrystal()
        {
            //assign
            IEnumerable <ICrystal> crystals = new List <ICrystal> {
                new GreenCrystal()
            };
            IDeck        startingDummyDeck = new DummyDeck();
            IDummyPlayer dummyPlayer       = new DummyPlayer(startingDummyDeck, crystals);
            //act
            int startingCrystalCount = dummyPlayer.CrystalCount();

            //assert
            startingCrystalCount.Should().Be(1);
        }
示例#10
0
    // public void InitialiseFishPositions () {

    // }

    void Start()
    {
        playerRigidbody         = GetComponent <Rigidbody> ();
        hidingPlaceLookRotation = Quaternion.LookRotation(hidingPlaceLookDirection);

        cam = GameObject.Find("/WigglyFish/Camera").GetComponent <Camera>();
        // sardineModel = this.gameObject.transform.GetChild(0);
        dummyPlayer = GetComponent <DummyPlayer> ();

        Debug.Log("cam = " + cam);
        originalCamPosition = cam.transform.localPosition;
        originalCamRotation = cam.transform.localRotation;

        // ExitHiding();
    }
示例#11
0
        private static void Main()
        {
            IPlayer southPlayer = new DummyPlayer("South dummy"); // new DebugDummyPlayer("South debug dummy");
            IPlayer eastPlayer  = new DummyPlayer("East dummy");
            IPlayer northPlayer = new DummyPlayer("North dummy", alwaysPass: false);
            IPlayer westPlayer  = new DummyPlayer("West dummy", alwaysPass: false);
            var     game        = new GameManager(southPlayer, eastPlayer, northPlayer, westPlayer);

            game.GameInfo.PlayerBid  += GameInfoOnPlayerBid;
            game.GameInfo.CardPlayed += GameInfoOnCardPlayed;

            for (int i = 0; i < 10000; i++)
            {
                game.StartNewGame();
                //// Console.WriteLine("{0} - {1}", game.SouthNorthScore, game.EastWestScore);
            }
        }
示例#12
0
        private int SimulateGamesAndGetSmartPlayerWins(int gamesToSimulate)
        {
            var smartPlayer     = new SmartPlayer();
            var smartPlayerWins = 0;

            var dummyPlayer = new DummyPlayer();

            var game = new SantaseGame(smartPlayer, dummyPlayer);

            for (var i = 0; i < gamesToSimulate; i++)
            {
                var winner = game.Start(i % 2 == 0 ? PlayerPosition.FirstPlayer : PlayerPosition.SecondPlayer);
                if (winner == PlayerPosition.FirstPlayer)
                {
                    smartPlayerWins++;
                }
            }

            // Console.WriteLine(smartPlayerWins);
            return(smartPlayerWins);
        }
示例#13
0
        public static void Main()
        {
            // Initialize console properties
            Thread.CurrentThread.CurrentCulture = CultureInfo.InvariantCulture;
            ConsoleHelper.ResizeConsole(80, Settings.ConsoleHeight);
            Console.OutputEncoding = Encoding.Unicode;

            Console.Title = Settings.ProgramName;
            ConsoleHelper.WriteOnPosition("Please enter player name: ", 20, 9, ConsoleColor.Black, ConsoleColor.DarkGray);
            var playerName = Console.ReadLine();

            Console.Clear();

            IPlayer southPlayer = new ConsoleHumanPlayer(playerName);
            IPlayer eastPlayer  = new DummyPlayer("East dummy", alwaysPass: false);
            IPlayer northPlayer = new DummyPlayer("North dummy", alwaysPass: false);
            IPlayer westPlayer  = new DummyPlayer("West dummy");

            var game = new GameManager(southPlayer, eastPlayer, northPlayer, westPlayer);

            game.StartNewGame();
        }
示例#14
0
        private IClientMockPlayer CreateClientMockPlayer(uint playerId, string playerName)
        {
            var player = new DummyPlayer(playerId, playerName, 0, 0);

            return(player);
        }
        public void ComputeMechanics(ParsedLog log)
        {
            MechanicData mechData   = log.MechanicData;
            FightData    fightData  = log.FightData;
            CombatData   combatData = log.CombatData;
            long         start      = fightData.FightStart;
            long         end        = fightData.FightEnd;

            Mechanic.CheckSpecialCondition condition;
            HashSet <ushort> playersIds = new HashSet <ushort>(log.PlayerList.Select(x => x.InstID));
            Dictionary <ushort, AbstractMasterPlayer> regroupedMobs = new Dictionary <ushort, AbstractMasterPlayer>();

            foreach (Mechanic mech in MechanicList)
            {
                switch (mech.MechanicType)
                {
                case Mechanic.MechType.PlayerStatus:
                    foreach (Player p in log.PlayerList)
                    {
                        List <CombatItem> cList = new List <CombatItem>();
                        switch (mech.SkillId)
                        {
                        case SkillItem.DeathId:
                            cList = combatData.GetStates(p.InstID, ParseEnum.StateChange.ChangeDead, start, end);
                            break;

                        case SkillItem.DownId:
                            cList = combatData.GetStates(p.InstID, ParseEnum.StateChange.ChangeDown, start, end);
                            break;

                        case SkillItem.ResurrectId:
                            cList = log.GetCastData(p.InstID).Where(x => x.SkillID == SkillItem.ResurrectId && x.IsActivation.IsCasting()).ToList();
                            break;
                        }
                        foreach (CombatItem mechItem in cList)
                        {
                            mechData[mech].Add(new MechanicLog(mechItem.Time - start, mech, p));
                        }
                    }
                    break;

                case Mechanic.MechType.SkillOnPlayer:
                    foreach (Player p in log.PlayerList)
                    {
                        List <DamageLog> dls = p.GetDamageTakenLogs(log, 0, fightData.FightDuration);
                        condition = mech.SpecialCondition;
                        foreach (DamageLog dLog in dls)
                        {
                            if (condition != null && !condition(new SpecialConditionItem(dLog)))
                            {
                                continue;
                            }
                            if (dLog.SkillId == mech.SkillId && dLog.Result.IsHit())
                            {
                                mechData[mech].Add(new MechanicLog(dLog.Time, mech, p));
                            }
                        }
                    }
                    break;

                case Mechanic.MechType.PlayerBoon:
                case Mechanic.MechType.PlayerOnPlayer:
                case Mechanic.MechType.PlayerBoonRemove:
                    foreach (Player p in log.PlayerList)
                    {
                        condition = mech.SpecialCondition;
                        foreach (CombatItem c in log.GetBoonData(mech.SkillId))
                        {
                            if (condition != null && !condition(new SpecialConditionItem(c)))
                            {
                                continue;
                            }
                            if (mech.MechanicType == Mechanic.MechType.PlayerBoonRemove)
                            {
                                if (c.IsBuffRemove == ParseEnum.BuffRemove.Manual && p.InstID == c.SrcInstid)
                                {
                                    mechData[mech].Add(new MechanicLog(c.Time - start, mech, p));
                                }
                            }
                            else
                            {
                                if (c.IsBuffRemove == ParseEnum.BuffRemove.None && p.InstID == c.DstInstid)
                                {
                                    mechData[mech].Add(new MechanicLog(c.Time - start, mech, p));
                                    if (mech.MechanicType == Mechanic.MechType.PlayerOnPlayer)
                                    {
                                        mechData[mech].Add(new MechanicLog(c.Time - start, mech, log.PlayerList.FirstOrDefault(x => x.InstID == c.SrcInstid)));
                                    }
                                }
                            }
                        }
                    }
                    break;

                case Mechanic.MechType.HitOnEnemy:
                    foreach (Player p in log.PlayerList)
                    {
                        condition = mech.SpecialCondition;
                        IEnumerable <AgentItem> agents = log.AgentData.GetAgentsByID((ushort)mech.SkillId);
                        foreach (AgentItem a in agents)
                        {
                            foreach (DamageLog dl in p.GetDamageLogs(null, log, 0, log.FightData.FightDuration))
                            {
                                if (dl.DstInstId != a.InstID || dl.IsCondi > 0 || dl.Time < a.FirstAware - start || dl.Time > a.LastAware - start || (condition != null && !condition(new SpecialConditionItem(dl))))
                                {
                                    continue;
                                }
                                mechData[mech].Add(new MechanicLog(dl.Time, mech, p));
                            }
                        }
                    }
                    break;

                case Mechanic.MechType.PlayerSkill:
                    foreach (Player p in log.PlayerList)
                    {
                        condition = mech.SpecialCondition;
                        foreach (CombatItem c in log.GetCastDataById(mech.SkillId))
                        {
                            if (condition != null && !condition(new SpecialConditionItem(c)))
                            {
                                continue;
                            }
                            if (c.IsActivation.IsCasting() && c.SrcInstid == p.InstID)
                            {
                                mechData[mech].Add(new MechanicLog(c.Time - fightData.FightStart, mech, p));
                            }
                        }
                    }
                    break;

                case Mechanic.MechType.EnemyBoon:
                case Mechanic.MechType.EnemyBoonStrip:
                    condition = mech.SpecialCondition;
                    foreach (CombatItem c in log.GetBoonData(mech.SkillId))
                    {
                        if (condition != null && !condition(new SpecialConditionItem(c)))
                        {
                            continue;
                        }
                        AbstractMasterPlayer amp = null;
                        if (mech.MechanicType == Mechanic.MechType.EnemyBoon && c.IsBuffRemove == ParseEnum.BuffRemove.None)
                        {
                            Boss target = Targets.Find(x => x.InstID == c.DstInstid && x.FirstAware <= c.Time && x.LastAware >= c.Time);
                            if (target != null)
                            {
                                amp = target;
                            }
                            else
                            {
                                AgentItem a = log.AgentData.GetAgent(c.DstAgent);
                                if (playersIds.Contains(a.InstID))
                                {
                                    continue;
                                }
                                else if (a.MasterAgent != 0)
                                {
                                    AgentItem m = log.AgentData.GetAgent(a.MasterAgent);
                                    if (playersIds.Contains(m.InstID))
                                    {
                                        continue;
                                    }
                                }
                                if (!regroupedMobs.TryGetValue(a.ID, out amp))
                                {
                                    amp = new DummyPlayer(a);
                                    regroupedMobs.Add(a.ID, amp);
                                }
                            }
                        }
                        else if (mech.MechanicType == Mechanic.MechType.EnemyBoonStrip && c.IsBuffRemove == ParseEnum.BuffRemove.Manual)
                        {
                            Boss target = Targets.Find(x => x.InstID == c.SrcInstid && x.FirstAware <= c.Time && x.LastAware >= c.Time);
                            if (target != null)
                            {
                                amp = target;
                            }
                            else
                            {
                                AgentItem a = log.AgentData.GetAgent(c.SrcAgent);
                                if (playersIds.Contains(a.InstID))
                                {
                                    continue;
                                }
                                else if (a.MasterAgent != 0)
                                {
                                    AgentItem m = log.AgentData.GetAgent(a.MasterAgent);
                                    if (playersIds.Contains(m.InstID))
                                    {
                                        continue;
                                    }
                                }
                                if (!regroupedMobs.TryGetValue(a.ID, out amp))
                                {
                                    amp = new DummyPlayer(a);
                                    regroupedMobs.Add(a.ID, amp);
                                }
                            }
                        }
                        if (amp != null)
                        {
                            mechData[mech].Add(new MechanicLog(c.Time - fightData.FightStart, mech, amp));
                        }
                    }
                    break;

                case Mechanic.MechType.EnemyCastEnd:
                case Mechanic.MechType.EnemyCastStart:
                    condition = mech.SpecialCondition;
                    foreach (CombatItem c in log.GetCastDataById(mech.SkillId))
                    {
                        if (condition != null && !condition(new SpecialConditionItem(c)))
                        {
                            continue;
                        }
                        AbstractMasterPlayer amp = null;
                        if ((mech.MechanicType == Mechanic.MechType.EnemyCastStart && c.IsActivation.IsCasting()) || (mech.MechanicType == Mechanic.MechType.EnemyCastEnd && !c.IsActivation.IsCasting()))
                        {
                            Boss target = Targets.Find(x => x.InstID == c.SrcInstid && x.FirstAware <= c.Time && x.LastAware >= c.Time);
                            if (target != null)
                            {
                                amp = target;
                            }
                            else
                            {
                                AgentItem a = log.AgentData.GetAgent(c.SrcAgent);
                                if (playersIds.Contains(a.InstID))
                                {
                                    continue;
                                }
                                else if (a.MasterAgent != 0)
                                {
                                    AgentItem m = log.AgentData.GetAgent(a.MasterAgent);
                                    if (playersIds.Contains(m.InstID))
                                    {
                                        continue;
                                    }
                                }
                                if (!regroupedMobs.TryGetValue(a.ID, out amp))
                                {
                                    amp = new DummyPlayer(a);
                                    regroupedMobs.Add(a.ID, amp);
                                }
                            }
                        }
                        if (amp != null)
                        {
                            mechData[mech].Add(new MechanicLog(c.Time - fightData.FightStart, mech, amp));
                        }
                    }
                    break;

                case Mechanic.MechType.Spawn:
                    foreach (AgentItem a in log.AgentData.GetAgentByType(AgentItem.AgentType.NPC).Where(x => x.ID == mech.SkillId))
                    {
                        if (!regroupedMobs.TryGetValue(a.ID, out AbstractMasterPlayer amp))
                        {
                            amp = new DummyPlayer(a);
                            regroupedMobs.Add(a.ID, amp);
                        }
                        mechData[mech].Add(new MechanicLog(a.FirstAware - fightData.FightStart, mech, amp));
                    }
                    break;
                }
            }
            mechData.ComputePresentMechanics(log);
        }