private void button1_Click(object sender, EventArgs e)
        {
            PlayerDef player = Players[0];

            cmbPlayers.Items.Add(player.Name);
            Players.Add(player);
        }
示例#2
0
 public CharacterLogic(PlayerDef def)
 {
     characterDef = def;
     careerDef    = ResourceManager.GetCareerDef(characterDef.Career);
     Info         = new CharacterInfo(def);
     BattleInfo   = new CharacterBattleInfo();
 }
示例#3
0
 public Player(Enemy enemy)
 {
     refEnemy = enemy;
     def      = enemy.player.def;
     def.type = PlayerDef.Type.AI;
     BaseInit();
 }
示例#4
0
        private void lstPlayers_SelectionChanged(MySelectableListItem lastSelected, MySelectableListItem newSelected)
        {
            if (lastSelected != newSelected)
            {
                if (lastSelected != null)
                {
                    object[] data = lastSelected.CustomData as object[];
                    Label    lbl  = data[1] as Label;
                    lbl.Background = Brushes.Transparent;
                    lbl.InvalidateVisual();
                }
                if (newSelected != null)
                {
                    object[] data = newSelected.CustomData as object[];
                    Label    lbl  = data[1] as Label;
                    lbl.Background = selected;
                    lbl.InvalidateVisual();
                    PlayerDef pd = data[0] as PlayerDef;

                    using (var d = lstTriggers.Dispatcher.DisableProcessing()) {
                        lstTriggers.Clear();
                        List <UIElement> items = new List <UIElement>();
                        List <Trigger>   trigs = Triggers.TriggerData[pd];
                        foreach (Trigger trig in trigs)
                        {
                            InsertTriggerIntoTheVisualList(trig);
                        }
                    }
                }
            }
        }
        private void ParsePlayerFile(Stream input)
        {
            PlayerNames = Names.GetTextFile("Strikers2013Editor.Common.playerNames.txt");
            using (var br = new BeBinaryReader(input))
            {
                DataBackup             = br.ReadBytes(0xFA4);
                br.BaseStream.Position = 0x10;
                var count = br.ReadInt32();
                br.BaseStream.Position = 0xFA4;
                Players = new List <PlayerDef>();
                for (var i = 1; i < count; i++)
                {
                    if (br.BaseStream.Position > br.BaseStream.Length - 0x148)
                    {
                        break;
                    }
                    var player = new PlayerDef(br);

                    Players.Add(player);
                    if (i < PlayerNames.Length)
                    {
                        cmbPlayers.Items.Add(PlayerNames[i]);
                    }
                    else
                    {
                        cmbPlayers.Items.Add(player.Name);
                    }
                }
            }
        }
示例#6
0
 public void OnEnable()
 {
     player = target as PlayerDef;
     base.InitTarget(player);
     weaponCount = player.DefaultWeapons.Count;
     skillCount  = player.DefaultSkills.Count;
 }
        public void OnUpdate()
        {
            if (DualityApp.Gamepads[PlayerDef.AssignedGamepad].LeftThumbstick.X < -Constants.Instance.GamepadDeadband)
            {
                if (!_colorChanged)
                {
                    PlayerDef.PrevColor();
                }
                _colorChanged = true;
            }
            else if (DualityApp.Gamepads[PlayerDef.AssignedGamepad].LeftThumbstick.X > Constants.Instance.GamepadDeadband)
            {
                if (!_colorChanged)
                {
                    PlayerDef.NextColor();
                }
                _colorChanged = true;
            }
            else
            {
                _colorChanged = false;
            }

            if (DualityApp.Gamepads[PlayerDef.AssignedGamepad].ButtonHit(GamepadButton.A))
            {
                PlayerReady = !PlayerReady;
            }
        }
