void Object::SetDescribe(AString *s) { if (CanModify()) { if (describe) delete describe; if (s) { AString *newname = s->getlegal(); delete s; describe = newname; } else describe = 0; } }
void Object::SetName(AString *s) { if (s && (CanModify())) { AString *newname = s->getlegal(); if (!newname) { delete s; return; } delete s; delete name; *newname += AString(" [") + num + "]"; name = newname; } }
static AstExpression CheckAssignmentExpression(AstExpression expr) { int ops[] = { OP_BITOR, OP_BITXOR, OP_BITAND, OP_LSHIFT, OP_RSHIFT, OP_ADD, OP_SUB, OP_MUL, OP_DIV, OP_MOD }; Type ty; expr->kids[0] = Adjust(CheckExpression(expr->kids[0]), 0); expr->kids[1] = Adjust(CheckExpression(expr->kids[1]), 1); if (! CanModify(expr->kids[0])) { Error(&expr->coord, "The left operand cannot be modified"); } if (expr->op != OP_ASSIGN) { AstExpression lopr; CREATE_AST_NODE(lopr, Expression); lopr->coord = expr->coord; lopr->op = ops[expr->op - OP_BITOR_ASSIGN]; lopr->kids[0] = expr->kids[0]; lopr->kids[1] = expr->kids[1]; expr->kids[1] = (*BinaryOPCheckers[lopr->op - OP_OR])(lopr); } ty = expr->kids[0]->ty; if (! CanAssign(ty, expr->kids[1])) { Error(&expr->coord, "Wrong assignment"); } else { expr->kids[1] = Cast(ty, expr->kids[1]); } expr->ty = ty; return expr; }
//------------------------------------------------------------------------- bool CWeapon::OnActionModify(EntityId actorId, const ActionId& actionId, int activationMode, float value) { if (IsZoomed() || IsZoomingInOrOut()) return false; if (CanModify() && ((!IsReloading() && !IsBusy()) || AreAnyItemFlagsSet(eIF_Modifying))) { if (m_fm) m_fm->StopFire(); if (AreAnyItemFlagsSet(eIF_Modifying)) { m_enterModifyAction = 0; PlayAction(GetFragmentIds().leave_modify, 0); s_dofSpeed = fres(-g_pGameCVars->i_weapon_customisation_transition_time); s_dofValue = 1.0f; s_focusValue = -1.0f; GetScheduler()->TimerAction(g_pGameCVars->i_weapon_customisation_transition_time, CSchedulerAction<ScheduleLayer_Leave>::Create(this), false); SetItemFlags( eIF_Transitioning ); ClearItemFlags( eIF_Modifying ); GetGameObject()->InvokeRMI(CItem::SvRequestLeaveModify(), CItem::EmptyParams(), eRMI_ToServer); } else { gEnv->p3DEngine->SetPostEffectParam("Dof_Active", 1.0f); gEnv->p3DEngine->SetPostEffectParam("Dof_UseMask", 0.f); gEnv->p3DEngine->SetPostEffectParam("Dof_FocusRange", -1.f); gEnv->p3DEngine->SetPostEffectParam("Dof_FocusMin", 0.5f); gEnv->p3DEngine->SetPostEffectParam("Dof_FocusMax", 1.0f); gEnv->p3DEngine->SetPostEffectParam("Dof_FocusLimit", 1.5f); gEnv->p3DEngine->SetPostEffectParam("Dof_FocusMinZ", 0.0f); gEnv->p3DEngine->SetPostEffectParam("Dof_FocusMinZScale", 0.0f); m_itemLowerMode = eILM_Raised; TagState tagState = TAG_STATE_EMPTY; m_enterModifyAction = new CItemAction(PP_PlayerAction, GetFragmentIds().enter_modify, tagState); PlayFragment(m_enterModifyAction); s_dofSpeed = fres(g_pGameCVars->i_weapon_customisation_transition_time); s_dofValue = 0.0f; SetItemFlags(eIF_Transitioning); GetScheduler()->TimerAction(g_pGameCVars->i_weapon_customisation_transition_time, CSchedulerAction<ScheduleLayer_Enter>::Create(this), false); SetItemFlags(eIF_Modifying); CPlayer *pPlayer = static_cast<CPlayer*>(GetOwnerActor()); if (pPlayer) { SPlayerStats *pStats = static_cast<SPlayerStats*>(pPlayer->GetActorStats()); assert(pStats); pStats->bIgnoreSprinting = true; } GetGameObject()->InvokeRMI(CItem::SvRequestEnterModify(), CItem::EmptyParams(), eRMI_ToServer); } } return true; }