public GameRules ReadNewGameRules() { GameRules gameRules = new GameRules(); uint count = ReadUnsignedVarInt(); //Log.Info($"Gamerule count: {count}"); for (int i = 0; i < count; i++) { string name = ReadString(); uint type = ReadUnsignedVarInt(); switch (type) { case 1: { GameRule<bool> rule = new GameRule<bool>(name, ReadBool()); gameRules.Add(rule); break; } case 2: { GameRule<uint> rule = new GameRule<uint>(name, ReadUnsignedVarInt()); gameRules.Add(rule); break; } case 3: { GameRule<float> rule = new GameRule<float>(name, ReadFloat()); gameRules.Add(rule); break; } } } return gameRules; }
public void Awake() { if (instance == null) { instance = this; } }
public void Init(GameRule _activeGameRules) { ruleBarItemByRule = new Dictionary <GameRule, RuleBarItem>(); foreach (RuleBarItemWithGameRule ruleBarItemWithGameRuleItem in ruleBarItemWithGameRuleArray) { ruleBarItemByRule[ruleBarItemWithGameRuleItem.Rule] = ruleBarItemWithGameRuleItem.RuleBarItemPrefab; } if (_activeGameRules != GameRule.None) { gameObject.SetActive(true); // foreach (Transform childItem in transform) { // Destroy(childItem.gameObject); // } Type gameRuleType = typeof(GameRule); Array gameRulesArray = Enum.GetValues(gameRuleType); foreach (Enum gameRuleItem in gameRulesArray) { if (_activeGameRules.HasFlag(gameRuleItem)) { GameRule currentRule = (GameRule)Enum.ToObject(gameRuleType, gameRuleItem); RuleBarItem currentRuleBarItemPrefab; if (ruleBarItemByRule.TryGetValue(currentRule, out currentRuleBarItemPrefab)) { RuleBarItem ruleBarItemInstance = Instantiate(currentRuleBarItemPrefab, transform, false); ruleBarItemInstance.RuleDescriptionPanel = ruleDescriptionPanel; } } } } }
public void TestGameRule_PlayCardSuccessDrawCard() { var player = new Mock <IHanabiPlayer>(); CardIdType id = new CardIdType(0); CardIndexType index = new CardIndexType(0); Card card = new Card(id, index, CardColorType.Blue, CardValueType.Value1); HandCard handCard = new HandCard(card); player.Setup(x => x.GetHandCard(index)).Returns(handCard); player.Setup(x => x.PlayCard(index)); var board = new Mock <IGameBoard>(); CardIdType newId = new CardIdType(1); CardIndexType newIndex = new CardIndexType(1); Card newCard = new Card(newId, newIndex, CardColorType.Blue, CardValueType.Value1); board.Setup(x => x.Draw()).Returns(newCard); board.Setup(x => x.Play(card)).Returns(true); GameRule rule = new GameRule(); Debug.Assert(rule.PlayCard(index, player.Object, board.Object) == PlayCardResult.Success); player.VerifyAll(); board.VerifyAll(); }
public void TestGameRule_PlayCardFailedNoSlot() { var player = new Mock <IHanabiPlayer>(); CardIdType id = new CardIdType(0); CardIndexType index = new CardIndexType(0); Card card = new Card(id, index, CardColorType.Blue, CardValueType.Value1); HandCard handCard = new HandCard(card); player.Setup(x => x.GetHandCard(index)).Returns(handCard); player.Setup(x => x.PlayCard(index)); var board = new Mock <IGameBoard>(); board.Setup(x => x.Draw()).Returns <Card>(null); board.Setup(x => x.Play(card)).Returns(false); board.Setup(x => x.Discard(card)); board.Setup(x => x.Punish()); GameRule rule = new GameRule(); Debug.Assert(rule.PlayCard(index, player.Object, board.Object) == PlayCardResult.FailNoSlot); player.VerifyAll(); board.VerifyAll(); }
public void BeginGame() { this.Status = RoomStatus.Play; Board = new GameBoard(Players); Rule = new GameRule(); foreach (var player in Players) { ResponseGameData initialData = new ResponseGameData(); initialData.Token.Note = Setting.InitialHint; initialData.DrawPileCount = Board.Size; foreach (var otherPlayer in Players) { List <CardInfo> cards = new List <CardInfo>(); foreach (var card in otherPlayer.Cards) { CardInfo info = card.Info; if (otherPlayer.Nickname == player.Nickname) { info.Color = ( int )CardColorType.Unknown; info.Value = ( int )CardValueType.Unknown; } cards.Add(info); } initialData.Cards.Add(otherPlayer.Nickname.Value, cards); } SendCommandToPlayer(player, ActionType.NotifyBoard, initialData); } CurrentPlayer = 0; LastRound = false; NotifyTurn(); }
public ResolveActualWinners(GameRule gameRule, GameEntity game) { this.ExecuteTime = gameRule.ExcecuteTime; this.gameEntity = game; this.GameRuleId = gameRule.GameRuleID; this.ruleType = RuleType.RESOLVE_ACTUAL_WINNERS; }
public void GameRoundTest( int userNumber, int gameRuleNumber, int maxAttemps, int expectedMoney) { var consoleHelperMock = new Mock <IConsoleHelper>(); consoleHelperMock .Setup(x => x.ReadNumberFromConsole()) .Returns(userNumber); var game = new Game(consoleHelperMock.Object); var gameRule = new GameRule { Number = gameRuleNumber, MaxAttempts = maxAttemps }; var user = new User(); game.StartGame(gameRule, user); Assert.AreEqual(expectedMoney, user.Money); }
public GameRule(GameRule rule) { type = rule.type; conditionType = rule.conditionType; value = 0; completeType = RuleCompleteType.None; }
private void UpdateUIOnTrigger(GameRule rule, GameRule def) { int goalCount = -1; int turnCount = -1; int timer = -1; switch (rule.type) { case RuleType.TurnCount: turnCount = def.value - rule.value; break; case RuleType.GoalCount: goalCount = def.value - rule.value; break; case RuleType.TimeCount: timer = def.value - rule.value; break; } EventBus.Instance.Raise(new GameEvents.UpdateUI { goalCount = goalCount, turnCount = turnCount, timer = timer }); }
// Start is called before the first frame update void Start() { jump = gameObject.GetComponent <AudioSource>(); shutter = gameObject.GetComponent <AudioSource>(); bubble = gameObject.GetComponent <AudioSource>(); Bunri = gameObject.GetComponent <AudioSource>(); rigidPlayer = GetComponent <Rigidbody2D>(); sprite = gameObject.GetComponent <SpriteRenderer>(); jumpFlag = false; awaCreate = false; goalAwaDelete = true; warpflag = false; //ワープフラグ playerHeadCollider = _playerHead.GetComponent <CircleCollider2D>(); playerHead = _playerHead.GetComponent <PlayerHeadMove>(); playerHeadRigidbody = _playerHead.GetComponent <Rigidbody2D>(); playerAnime = gameObject.GetComponent <Animator>(); headAnime = _playerHead.GetComponent <Animator>(); gameRule = GameObject.Find("StageManager").GetComponent <GameRule>(); headPosition = _playerHead.transform.localPosition; headvec = _playerHead.transform.localScale; cameraCheck = false; isYcheck = false; SetCurrentState(PlayerState.Stop); }
public void Add(GameRule gameRule, Func <Room, GameRuleBase> gameRuleFactory) { if (!_gameRules.TryAdd(gameRule, gameRuleFactory)) { throw new Exception($"GameRule {gameRule} already registered"); } }
/// <summary> The plugin start callback. Do any initialization here. </summary> public void Start() { Log.DebugFormat("[Quest] Start"); GameEventManager.StartingNewGame += GameEventManagerOnStartingNewGame; GameEventManager.QuestUpdate += GameEventManagerOnQuestUpdate; GameEventManager.NewGame += GameEventManagerOnNewGame; GameEventManager.GameOver += GameEventManagerOnGameOver; if (!(BotManager.CurrentBot is DefaultBot)) { Log.ErrorFormat( "[Quest] This plugin is not compatible with this bot. Please disable the plugin before starting again or change the bot being used."); BotManager.Stop(); return; } // This plugin is for construted mode only, as routines must implement quest logic for arena drafts, and most non-basic quests // require Play mode or Arena to be completed. if (DefaultBotSettings.Instance.GameMode != GameMode.Constructed) { Log.ErrorFormat( "[Quest] This plugin only works when the \"GameMode\" in DefaultBot is set to \"Constructed\". Please disable the plugin or change the DefaultBot settings."); BotManager.Stop(); return; } _lastDeck = DefaultBotSettings.Instance.ConstructedCustomDeck; _lastRule = DefaultBotSettings.Instance.ConstructedGameRule; DefaultBotSettings.Instance.ConstructedGameRule = GameRule.Auto; }
private void ChangeGameRule(bool isOn, GameRule rule) { if (isOn) { this.hallProxy.HallInfo.gameRule = rule; } }
public NotifyGameParticipantsRule(GameRule gameRule, GameEntity game) { this.ExecuteTime = gameRule.ExcecuteTime; this.gameEntity = game; this.GameRuleId = gameRule.GameRuleID; this.ruleType = RuleType.NOTIFY_PARTICIPANTS; }
public Game(CardLevelData[] _cardDefinitionArrayByLevel, int _cardNumber, GameRule _activeGameRules) { Dictionary <PlayerNumber, List <Card> > customDeckByPlayer = CustomGameHolder.NextCardDeckByPlayer; if (customDeckByPlayer != null) { playerByNumber[PlayerNumber.One] = new Player(PlayerNumber.One, _cardDefinitionArrayByLevel, customDeckByPlayer[PlayerNumber.One]); playerByNumber[PlayerNumber.Two] = new Player(PlayerNumber.Two, _cardDefinitionArrayByLevel, customDeckByPlayer[PlayerNumber.Two]); } else { int[] randomCardLevelArray = new int[_cardNumber]; for (int i = 0; i < randomCardLevelArray.Length; i++) { randomCardLevelArray[i] = Random.Range(0, _cardDefinitionArrayByLevel.Length); } playerByNumber[PlayerNumber.One] = new Player(PlayerNumber.One, _cardDefinitionArrayByLevel, randomCardLevelArray); playerByNumber[PlayerNumber.Two] = new Player(PlayerNumber.Two, _cardDefinitionArrayByLevel, randomCardLevelArray); } board = new Board(); activeRules = _activeGameRules; }
// Use this for initialization void Start() { // SE SEControllerObject = GameObject.Find("SEController"); SE = SEControllerObject.GetComponent("SEController") as SEController; // アイテム管理者の取得 Item = GameObject.Find("ItemRoot"); ItemController = Item.GetComponent("ItemController") as ItemController; // ゲーム管理者取得 var GameRule = GameObject.Find("GameRule"); rule = GameRule.GetComponent("GameRule") as GameRule; // エフェクトの初期化 InvinsibleEffect = transform.Find("energyBlast").GetComponent <ParticleSystem> (); InvinsibleEffect.Stop(); // プレイヤーの向きベクトルの初期化 oldVector = 1; transform.localRotation = Quaternion.LookRotation(new Vector3(1f, 0f, 0f)); // キャラクターコントローラーの取得 Col = gameObject.GetComponent("CharacterController") as CharacterController; // 声の管理者取得 PlayerSE = GetComponent <PlayerSEManager> (); SetState(State); }
void leftMenu_RuleChanged(GameRule obj) { removeFocusToChatComponent = true; client.Write(MessagePackSerializer.Serialize(new ChangeGameRuleNetworkData { GameRule = obj })); }
void InPipeChangeScene() { GameObject GameRuleObject = GameObject.Find("GameRule"); GameRule Rule = GameRuleObject.GetComponent("GameRule") as GameRule; Rule.PipeInChangeScene(outPosition, NextScene); }
private void Awake() { if (instance == null) { instance = this; AddNewUnit("Orc/Orc_worker", 10); AddNewUnit("Orc/Orc_light_infantry", 30); AddNewUnit("Orc/Orc_light_cavalry", 50); AddNewUnit("Orc/Orc_spearman", 50); AddNewUnit("Orc/Orc_archer", 70); AddNewUnit("Orc/Orc_shaman", 100); AddNewUnit("Orc/Orc_heavy_infantry", 100); AddNewUnit("Orc/Orc_heavy_cavalry", 150); AddNewUnit("Orc/Orc_mounted_shaman", 200); AddNewUnit("Undead/UD_worker", 10); AddNewUnit("Undead/UD_light_infantry", 30); AddNewUnit("Undead/UD_light_cavalry", 50); AddNewUnit("Undead/UD_spearman", 50); AddNewUnit("Undead/UD_archer", 70); AddNewUnit("Undead/UD_mage", 100); AddNewUnit("Undead/UD_heavy_infantry", 100); AddNewUnit("Undead/UD_heavy_cavalry", 150); AddNewUnit("Undead/UD_mage_mounted", 200); } else { Destroy(this); } }
public PrepareGameRule(GameRule gameRule, GameEntity game) { this.ExecuteTime = gameRule.ExcecuteTime; this.gameEntity = game; this.GameRuleId = gameRule.GameRuleID; this.ruleType = RuleType.PREPARE_GAME; }
// private private static bool CheckHuipaiByHaveLaizi(List <Int64> arr, Int64 laizi, GameRule rule) { List <Int64> temp = new List <Int64>(arr); temp.Remove(laizi); int count; if (TableController.Instance.creatRoomInfo.playerNum == 4) { count = (int)mjCards.tiao_Num; } else { count = (int)mjCards.tong_Num; } for (int i = 1; i < count; i++) { if (i % 10 != 0 && i != laizi) { temp.Add(i); if (CheckIsYingHu(temp)) { return(true); } temp.Remove(i); } } return(false); }
public StartGameRule(GameRule gameRule, GameEntity game) { this.ExecuteTime = gameRule.ExcecuteTime; this.gameEntity = game; this.GameRuleId = gameRule.GameRuleID; this.ruleType = RuleType.START_GAME; }
/// <summary> /// 检测打什么牌后可以听牌 /// </summary> /// <param name="arr"></param> /// <param name="laiz"></param> /// <returns></returns> public static List <Int64> CheckPutOutCanTingpai(List <Int64> arr, Int64 laiz, GameRule gameRule) { List <Int64> canTingCardList = new List <Int64>(); List <Int64> canNotCardList = new List <Int64>(); List <Int64> shengyu; List <Int64> tempList = new List <Int64>(arr); for (int i = tempList.Count - 1; i >= 0; i--) { shengyu = new List <Int64>(tempList); supposePutoutCard = tempList[i]; shengyu.RemoveAt(i); if (!canNotCardList.Contains(supposePutoutCard)) { if (canTingCardList.Contains(supposePutoutCard)) { canTingCardList.Add(tempList[i]); } else { if (CheckIsTing(shengyu, laiz, gameRule).Count > 0) { canTingCardList.Add(tempList[i]); } else { canNotCardList.Add(tempList[i]); } } } } supposePutoutCard = 0; return(canTingCardList); }
void Start() { if (debugMode) { stageInfo.mapNumber = 0001; stageInfo.mapName = "산 남부 중턱"; stageInfo.areaName = "디스메어 산"; stageInfo.gridColor = new Color(0f, 179f / 255f, 63f / 255f); stageInfo.gameRule = GameRules.DefaultRule; } else { stageInfo = GlobalData.stageInfo; } units = new List <Unit>(); skills = new List <Skill>(); gameRule = GameRule.GetGameRule(stageInfo.gameRule); fieldState = new FieldState[12, 4]; for (int x = 0; x < 12; ++x) { for (int y = 0; y < 4; ++y) { fieldState[x, y] = new FieldState(); } } UIManager.Instance.Initialize(); TouchManager.Instance.Initialize(); CameraManager.Instance.Initialize(); gameRule.Initialize(); grid.Initialize(); background.Initialize(); }
/// <summary> /// 检测是否听牌 /// </summary> /// <returns></returns> public static List <Int64> CheckIsTing(List <Int64> list, Int64 laizi, GameRule gameRule, Int64 choseCard = 0) { int count; List <Int64> canHuCardList = new List <Int64>(); if (TableController.Instance.creatRoomInfo.playerNum == 4) { count = (int)mjCards.tiao_Num; } else { count = (int)mjCards.tong_Num; } for (int i = 1; i < count; i++) { if (i % 10 != 0) { if (choseCard != 0) { supposePutoutCard = choseCard; } if (IsHupai(list, laizi, i, gameRule)) { canHuCardList.Add(i); } } } return(canHuCardList); }
/// <summary> The plugin start callback. Do any initialization here. </summary> public void Start() { Log.DebugFormat("[日常任务插件] 开始运行"); GameEventManager.StartingNewGame += GameEventManagerOnStartingNewGame; GameEventManager.QuestUpdate += GameEventManagerOnQuestUpdate; GameEventManager.NewGame += GameEventManagerOnNewGame; GameEventManager.GameOver += GameEventManagerOnGameOver; if (!(BotManager.CurrentBot is DefaultBot)) { Log.ErrorFormat( "[日常任务插件] 本插件和兄弟存在兼容问题,请停止插件后再开始挂机."); BotManager.Stop(); return; } // This plugin is for construted mode only, as routines must implement quest logic for arena drafts, and most non-basic quests // require Play mode or Arena to be completed. if (DefaultBotSettings.Instance.GameMode != GameMode.玩家对战模式) { Log.ErrorFormat( "[日常任务插件] 本插件只适用于玩家对战模式. 请停止本插件或改变其他设置."); BotManager.Stop(); return; } _lastDeck = DefaultBotSettings.Instance.ConstructedCustomDeck; _lastRule = DefaultBotSettings.Instance.ConstructedGameRule; DefaultBotSettings.Instance.ConstructedGameRule = GameRule.随机模式; }
private static IEnumerable <Player> GetPlayers(GameRule rule, List <Attendee> shuffledAttendees) { var roles = rule.Role2Count.SelectMany(role2count => Enumerable.Repeat(role2count.Key, role2count.Value)); return(shuffledAttendees.Zip(roles, (attendee, role) => new Player(attendee, role))); }
public void WriteGameRules(GameRules rules) { if (rules == null) { this.WriteVarInt(0); return; } this.WriteVarInt(rules.Count); for (int i = 0; i < rules.Count; ++i) { this.WriteString(rules[i].Name.ToLower()); if (rules[i] is GameRule <bool> ) { GameRule <bool> boolRule = (GameRule <bool>)rules[i]; this.WriteByte(1); this.WriteBool(boolRule.Value); } else if (rules[i] is GameRule <int> ) { GameRule <int> intRule = (GameRule <int>)rules[i]; this.WriteByte(2); this.WriteVarInt(intRule.Value); } else if (rules[i] is GameRule <float> ) { GameRule <float> floatValue = (GameRule <float>)rules[i]; this.WriteByte(3); this.WriteLFloat(floatValue.Value); } } }
public void SerializationMapTest( ) { Map map = new Map("Test.xml"); Game.Current.GameRule = GameRule.GenerateEmpty( ); Game.Current.Map = map; Console.WriteLine(map.ToXElement( )); }
public void DeleteRule(GameRule ruleToDelete, bool shouldDeleteRequiredObjects = true) { //don't delete a rule if the rules were recently changed if (ruleChangeIsOnCooldown()) return; //play sound soundSource.clip = removeRuleSound; soundSource.Play(); float widthoffset = ((RectTransform)(ruleDisplayPrefab.transform)).rect.width * 0.5f; for (int i = 0; i < rulesList.Count;) { GameRule gameRule = rulesList[i]; if (gameRule == ruleToDelete) { widthoffset = -widthoffset; rulesList.RemoveAt(i); rulesDict[ruleToDelete.action.GetType()].Remove(ruleToDelete); } else { gameRule.animationStartTime = Time.realtimeSinceStartup; gameRule.animationState = 4; gameRule.targetPosition = (gameRule.startPosition = gameRule.ruleDisplay.transform.localPosition); gameRule.targetPosition.x += widthoffset; i++; } //cancel any wait timers associated with this rule if (gameRule.action is GameRuleEffectAction) { GameRuleEffect innerEffect = ((GameRuleEffectAction)(gameRule.action)).innerEffect; if (innerEffect is GameRuleDurationEffect) { GameRuleActionDuration duration = ((GameRuleDurationEffect)(innerEffect)).duration; if (duration is GameRuleActionUntilConditionDuration) { GameRuleEventHappenedCondition untilCondition = ((GameRuleActionUntilConditionDuration)(duration)).untilCondition; //loop through all the wait timers and cancel their actions if they have this rule for (int j = waitTimers.Count - 1; j >= 0; j--) { if (waitTimers[j].condition == untilCondition) { waitTimers[j].cancelAction(); waitTimers.RemoveAt(j); } } } } } } Destroy(ruleToDelete.ruleDisplay); if (shouldDeleteRequiredObjects) deleteRequiredObjects(); lastRuleChange = Time.realtimeSinceStartup; //update music musicPlayer.setTrackCount(rulesList.Count); }
//converting components into an actual rule string public string getGameRuleString() { GameRule rule = new GameRule(subComponents[0].getCondition(), subComponents[1].getAction()); string name = GameRuleSerializer.packRuleToString(rule); Debug.Log("If " + rule.condition.ToString() + " => Then " + rule.action.ToString() + " - " + name); return name; }
void Start() { GameRuleObject = GameObject.Find ("GameRule").GetComponent<GameRule>(); }
public int CalculateScore(List<int> diceResult, GameRule gameRule) { return gameRule.Calculate(diceResult); }
// Use this for initialization void Start() { i = this; Players.AddRange(Transform.FindObjectsOfType<Controler>()); }