示例#8
0
    public Game(byte[] data, int startindex) // Deserialize
    {
        int pos = startindex + 2;

        int len = data[pos];

        Name = System.Text.Encoding.UTF8.GetString(data, pos + 1, len);
        pos += len + 1;

        Difficulty = data[pos + 0];
        NumPlayers = data[pos + 1];
        NumJoined  = data[pos + 2];
        NumAIs     = data[pos + 3];
        Status     = (GameStatus)data[pos + 4];
        pos       += 5;

        Creator = new PlayerDef(data, pos + 1);
        pos    += data[pos] + 1;
        Winner  = new PlayerDef(data, pos + 1);
        pos    += data[pos] + 1;

        long time = BitConverter.ToInt64(data, pos);

        CreationTime = DateTime.FromBinary(time);
        pos         += 8;

        rndSeed = BitConverter.ToInt32(data, pos);
        pos    += 4;

        multiplayer = data[pos] != 0;

        nump    = 0;
        Players = new PlayerDef[6];
    }
示例#9
0
        private void InitializePlayerSummary(object sender, EventArgs e)
        {
            var textBlock = (TextBlock)sender;
            var player    = textBlock.DataContext as Player;

            if (player != null && player.IsGlobalPlayer)
            {
                textBlock.Visibility = Visibility.Collapsed;
                return;
            }

            PlayerDef def    = Program.Game.Definition.PlayerDefinition;
            string    format = def.IndicatorsFormat;

            if (format == null)
            {
                textBlock.Visibility = Visibility.Collapsed;
                return;
            }

            var multi       = new MultiBinding();
            int placeholder = 0;

            format = Regex.Replace(format, @"{#([^}]*)}", delegate(Match match)
            {
                string name = match.Groups[1].Value;
                if (player != null)
                {
                    Counter counter =
                        player.Counters.FirstOrDefault(
                            c => c.Name == name);
                    if (counter != null)
                    {
                        multi.Bindings.Add(new Binding("Value")
                        {
                            Source = counter
                        });
                        return("{" + placeholder++ + "}");
                    }
                }
                if (player != null)
                {
                    Group group =
                        player.IndexedGroups.FirstOrDefault(
                            g => g.Name == name);
                    if (@group != null)
                    {
                        multi.Bindings.Add(new Binding("Count")
                        {
                            Source = @group.Cards
                        });
                        return("{" + placeholder++ + "}");
                    }
                }
                return("?");
            });
            multi.StringFormat = format;
            textBlock.SetBinding(TextBlock.TextProperty, multi);
        }
示例#10
0
        private void refershListAndKeepSelection(Trigger trigDef, PlayerDef pselPld)
        {
            updateLists();
            int  index = 0;
            bool found = false;

            // Check if trigger is still under selected player list
            if (trigDef != null)
            {
                if (!trigDef.getAffectedPlayers().Contains(pselPld))   // Select another player who has this trigger (the first one)
                {
                    pselPld = trigDef.getAffectedPlayers()[0];
                }
            }

            // Find the player and activate it
            foreach (MySelectableListItem pl in lstPlayers.GetAllItems())
            {
                PlayerDef pld = ((object[])pl.CustomData)[0] as PlayerDef;
                if (pld == pselPld)
                {
                    lstPlayers.SelectedIndex = index;
                    found = true;
                    break;
                }
                index++;
            }
            if (!found)
            {
                // Should never happen
                if (lstPlayers.GetAllItems().Count == 0)
                {
                    lstTriggers.Clear();
                    return;
                }
                else
                {
                    lstPlayers.SelectedIndex = 0;
                    lstTriggers.Clear();
                    return;
                }
            }
            else
            {
                // Select trigger now
                index = 0;
                foreach (MySelectableListItem trg in lstTriggers.GetAllItems())
                {
                    Trigger trig = ((object[])trg.CustomData)[1] as Trigger;
                    lstTriggers.SelectedIndex = index;
                    if (trig == trigDef)
                    {
                        break;
                    }
                    index++;
                }
            }
        }
示例#11
0
    public void SetDataFromDef(PlayerDef DefaultData)
    {
        logic = new CharacterLogic(DefaultData);

        logic.careerDef = ResourceManager.GetCareerDef(logic.characterDef.Career);
        if (logic.careerDef == null)
        {
            Debug.LogError("不存在的career def");
        }
    }
