예제 #1
0
        private void characterList_DrawItem(ObjectListControl sender, DrawItemEventArgs e)
        {
            Character thisCharacter = (Character)characterList.Items[e.Index];

            Rectangle characterFrame;

            if (characterList.Selected[e.Index])
            {
                sender.DrawLineItemHighlight(Color.AliceBlue, e.Bounds);

                characterFrame = thisCharacter.GetAnimatedSpriteFrame(SpriteDirection.Front);
            }
            else
            {
                characterFrame = thisCharacter.GetSpriteFrame(SpriteDirection.Front);
            }

            e.SpriteBatch.Draw(screenHandler.CharacterSpriteTexture,
                               new Rectangle(e.Bounds.Left + 4, e.Bounds.Top + e.Bounds.Height / 2 - characterFrame.Height / 2, characterFrame.Width, characterFrame.Height),
                               characterFrame, Color.White);


            e.SpriteBatch.DrawString(characterList.Font, thisCharacter.Name, new Vector2(e.Bounds.Left + 40, e.Bounds.Top + e.Bounds.Height / 2 - 16), Color.Black,
                                     0, Vector2.Zero, 1.0f, SpriteEffects.None, 0.5f);

            e.SpriteBatch.DrawString(characterList.Font, "HP:" + thisCharacter.HP + " / " + thisCharacter.MaxHP, new Vector2(e.Bounds.Left + 200, e.Bounds.Top + 4), Color.Black,
                                     0, Vector2.Zero, 1.0f, SpriteEffects.None, 0.5f);

            thisCharacter.HP = thisCharacter.MaxHP / 2;

            sender.DrawRect(Color.DarkRed, new Rectangle(e.Bounds.Left + 200, e.Bounds.Top + 4 + 30, 200, 20), Color.Black);
            sender.DrawRect(Color.Red, new Rectangle(e.Bounds.Left + 201, e.Bounds.Top + 4 + 30 + 1, (int)(198.0f * ((float)thisCharacter.HP / thisCharacter.MaxHP)), 19));

            e.SpriteBatch.DrawString(characterList.Font, "Level:" + thisCharacter.Level, new Vector2(e.Bounds.Left + 200, e.Bounds.Top + 4 + 50), Color.Black,
                                     0, Vector2.Zero, 1.0f, SpriteEffects.None, 0.5f);

            thisCharacter.Experience = thisCharacter.ExpToNextLevel / 3;

            sender.DrawRect(Color.DarkGreen, new Rectangle(e.Bounds.Left + 200, e.Bounds.Top + 4 + 80, 200, 20), Color.Black);
            sender.DrawRect(Color.Green, new Rectangle(e.Bounds.Left + 201, e.Bounds.Top + 4 + 80 + 1, (int)(198.0f * ((float)thisCharacter.Experience / thisCharacter.ExpToNextLevel)), 19));
        }