Example #1
0
 internal void SetSpeakerArrow(int?x = null, SpeakerArrowSide side = SpeakerArrowSide.Bottom)
 {
     if (x != null)
     {
         SpeakerArrowPos = (x / 8) * 8;
     }
     else
     {
         SpeakerArrowPos = x;
     }
     ArrowSide = side;
 }
Example #2
0
        private void set_speaker(int id, int width, Maybe <int> speaker_loc_x, string name)
        {
            this.width = width;

            Speaker = id;
            int x = 0;

            // If an onscreen normal speaker
            if (speaker_loc_x.IsSomething)
            {
                x             = (int)speaker_loc_x + 20;
                draw_offset.Y = 0;
            }
            // Else a special case speaker
            else
            {
                // Offscreen right
                if (Speaker == Face_Sprite_Data.FACE_COUNT + 1)
                {
                    x             = Config.WINDOW_WIDTH - (Width + OFFSCREEN_GUTTER);
                    draw_offset.Y = OFFSCREEN_OFFSET;
                }
                else
                {
                    switch (Speaker)
                    {
                    // Background
                    case Window_Message.CENTER_TOP_SPEAKER:
                        x             = Config.WINDOW_WIDTH / 2;
                        draw_offset.Y = BACKGROUND_OFFSET;
                        break;

                    // CG Voiceover
                    case Window_Message.CG_VOICEOVER_SPEAKER:
                        x             = Config.WINDOW_WIDTH / 2;
                        draw_offset.Y = CG_OFFSET;
                        break;

                    // No speaker
                    case Window_Message.NO_SPEAKER:
                        x = Config.WINDOW_WIDTH * 2;
                        break;

                    // Offscreen left
                    case 0:
                        x             = OFFSCREEN_GUTTER;
                        draw_offset.Y = OFFSCREEN_OFFSET;
                        break;
                    }
                }
            }
            int window_x, speaker_x;

            // If offscreen speaker
            if (Speaker == 0 || Speaker == Face_Sprite_Data.FACE_COUNT + 1)
            {
                window_x = x;
                if (Speaker == 0)
                {
                    speaker_x = 8;
                }
                else
                {
                    speaker_x = Width - 24;
                }
            }
            else
            {
                if (Speaker > Face_Sprite_Data.FACE_COUNT / 2)
                {
                    x -= 56;
                }
                window_x = (x + 8) - Width / 2;
                if (Speaker > 0 && Speaker <= Face_Sprite_Data.FACE_COUNT)
                {
                    if (Speaker <= Face_Sprite_Data.FACE_COUNT / 2)
                    {
                        window_x = Math.Max(window_x, GUTTERS);
                    }
                    else
                    {
                        window_x = Math.Min(window_x, Config.WINDOW_WIDTH - (Width + GUTTERS));
                    }
                }
                speaker_x = x - window_x;
            }
            Loc.X       = window_x;
            Text_Rect.X = window_x + 8;
            //x -= window_x; //Debug
            if (Speaker >= 0 && Speaker <= Face_Sprite_Data.FACE_COUNT + 1)
            {
                SpeakerArrowPos = speaker_x / 8 * 8;
            }
            else
            {
                SpeakerArrowPos = null;
            }
            ArrowSide = SpeakerArrowSide.Bottom;

            opacity = 0;
            set_speaker_name(name);
        }