示例#12
0
    public static RPGPlayer Create(int id, CharacterAttribute customAttribute = null)
    {
        PlayerDef def = ResourceManager.GetPlayerDef(id);
        RPGPlayer r   = new RPGPlayer(def);

        if (customAttribute != null)
        {
            r.logic.SetAttribute(customAttribute);
        }
        return(r);
    }
示例#13
0
 public CharacterInfo(PlayerDef def)
 {
     ID        = def.CommonProperty.ID;
     Level     = def.DefaultLevel;
     Exp       = 0;
     Career    = def.Career;
     Attribute = def.DefaultAttribute;
     CurrentHP = Attribute.HP;
     MaxHP     = Attribute.HP;
     Items     = new ItemGroup(def.DefaultWeapons);
     Skills    = new SkillGroup(def.DefaultSkills);
 }
示例#14
0
    // Start is called before the first frame update
    void Start()
    {
        playerMovement = GetComponent <PlayerMovement>();
        player         = GetComponent <Player>();

        playerAttack = GetComponent <PlayerAttack>();
        playerDef    = GetComponent <PlayerDef>();

        if (player != null)
        {
            playerNum = player.playerNum;
        }
    }
示例#15
0
        public static PlayerDef CreateProps()
        {
            int count = ScriptableObjectUtility.GetFoldFileCount(DIRECTORY_PATH);

            PlayerDef character = ScriptableObjectUtility.CreateAsset <PlayerDef>(
                count.ToString(),
                DIRECTORY_PATH,
                true
                );

            character.CommonProperty.ID   = count;
            character.CommonProperty.Name = "";
            return(character);
        }
    private void UpdateCurrentDef(PlayerDef next)
    {
        if (_characterPreview != null)
        {
            Destroy(_characterPreview);
            _characterPreview = null;
        }

        _currentDef = next;

        if (_currentDef != null)
        {
            _characterPreview = Instantiate(_currentDef.UIPreviewPrefab);
            _characterPreview.transform.parent        = Platform.transform;
            _characterPreview.transform.localPosition = Vector3.zero;
            _characterPreview.transform.localRotation = Quaternion.identity;
        }
    }
示例#17
0
 public PlayerDef toPlayerDef()
 {
     if (this is NumToken)
     {
         int index = this.toInt();
         return(PlayerDef.getByIndex(index));
     }
     else if (this is StringToken)
     {
         foreach (PlayerDef pd in PlayerDef.AllPlayers)
         {
             if (pd.GroupName.Equals(this.content))
             {
                 return(pd);
             }
         }
     }
     throw new NotImplementedException();
 }
        public void Init(int index, CharacterInfo ch, int state)//此处确定必须出场和不允许出场的人物,必须出场的放到最前面,不允许出场的强制放到最后面
        {
            this.index = index;
            this.state = state;
            PlayerDef def = ResourceManager.GetPlayerDef(ch.ID);

            icon.sprite   = def.Portrait;
            charname.text = def.CommonProperty.Name;
            job.text      = ch.Career.ToString();
            lv.text       = ch.Level.ToString();
            exp.text      = ch.Exp.ToString();
            mhp.text      = ch.Attribute.HP.ToString();

            //初始状态由父类中的count决定 如果已经大于最大出场人物,则后面的人物都显示为灰的
            if (state == (int)toBattle.ForceNo)
            {
                bEnable        = false;
                charname.color = disable_color;
            }
            if (state == (int)toBattle.ForceYes)
            {
                bEnable = true;
                SelectToBattlePanel.selectToBattle.currentSelectCount++;
                charname.color = forceYes_color;
            }

            if (state == (int)toBattle.UserDefine)
            {
                if (index >= SelectToBattlePanel.selectToBattle._limit)
                {
                    charname.color = disable_color;
                    bEnable        = false;
                }
                else
                {
                    charname.color = enable_color;
                    bEnable        = true;
                    SelectToBattlePanel.selectToBattle.currentSelectCount++;
                }
            }
        }
