void Controller::SetState(long state) { state_ = state; stringstream msg; Illuminate(); // Set timer for the Busy signal changedTime_ = GetCurrentMMTime(); }
void CMine::AutoAdjustLight (double fLightScale, bool bAll, bool bCopyTexLights) { int segnum; int texture_num; int sidenum; UINT32 brightness; CDSegment *seg; CDSide *side; // clear all lighting on marked cubes theApp.SetModified (TRUE); theApp.LockUndo (); if (bAll) memset (VertexColors (), 0, sizeof (MineData ().vertexColors)); for (segnum = SegCount (), seg = Segments (); segnum; segnum--, seg++) if (bAll || (seg->wall_bitmask & MARKED_MASK)) for (sidenum=0, side = seg->sides;sidenum < MAX_SIDES_PER_SEGMENT; sidenum++, side++) { int i; for (i = 0; i < 4; i++) { side->uvls [i].l = 0; if (!bAll) memset (VertexColors (seg->verts [side_vert [sidenum][i]]), 0, sizeof (CDColor)); } } // Calculate cube side corner light values // for each marked side in the level // (range: 0 = min, 0x8000 = max) for (segnum = 0, seg = Segments (); segnum < SegCount (); segnum++, seg++) { for (sidenum = 0, side = seg->sides; sidenum < 6; sidenum++, side++) { if (!(bAll || SideIsMarked (segnum, sidenum))) continue; if ((seg->children [sidenum] >= 0) && !VisibleWall (side->nWall)) continue; if (bCopyTexLights) memset (LightColor (segnum, sidenum, false), 0, sizeof (CDColor)); brightness = 0; texture_num = side->nBaseTex; if ((texture_num >= 0) && (texture_num < MAX_TEXTURES)) brightness = max (brightness, LightWeight (texture_num)); texture_num = side->nOvlTex & 0x3fff; if ((texture_num > 0) && (texture_num < MAX_TEXTURES)) brightness = max (brightness, LightWeight (texture_num)); if (brightness > 0) Illuminate (segnum, sidenum, (UINT32) (brightness * 2 * fLightScale), 1.0, bAll, bCopyTexLights); } } theApp.UnlockUndo (); }
void Controller::SetTrigger() { stringstream msg; msg << "SQX" << carriage_return; for (unsigned i=0;i<triggerSequence_.size();i++) { msg << "SQ" << triggerSequence_[i] << carriage_return; } triggerMessage_ = msg.str(); Illuminate(); }
void DrawEntireMenuScreen(void) { /***** Frankly, I don't care which menu. *****/ int a; DrawMenuBackdrop(); a=0; while (CurrentMenuStatus[a]!=-1) { if (CurrentMenuStatus[a]!=0) { Illuminate(a); } else { DeIlluminate(a); } a++; } UpdateScreen[VideoMode](); /* KJL 15:52:41 03/20/97 - hack from intro that's ended up here */ { // fade in if (WhiteOutLevel==0) { int fadeLevel = 0; do { ResetFrameCounter(); FadePaletteToWhite(TestPalette,fadeLevel); fadeLevel+=NormalFrameTime*4; FrameCounterHandler(); } while(fadeLevel<65536); ChangePalette(TestPalette); WhiteOutLevel=65536; } } }
void TerrainPatch::Render(Video* video, DWORD flags) { if (max_height < 0) return; if (flags & RENDER_ADDITIVE) return; if (!model) model = detail_levels[0]; if (scene) { /*** *** TWO PASS LIGHTING FOR TERRAIN SHADOWS DOESN'T *** WORK - IT MESSES UP THE HARDWARE FOG CALCS *** *** PLUS, IT'S INCREDIBLY SLOW!!! ***/ if ((flags & RENDER_ADD_LIGHT) != 0) return; if (water) { UpdateSurfaceWaves(Vec3(0,0,0)); Illuminate(scene->Ambient(), scene->Lights()); } else { Illuminate(scene->Ambient(), scene->Lights()); } } else { if ((flags & RENDER_ADD_LIGHT) != 0) return; } Bitmap* details[16]; ZeroMemory(details, sizeof(details)); if (ndetail < 3) { for (int i = 0; i < 16 && i < materials.size(); i++) { Material* mtl = materials[i]; if (mtl->tex_detail) { details[i] = mtl->tex_detail; mtl->tex_detail = 0; } } } double visibility = terrain->GetRegion()->GetWeather().Visibility(); FLOAT fog_density = (FLOAT) (terrain->GetRegion()->FogDensity() * 2.5e-5 * 1/visibility); video->SetRenderState(Video::LIGHTING_ENABLE, false); video->SetRenderState(Video::SPECULAR_ENABLE, false); //water != 0); video->SetRenderState(Video::FOG_ENABLE, true); video->SetRenderState(Video::FOG_COLOR, terrain->GetRegion()->FogColor().Value()); video->SetRenderState(Video::FOG_DENSITY, *((DWORD*) &fog_density)); // Too bad this doesn't work right. But it makes the // ground mostly disappear. :-( // //video->SetRenderState(Video::Z_BIAS, -2); Solid::Render(video, flags); video->SetRenderState(Video::LIGHTING_ENABLE, true); video->SetRenderState(Video::SPECULAR_ENABLE, true); video->SetRenderState(Video::FOG_ENABLE, false); //video->SetRenderState(Video::Z_BIAS, 0); if (ndetail < 3) { for (int i = 0; i < 16 && i < materials.size(); i++) { Material* mtl = materials[i]; if (details[i] && !mtl->tex_detail) { mtl->tex_detail = details[i]; } } } }