示例#19
0
    public void InitEnemiesSingleplayer(Game theGame, Transform selectedEnemies) // This is for singleplayer
    {
        game = theGame;
        GD.InitRandomGenerator(theGame.rndSeed);
        currentVals = new GameValues(theGame.Name);

        nump = 0;
        Enemy enemy;

        foreach (Transform p in selectedEnemies)
        {
            enemy = p.GetComponent <Enemy>();
            enemy.player.def.id     = GD.GetIDForAI(enemy.player.def.name);
            enemy.player.def.avatar = GD.GetAvatarForAI(enemy.player.def.name);
            players[nump]           = new Player(enemy);
            game.AddPlayer(players[nump].def);
            nump++;
        }
        enemy         = GD.instance.PlayersBase[0].GetComponent <Enemy>();
        enemy.player  = new Player(GD.thePlayer.player.def);
        players[nump] = new Player(enemy);
        game.AddPlayer(players[nump].def);
        nump++;
        enemy.SetEnemyAsPlayer(GD.thePlayer.Name, GD.thePlayer.Avatar, GD.thePlayer.ID);

        // Randomize the positions
        for (int i = 0; i < 1000; i++)
        {
            int    a    = GD.GetRandom(0, nump);
            int    b    = GD.GetRandom(0, nump);
            Player tmpe = players[a];
            players[a] = players[b];
            players[b] = tmpe;
            PlayerDef tmpsp = game.Players[a];
            game.Players[a] = game.Players[b];
            game.Players[b] = tmpsp;
        }

        SharedInit();
    }
示例#20
0
        private bool parsePlayerNames()
        {
            Token t = getNextToken();

            if (t is CommandToken)
            {
                CommandToken ct = t as CommandToken;
                if (ct.isPlayers())
                {
                    if (getNextToken() is LeftBracket)
                    {
                        Token num = getNextToken();
                        if (num is NumToken)
                        {
                            if (getNextToken() is RightBracket)
                            {
                                if (getNextToken() is Colon)
                                {
                                    int playersCount = num.toInt();
                                    for (int i = 0; i < playersCount; i++)
                                    {
                                        Token playerName = getNextToken();
                                        if (playerName is StringToken)
                                        {
                                            PlayerDef.__setPlayerNameDontUseOutsideOfParser(i, ((StringToken)playerName).toStringDef().ToString());
                                        }
                                        else
                                        {
                                            throw new NotImplementedException();
                                        }
                                    }
                                    return(true);
                                }
                            }
                        }
                    }
                }
            }
            throw new NotImplementedException();
        }
示例#21
0
        private void btnNewTrigger_Click(object sender, RoutedEventArgs e)
        {
            Trigger newTrig           = new StarcraftEPDTriggers.Trigger();
            MySelectableListItem item = lstPlayers.CurrentlySelected;

            if (item != null)
            {
                PlayerDef pd = ((object[])item.CustomData)[0] as PlayerDef;
                newTrig.getAffectedPlayers().Add(pd);
            }
            new WndModify(newTrig, Triggers, (Trigger trig) => {
                Triggers.TriggerCreated(trig);
                MySelectableListItem timSel = lstPlayers.CurrentlySelected;
                PlayerDef pd = null;
                if (timSel != null)
                {
                    pd = ((object[])timSel.CustomData)[0] as PlayerDef;
                }
                refershListAndKeepSelection(trig, pd);
                UnsavedChanges = true;
            });
        }
示例#22
0
    private NetworkManager.ServerMessage ReceivePlayersList(byte[] data, int len)
    {
        try {
            /*
             * GAMELIST
             * 4 digits num players registered on the server
             * [ each player in full mode]
             */
            if (len < 4)
            {
                return(null);
            }
            int num = BitConverter.ToInt32(data, 0);

            List <PlayerDef> res = new List <PlayerDef>();
            int pos = 4;
            for (int i = 0; i < num; i++)
            {
                PlayerDef p = new PlayerDef(data, pos);
                res.Add(p);
                pos += p.GetDataLength();
            }
            return(new NetworkManager.ServerMessage {
                type = ServerMessages.PlayersList, playerList = res
            });
        } catch (IOException e) {
            return(new NetworkManager.ServerMessage {
                type = ServerMessages.Error, message = "IOException: " + e.Message, playerList = null
            });;
        } catch (SocketException e) {
            return(new NetworkManager.ServerMessage {
                type = ServerMessages.Error, message = "SocketException: " + e.Message, playerList = null
            });;
        } catch (Exception e) {
            return(new NetworkManager.ServerMessage {
                type = ServerMessages.Error, message = "Exception: " + e.Message, playerList = null
            });;
        }
    }
示例#23
0
        private void updateLists()
        {
            lstPlayers.Clear();
            List <MySelectableListItem> pls = new List <MySelectableListItem>();

            foreach (KeyValuePair <PlayerDef, List <Trigger> > subList in Triggers.TriggerData)
            {
                PlayerDef      key   = subList.Key;
                List <Trigger> value = subList.Value;
                if (value.Count > 0)   // Category not empty
                {
                    Label lbl = new Label();
                    lbl.Content = key.ToString();
                    pls.Add(new MySelectableListItem(new object[] { key, lbl }, lbl));
                }
            }
            pls.Sort((MySelectableListItem item1, MySelectableListItem item2) => String.Compare(item1.ToString(), item2.ToString()));
            foreach (MySelectableListItem item in pls)
            {
                lstPlayers.Add(item);
            }
            //File.WriteAllText("gen.txt", getSaveString());
        }
示例#24
0
        private void refershListAndKeepSelection()
        {
            MySelectableListItem selectedTrigger = lstTriggers.CurrentlySelected;
            MySelectableListItem selectedPlayer  = lstPlayers.CurrentlySelected;

            if (selectedTrigger != null)
            {
                Trigger   trigDef = ((object[])selectedTrigger.CustomData)[1] as Trigger;
                PlayerDef pselPld = null;
                if (selectedPlayer == null)
                {
                    if (trigDef.getAffectedPlayers().Count == 0)
                    {
                        updateLists();
                        lstTriggers.Clear();
                        return;
                    }
                    pselPld = trigDef.getAffectedPlayers()[0];
                }
                else
                {
                    pselPld = ((object[])selectedPlayer.CustomData)[0] as PlayerDef;
                }
                refershListAndKeepSelection(trigDef, pselPld);
            }
            else                            // No selected trigger
            {
                if (selectedPlayer == null) // No selected player
                {
                    updateLists();
                    lstTriggers.Clear();
                    return;
                }
                PlayerDef pselPld = ((object[])selectedPlayer.CustomData)[0] as PlayerDef;
                refershListAndKeepSelection(null, pselPld);
            }
        }
示例#25
0
    public Game(string name, Player player, int difficulty, int numplayers, int numais)
    {
        Name         = name;
        Creator      = player.def;
        Difficulty   = difficulty;
        NumPlayers   = numplayers;
        NumAIs       = numais;
        NumJoined    = 1;
        Winner       = new PlayerDef();
        Status       = GameStatus.Waiting;
        CreationTime = DateTime.Now;
        nump         = 1;
        Players      = new PlayerDef[6];
        Players[0]   = player.def;
        while (NumPlayers + NumAIs > 6)
        {
            NumAIs--;
        }

        byte[] ID = new byte[8];
        byte[] d  = System.Text.Encoding.UTF8.GetBytes(Name);
        for (int i = 0; i < d.Length; i++)
        {
            ID[i % 8] = (byte)(ID[i % 8] ^ d[i]);
        }
        ID[0] = (byte)(ID[0] ^ NumPlayers);
        ID[1] = (byte)(ID[1] ^ NumAIs);
        ID[2] = (byte)(ID[2] ^ Difficulty);

        d = BitConverter.GetBytes(CreationTime.Ticks);
        for (int i = 0; i < d.Length; i++)
        {
            ID[i % 8] = (byte)(ID[i % 8] ^ d[i]);
        }

        id = BitConverter.ToUInt64(ID, 0);
    }
示例#26
0
        private Condition GetCondition(CommandToken ct)
        {
            int position = ct.getPosition();

            if (ct.isAccumulate())
            {
                return(new ConditionAccumulate(this));
            }
            else if (ct.isAlways())
            {
                return(new ConditionAlways(this));
            }
            else if (ct.isBring())
            {
                return(new ConditionBring(this));
            }
            else if (ct.isCommand())
            {
                return(new ConditionCommand(this));
            }
            else if (ct.isCommandTheLeast())
            {
                return(new ConditionCommandTheLeast(this));
            }
            else if (ct.isCommandTheLeastAt())
            {
                return(new ConditionCommandTheLeastAt(this));
            }
            else if (ct.isCommandTheMost())
            {
                return(new ConditionCommandTheMost(this));
            }
            else if (ct.isCommandsTheMostAt())
            {
                return(new ConditionCommandsTheMostAt(this));
            }
            else if (ct.isCountdownTimer())
            {
                return(new ConditionCountdownTimer(this));
            }
            else if (ct.isDeaths())
            {
                ConditionDeaths d      = new ConditionDeaths(this);
                UnitVanillaDef  unit   = d.getUnitDef();
                PlayerDef       player = d.getPlayerDef();
                IntDef          amount = d.getAmount();
                Quantifier      q      = d.getQuantifier();
                if (unit.getIndex() > unit.getMaxValue())   // EUD Condition
                {
                    int pid  = player.getIndex();
                    int uid  = unit.getIndex();
                    int oid  = amount.getIndex();
                    int addr = (uid * 12) + pid;

                    ConditionMemory cm   = new ConditionMemory(new DummyParser(new Token[] { new LeftBracket(position), new NumToken(addr.ToString(), position), new Comma(position), new CommandToken(q.ToString(), position), new Comma(position), new NumToken(oid.ToString(), position), new RightBracket(position) }));
                    EPDCondition    cond = EPDCondition.get(cm);
                    if (cond != null)
                    {
                        return(cond);
                    }

                    return(cm);
                }

                return(d);
            }
            else if (ct.isElapsedTime())
            {
                return(new ConditionElapsedTime(this));
            }
            else if (ct.isHighestScore())
            {
                return(new ConditionHighestScore(this));
            }
            else if (ct.isKill())
            {
                return(new ConditionKill(this));
            }
            else if (ct.isLeastKills())
            {
                return(new ConditionLeastKills(this));
            }
            else if (ct.isLeastResources())
            {
                return(new ConditionLeastResources(this));
            }
            else if (ct.isLowestScore())
            {
                return(new ConditionLowestScore(this));
            }
            else if (ct.isMostKills())
            {
                return(new ConditionMostKills(this));
            }
            else if (ct.isMostResources())
            {
                return(new ConditionMostResources(this));
            }
            else if (ct.isNever())
            {
                return(new ConditionNever(this));
            }
            else if (ct.isOpponents())
            {
                return(new ConditionOpponents(this));
            }
            else if (ct.isScore())
            {
                return(new ConditionScore(this));
            }
            else if (ct.isSwitch())
            {
                return(new ConditionSwitch(this));
            }
            else if (ct.isMemory())
            {
                ConditionMemory cm   = new ConditionMemory(this);
                EPDCondition    cond = EPDCondition.get(cm);
                if (cond != null)
                {
                    return(cond);
                }
                return(cm);
            }
            else if (ct.isCustom())
            {
                return(new ConditionCustom(this));
            }
            throw new NotImplementedException();
        }
示例#27
0
 public Player(PlayerDef playerDef)
 {
     def = playerDef;
     BaseInit();
 }
示例#28
0
 internal void Init(Enemy enemy, Player p)
 {
     refEnemy = enemy;
     def      = new PlayerDef(p.def.id, p.def.name, p.def.avatar);
     BaseInit();
 }
示例#29
0
 void Awake()
 {
     instance = this;
 }
示例#30
0
    /// <summary>
    /// 仅添加数据
    /// </summary>
    public void AddPlayerLogic(PlayerDef def)
    {
        CharacterLogic logic = new CharacterLogic(def);

        players.PlayersLogic.Add(logic);
    }